html_tags/
lib.rs

1// generated by gen.rs + rustfmt - not in a build.rs because HTML tags don't change too often
2//! An auto-generated crate containing all HTML tags and their attributes.
3//! This crate is generated from the [MDN HTML element reference](https://developer.mozilla.org/en-US/docs/Web/HTML/Element).
4//!
5//! The `<element>Owned` variants are the same as the `<element>` variants, but without lifetimes.
6
7#![no_std]
8#[cfg(feature = "alloc")]
9extern crate alloc;
10
11#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
12pub enum AttributeValue<'life> {
13    Str(&'life str),
14    Bool(bool),
15}
16impl<'life> core::convert::From<&'life str> for AttributeValue<'life> {
17    fn from(s: &'life str) -> Self {
18        AttributeValue::Str(s)
19    }
20}
21impl<'life> core::convert::From<bool> for AttributeValue<'life> {
22    fn from(b: bool) -> Self {
23        AttributeValue::Bool(b)
24    }
25}
26
27#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
28#[cfg(feature = "alloc")]
29pub enum AttributeValueOwned {
30    #[cfg(not(feature = "tendril"))]
31    Str(alloc::string::String),
32    #[cfg(feature = "tendril")]
33    Str(tendril::Tendril<tendril::fmt::UTF8>),
34    Bool(bool),
35}
36#[cfg(all(feature = "alloc", not(feature = "tendril")))]
37impl core::convert::From<alloc::string::String> for AttributeValueOwned {
38    fn from(s: alloc::string::String) -> Self {
39        AttributeValueOwned::Str(s)
40    }
41}
42#[cfg(all(feature = "alloc", feature = "tendril"))]
43impl core::convert::From<tendril::Tendril<tendril::fmt::UTF8>> for AttributeValueOwned {
44    fn from(s: tendril::Tendril<tendril::fmt::UTF8>) -> Self {
45        AttributeValueOwned::Str(s)
46    }
47}
48#[cfg(feature = "alloc")]
49impl core::convert::From<bool> for AttributeValueOwned {
50    fn from(b: bool) -> Self {
51        AttributeValueOwned::Bool(b)
52    }
53}
54/// The <strong><code>&lt;html&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents the root (top-level element) of an HTML document, so it is also referred to as the <em>root element</em>. All other elements must be descendants of this element.
55///
56/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/html>
57
58#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
59pub struct Html<'life> {
60    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
61    ///   
62    pub accesskey: core::option::Option<AttributeValue<'life>>,
63    ///
64    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
65    ///     <ul>
66    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
67    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
68    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
69    ///       <li><code>characters</code>, all letters should default to uppercase</li>
70    ///     </ul>
71    ///   
72    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
73    ///
74    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
75    ///   
76    pub autofocus: core::option::Option<AttributeValue<'life>>,
77    ///
78    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
79    ///   
80    pub class: core::option::Option<AttributeValue<'life>>,
81    ///
82    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
83    ///     <ul>
84    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
85    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
86    ///     </ul>
87    ///   
88    pub contenteditable: core::option::Option<AttributeValue<'life>>,
89    ///
90    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
91    ///   
92    pub contextmenu: core::option::Option<AttributeValue<'life>>,
93    ///
94    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
95    ///   
96    #[cfg(feature = "alloc")]
97    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
98    ///
99    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
100    ///     <ul>
101    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
102    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
103    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
104    ///     </ul>
105    ///   
106    pub dir: core::option::Option<AttributeValue<'life>>,
107    ///
108    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
109    ///     <ul>
110    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
111    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
112    ///     </ul>
113    ///   
114    pub draggable: core::option::Option<AttributeValue<'life>>,
115    ///
116    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
117    ///   
118    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
119    ///
120    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
121    ///   
122    pub exportparts: core::option::Option<AttributeValue<'life>>,
123    /// /// Extra attributes of the element.
124
125    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
126    #[cfg(feature = "alloc")]
127    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
128    ///
129    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
130    ///   
131    pub hidden: core::option::Option<AttributeValue<'life>>,
132    ///
133    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
134    ///   
135    pub id: core::option::Option<AttributeValue<'life>>,
136    ///
137    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
138    ///   
139    pub inert: core::option::Option<AttributeValue<'life>>,
140    ///
141    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
142    ///   
143    pub inputmode: core::option::Option<AttributeValue<'life>>,
144    ///
145    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
146    ///   
147    pub is: core::option::Option<AttributeValue<'life>>,
148    ///
149    ///     <p>The unique, global identifier of an item.</p>
150    ///   
151    pub itemid: core::option::Option<AttributeValue<'life>>,
152    ///
153    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
154    ///   
155    pub itemprop: core::option::Option<AttributeValue<'life>>,
156    ///
157    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
158    ///   
159    pub itemref: core::option::Option<AttributeValue<'life>>,
160    ///
161    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
162    ///   
163    pub itemscope: core::option::Option<AttributeValue<'life>>,
164    ///
165    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
166    ///   
167    pub itemtype: core::option::Option<AttributeValue<'life>>,
168    ///
169    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
170    ///   
171    pub lang: core::option::Option<AttributeValue<'life>>,
172    ///
173    ///     <p>Specifies the <a href="/en-US/docs/Glossary/URI">URI</a> of a resource manifest indicating resources that should be cached locally.</p>
174    ///   
175    pub manifest: core::option::Option<AttributeValue<'life>>,
176    ///
177    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
178    ///   
179    pub nonce: core::option::Option<AttributeValue<'life>>,
180    ///
181    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
182    ///   
183    pub part: core::option::Option<AttributeValue<'life>>,
184    ///
185    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
186    ///   
187    pub popover: core::option::Option<AttributeValue<'life>>,
188    ///
189    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
190    ///   
191    pub role: core::option::Option<AttributeValue<'life>>,
192    ///
193    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
194    ///   
195    pub slot: core::option::Option<AttributeValue<'life>>,
196    ///
197    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
198    ///     <ul>
199    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
200    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
201    ///     </ul>
202    ///   
203    pub spellcheck: core::option::Option<AttributeValue<'life>>,
204    ///
205    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
206    ///   
207    pub style: core::option::Option<AttributeValue<'life>>,
208    ///
209    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
210    ///     <ul>
211    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
212    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
213    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
214    ///     </ul>
215    ///   
216    pub tabindex: core::option::Option<AttributeValue<'life>>,
217    ///
218    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
219    ///   
220    pub title: core::option::Option<AttributeValue<'life>>,
221    ///
222    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
223    ///     <ul>
224    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
225    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
226    ///     </ul>
227    ///   
228    pub translate: core::option::Option<AttributeValue<'life>>,
229    ///
230    ///     <p>Specifies the version of the HTML <a href="/en-US/docs/Glossary/Doctype">Document Type Definition</a> that governs the current document. This attribute is not needed, because it is redundant with the version information in the document type declaration.</p>
231    ///   
232    pub version: core::option::Option<AttributeValue<'life>>,
233    ///
234    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
235    ///     <ul>
236    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
237    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
238    ///     </ul>
239    ///   
240    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
241    ///
242    ///     <p>Specifies the <a href="/en-US/docs/Glossary/XML">XML</a> <a href="/en-US/docs/Glossary/Namespace">Namespace</a> of the document. Default value is <code>"http://www.w3.org/1999/xhtml"</code>. This is required in documents parsed with XML <a href="/en-US/docs/Glossary/Parser">parsers</a>, and optional in text/html documents.</p>
243    ///   
244    pub xmlns: core::option::Option<AttributeValue<'life>>,
245}
246#[allow(deprecated)]
247
248impl<'life> Html<'life> {
249    /// Get the tag name of the element.
250    /// This is the same as the name of the struct, in kebab-case.
251    pub fn tag() -> &'static str {
252        "html"
253    }
254    /// Sets an attribute of the element.
255    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
256    /// If the `alloc` feature is disabled, this function will silently fail.
257    ///
258    /// # Note
259    /// This only works when the attribute is lowercase.
260    pub fn set_attr(
261        &mut self,
262        name: &'life str,
263        value: impl core::convert::Into<AttributeValue<'life>>,
264    ) {
265        match name {
266            "accesskey" => self.accesskey = Some(value.into()),
267            "autocapitalize" => self.autocapitalize = Some(value.into()),
268            "autofocus" => self.autofocus = Some(value.into()),
269            "class" => self.class = Some(value.into()),
270            "contenteditable" => self.contenteditable = Some(value.into()),
271            "contextmenu" => self.contextmenu = Some(value.into()),
272            "dir" => self.dir = Some(value.into()),
273            "draggable" => self.draggable = Some(value.into()),
274            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
275            "exportparts" => self.exportparts = Some(value.into()),
276            "hidden" => self.hidden = Some(value.into()),
277            "id" => self.id = Some(value.into()),
278            "inert" => self.inert = Some(value.into()),
279            "inputmode" => self.inputmode = Some(value.into()),
280            "is" => self.is = Some(value.into()),
281            "itemid" => self.itemid = Some(value.into()),
282            "itemprop" => self.itemprop = Some(value.into()),
283            "itemref" => self.itemref = Some(value.into()),
284            "itemscope" => self.itemscope = Some(value.into()),
285            "itemtype" => self.itemtype = Some(value.into()),
286            "lang" => self.lang = Some(value.into()),
287            "manifest" => self.manifest = Some(value.into()),
288            "nonce" => self.nonce = Some(value.into()),
289            "part" => self.part = Some(value.into()),
290            "popover" => self.popover = Some(value.into()),
291            "role" => self.role = Some(value.into()),
292            "slot" => self.slot = Some(value.into()),
293            "spellcheck" => self.spellcheck = Some(value.into()),
294            "style" => self.style = Some(value.into()),
295            "tabindex" => self.tabindex = Some(value.into()),
296            "title" => self.title = Some(value.into()),
297            "translate" => self.translate = Some(value.into()),
298            "version" => self.version = Some(value.into()),
299            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
300            "xmlns" => self.xmlns = Some(value.into()),
301            #[cfg(feature = "alloc")]
302            _ => {
303                #[allow(clippy::useless_conversion)]
304                self.extra.insert(name.into(), value.into());
305            }
306            #[cfg(not(feature = "alloc"))]
307            _ => {}
308        }
309    }
310}
311/// The <strong><code>&lt;html&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents the root (top-level element) of an HTML document, so it is also referred to as the <em>root element</em>. All other elements must be descendants of this element.
312///
313/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/html>
314
315#[cfg(feature = "alloc")]
316#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
317pub struct HtmlOwned {
318    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
319    ///   
320    pub accesskey: core::option::Option<AttributeValueOwned>,
321    ///
322    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
323    ///     <ul>
324    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
325    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
326    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
327    ///       <li><code>characters</code>, all letters should default to uppercase</li>
328    ///     </ul>
329    ///   
330    pub autocapitalize: core::option::Option<AttributeValueOwned>,
331    ///
332    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
333    ///   
334    pub autofocus: core::option::Option<AttributeValueOwned>,
335    ///
336    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
337    ///   
338    pub class: core::option::Option<AttributeValueOwned>,
339    ///
340    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
341    ///     <ul>
342    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
343    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
344    ///     </ul>
345    ///   
346    pub contenteditable: core::option::Option<AttributeValueOwned>,
347    ///
348    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
349    ///   
350    pub contextmenu: core::option::Option<AttributeValueOwned>,
351    ///
352    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
353    ///   
354    #[cfg(feature = "alloc")]
355    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
356    ///
357    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
358    ///     <ul>
359    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
360    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
361    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
362    ///     </ul>
363    ///   
364    pub dir: core::option::Option<AttributeValueOwned>,
365    ///
366    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
367    ///     <ul>
368    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
369    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
370    ///     </ul>
371    ///   
372    pub draggable: core::option::Option<AttributeValueOwned>,
373    ///
374    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
375    ///   
376    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
377    ///
378    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
379    ///   
380    pub exportparts: core::option::Option<AttributeValueOwned>,
381    /// /// Extra attributes of the element.
382
383    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
384    #[cfg(feature = "alloc")]
385    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
386    ///
387    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
388    ///   
389    pub hidden: core::option::Option<AttributeValueOwned>,
390    ///
391    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
392    ///   
393    pub id: core::option::Option<AttributeValueOwned>,
394    ///
395    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
396    ///   
397    pub inert: core::option::Option<AttributeValueOwned>,
398    ///
399    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
400    ///   
401    pub inputmode: core::option::Option<AttributeValueOwned>,
402    ///
403    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
404    ///   
405    pub is: core::option::Option<AttributeValueOwned>,
406    ///
407    ///     <p>The unique, global identifier of an item.</p>
408    ///   
409    pub itemid: core::option::Option<AttributeValueOwned>,
410    ///
411    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
412    ///   
413    pub itemprop: core::option::Option<AttributeValueOwned>,
414    ///
415    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
416    ///   
417    pub itemref: core::option::Option<AttributeValueOwned>,
418    ///
419    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
420    ///   
421    pub itemscope: core::option::Option<AttributeValueOwned>,
422    ///
423    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
424    ///   
425    pub itemtype: core::option::Option<AttributeValueOwned>,
426    ///
427    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
428    ///   
429    pub lang: core::option::Option<AttributeValueOwned>,
430    ///
431    ///     <p>Specifies the <a href="/en-US/docs/Glossary/URI">URI</a> of a resource manifest indicating resources that should be cached locally.</p>
432    ///   
433    pub manifest: core::option::Option<AttributeValueOwned>,
434    ///
435    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
436    ///   
437    pub nonce: core::option::Option<AttributeValueOwned>,
438    ///
439    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
440    ///   
441    pub part: core::option::Option<AttributeValueOwned>,
442    ///
443    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
444    ///   
445    pub popover: core::option::Option<AttributeValueOwned>,
446    ///
447    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
448    ///   
449    pub role: core::option::Option<AttributeValueOwned>,
450    ///
451    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
452    ///   
453    pub slot: core::option::Option<AttributeValueOwned>,
454    ///
455    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
456    ///     <ul>
457    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
458    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
459    ///     </ul>
460    ///   
461    pub spellcheck: core::option::Option<AttributeValueOwned>,
462    ///
463    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
464    ///   
465    pub style: core::option::Option<AttributeValueOwned>,
466    ///
467    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
468    ///     <ul>
469    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
470    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
471    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
472    ///     </ul>
473    ///   
474    pub tabindex: core::option::Option<AttributeValueOwned>,
475    ///
476    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
477    ///   
478    pub title: core::option::Option<AttributeValueOwned>,
479    ///
480    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
481    ///     <ul>
482    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
483    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
484    ///     </ul>
485    ///   
486    pub translate: core::option::Option<AttributeValueOwned>,
487    ///
488    ///     <p>Specifies the version of the HTML <a href="/en-US/docs/Glossary/Doctype">Document Type Definition</a> that governs the current document. This attribute is not needed, because it is redundant with the version information in the document type declaration.</p>
489    ///   
490    pub version: core::option::Option<AttributeValueOwned>,
491    ///
492    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
493    ///     <ul>
494    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
495    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
496    ///     </ul>
497    ///   
498    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
499    ///
500    ///     <p>Specifies the <a href="/en-US/docs/Glossary/XML">XML</a> <a href="/en-US/docs/Glossary/Namespace">Namespace</a> of the document. Default value is <code>"http://www.w3.org/1999/xhtml"</code>. This is required in documents parsed with XML <a href="/en-US/docs/Glossary/Parser">parsers</a>, and optional in text/html documents.</p>
501    ///   
502    pub xmlns: core::option::Option<AttributeValueOwned>,
503}
504#[allow(deprecated)]
505#[cfg(feature = "alloc")]
506impl HtmlOwned {
507    /// Get the tag name of the element.
508    /// This is the same as the name of the struct, in kebab-case.
509    pub fn tag() -> &'static str {
510        "html"
511    }
512    /// Sets an attribute of the element.
513    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
514    /// If the `alloc` feature is disabled, this function will silently fail.
515    ///
516    /// # Note
517    /// This only works when the attribute is lowercase.
518    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
519        match name {
520            "accesskey" => self.accesskey = Some(value.into()),
521            "autocapitalize" => self.autocapitalize = Some(value.into()),
522            "autofocus" => self.autofocus = Some(value.into()),
523            "class" => self.class = Some(value.into()),
524            "contenteditable" => self.contenteditable = Some(value.into()),
525            "contextmenu" => self.contextmenu = Some(value.into()),
526            "dir" => self.dir = Some(value.into()),
527            "draggable" => self.draggable = Some(value.into()),
528            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
529            "exportparts" => self.exportparts = Some(value.into()),
530            "hidden" => self.hidden = Some(value.into()),
531            "id" => self.id = Some(value.into()),
532            "inert" => self.inert = Some(value.into()),
533            "inputmode" => self.inputmode = Some(value.into()),
534            "is" => self.is = Some(value.into()),
535            "itemid" => self.itemid = Some(value.into()),
536            "itemprop" => self.itemprop = Some(value.into()),
537            "itemref" => self.itemref = Some(value.into()),
538            "itemscope" => self.itemscope = Some(value.into()),
539            "itemtype" => self.itemtype = Some(value.into()),
540            "lang" => self.lang = Some(value.into()),
541            "manifest" => self.manifest = Some(value.into()),
542            "nonce" => self.nonce = Some(value.into()),
543            "part" => self.part = Some(value.into()),
544            "popover" => self.popover = Some(value.into()),
545            "role" => self.role = Some(value.into()),
546            "slot" => self.slot = Some(value.into()),
547            "spellcheck" => self.spellcheck = Some(value.into()),
548            "style" => self.style = Some(value.into()),
549            "tabindex" => self.tabindex = Some(value.into()),
550            "title" => self.title = Some(value.into()),
551            "translate" => self.translate = Some(value.into()),
552            "version" => self.version = Some(value.into()),
553            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
554            "xmlns" => self.xmlns = Some(value.into()),
555            #[cfg(feature = "alloc")]
556            _ => {
557                #[allow(clippy::useless_conversion)]
558                self.extra.insert(name.into(), value.into());
559            }
560            #[cfg(not(feature = "alloc"))]
561            _ => {}
562        }
563    }
564}
565/// The <strong><code>&lt;base&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element specifies the base URL to use for all <em>relative</em> URLs in a document. There can be only one <code>&lt;base&gt;</code> element in a document.
566///
567/// A document's used base URL can be accessed by scripts with <a href="/en-US/docs/Web/API/Node/baseURI"><code>Node.baseURI</code></a>. If the document has no <code>&lt;base&gt;</code> elements, then <code>baseURI</code> defaults to <a href="/en-US/docs/Web/API/Location/href"><code>location.href</code></a>.
568///
569/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/base>
570
571#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
572pub struct Base<'life> {
573    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
574    ///   
575    pub accesskey: core::option::Option<AttributeValue<'life>>,
576    ///
577    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
578    ///     <ul>
579    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
580    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
581    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
582    ///       <li><code>characters</code>, all letters should default to uppercase</li>
583    ///     </ul>
584    ///   
585    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
586    ///
587    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
588    ///   
589    pub autofocus: core::option::Option<AttributeValue<'life>>,
590    ///
591    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
592    ///   
593    pub class: core::option::Option<AttributeValue<'life>>,
594    ///
595    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
596    ///     <ul>
597    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
598    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
599    ///     </ul>
600    ///   
601    pub contenteditable: core::option::Option<AttributeValue<'life>>,
602    ///
603    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
604    ///   
605    pub contextmenu: core::option::Option<AttributeValue<'life>>,
606    ///
607    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
608    ///   
609    #[cfg(feature = "alloc")]
610    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
611    ///
612    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
613    ///     <ul>
614    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
615    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
616    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
617    ///     </ul>
618    ///   
619    pub dir: core::option::Option<AttributeValue<'life>>,
620    ///
621    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
622    ///     <ul>
623    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
624    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
625    ///     </ul>
626    ///   
627    pub draggable: core::option::Option<AttributeValue<'life>>,
628    ///
629    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
630    ///   
631    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
632    ///
633    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
634    ///   
635    pub exportparts: core::option::Option<AttributeValue<'life>>,
636    /// /// Extra attributes of the element.
637
638    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
639    #[cfg(feature = "alloc")]
640    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
641    ///
642    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
643    ///   
644    pub hidden: core::option::Option<AttributeValue<'life>>,
645    ///
646    ///     <p>The base URL to be used throughout the document for relative URLs. Absolute and relative URLs are allowed.</p>
647    ///   
648    pub href: core::option::Option<AttributeValue<'life>>,
649    ///
650    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
651    ///   
652    pub id: core::option::Option<AttributeValue<'life>>,
653    ///
654    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
655    ///   
656    pub inert: core::option::Option<AttributeValue<'life>>,
657    ///
658    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
659    ///   
660    pub inputmode: core::option::Option<AttributeValue<'life>>,
661    ///
662    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
663    ///   
664    pub is: core::option::Option<AttributeValue<'life>>,
665    ///
666    ///     <p>The unique, global identifier of an item.</p>
667    ///   
668    pub itemid: core::option::Option<AttributeValue<'life>>,
669    ///
670    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
671    ///   
672    pub itemprop: core::option::Option<AttributeValue<'life>>,
673    ///
674    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
675    ///   
676    pub itemref: core::option::Option<AttributeValue<'life>>,
677    ///
678    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
679    ///   
680    pub itemscope: core::option::Option<AttributeValue<'life>>,
681    ///
682    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
683    ///   
684    pub itemtype: core::option::Option<AttributeValue<'life>>,
685    ///
686    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
687    ///   
688    pub lang: core::option::Option<AttributeValue<'life>>,
689    ///
690    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
691    ///   
692    pub nonce: core::option::Option<AttributeValue<'life>>,
693    ///
694    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
695    ///   
696    pub part: core::option::Option<AttributeValue<'life>>,
697    ///
698    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
699    ///   
700    pub popover: core::option::Option<AttributeValue<'life>>,
701    ///
702    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
703    ///   
704    pub role: core::option::Option<AttributeValue<'life>>,
705    ///
706    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
707    ///   
708    pub slot: core::option::Option<AttributeValue<'life>>,
709    ///
710    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
711    ///     <ul>
712    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
713    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
714    ///     </ul>
715    ///   
716    pub spellcheck: core::option::Option<AttributeValue<'life>>,
717    ///
718    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
719    ///   
720    pub style: core::option::Option<AttributeValue<'life>>,
721    ///
722    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
723    ///     <ul>
724    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
725    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
726    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
727    ///     </ul>
728    ///   
729    pub tabindex: core::option::Option<AttributeValue<'life>>,
730    ///
731    ///     <p>A <strong>keyword</strong> or <strong>author-defined name</strong> of the default <a href="/en-US/docs/Glossary/Browsing_context">browsing context</a> to show the results of navigation from <a href="/en-US/docs/Web/HTML/Element/a"><code>&lt;a&gt;</code></a>, <a href="/en-US/docs/Web/HTML/Element/area"><code>&lt;area&gt;</code></a>, or <a href="/en-US/docs/Web/HTML/Element/form"><code>&lt;form&gt;</code></a> elements without explicit <code>target</code> attributes. The following keywords have special meanings:</p>
732    ///     <ul>
733    ///       <li><code>_self</code> (default): Show the result in the current browsing context.</li>
734    ///       <li><code>_blank</code>: Show the result in a new, unnamed browsing context.</li>
735    ///       <li><code>_parent</code>: 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 <code>_self</code>.</li>
736    ///       <li><code>_top</code>: 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 <code>_self</code>.</li>
737    ///     </ul>
738    ///   
739    pub target: core::option::Option<AttributeValue<'life>>,
740    ///
741    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
742    ///   
743    pub title: core::option::Option<AttributeValue<'life>>,
744    ///
745    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
746    ///     <ul>
747    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
748    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
749    ///     </ul>
750    ///   
751    pub translate: core::option::Option<AttributeValue<'life>>,
752    ///
753    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
754    ///     <ul>
755    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
756    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
757    ///     </ul>
758    ///   
759    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
760}
761#[allow(deprecated)]
762
763impl<'life> Base<'life> {
764    /// Get the tag name of the element.
765    /// This is the same as the name of the struct, in kebab-case.
766    pub fn tag() -> &'static str {
767        "base"
768    }
769    /// Sets an attribute of the element.
770    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
771    /// If the `alloc` feature is disabled, this function will silently fail.
772    ///
773    /// # Note
774    /// This only works when the attribute is lowercase.
775    pub fn set_attr(
776        &mut self,
777        name: &'life str,
778        value: impl core::convert::Into<AttributeValue<'life>>,
779    ) {
780        match name {
781            "accesskey" => self.accesskey = Some(value.into()),
782            "autocapitalize" => self.autocapitalize = Some(value.into()),
783            "autofocus" => self.autofocus = Some(value.into()),
784            "class" => self.class = Some(value.into()),
785            "contenteditable" => self.contenteditable = Some(value.into()),
786            "contextmenu" => self.contextmenu = Some(value.into()),
787            "dir" => self.dir = Some(value.into()),
788            "draggable" => self.draggable = Some(value.into()),
789            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
790            "exportparts" => self.exportparts = Some(value.into()),
791            "hidden" => self.hidden = Some(value.into()),
792            "href" => self.href = Some(value.into()),
793            "id" => self.id = Some(value.into()),
794            "inert" => self.inert = Some(value.into()),
795            "inputmode" => self.inputmode = Some(value.into()),
796            "is" => self.is = Some(value.into()),
797            "itemid" => self.itemid = Some(value.into()),
798            "itemprop" => self.itemprop = Some(value.into()),
799            "itemref" => self.itemref = Some(value.into()),
800            "itemscope" => self.itemscope = Some(value.into()),
801            "itemtype" => self.itemtype = Some(value.into()),
802            "lang" => self.lang = Some(value.into()),
803            "nonce" => self.nonce = Some(value.into()),
804            "part" => self.part = Some(value.into()),
805            "popover" => self.popover = Some(value.into()),
806            "role" => self.role = Some(value.into()),
807            "slot" => self.slot = Some(value.into()),
808            "spellcheck" => self.spellcheck = Some(value.into()),
809            "style" => self.style = Some(value.into()),
810            "tabindex" => self.tabindex = Some(value.into()),
811            "target" => self.target = Some(value.into()),
812            "title" => self.title = Some(value.into()),
813            "translate" => self.translate = Some(value.into()),
814            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
815            #[cfg(feature = "alloc")]
816            _ => {
817                #[allow(clippy::useless_conversion)]
818                self.extra.insert(name.into(), value.into());
819            }
820            #[cfg(not(feature = "alloc"))]
821            _ => {}
822        }
823    }
824}
825/// The <strong><code>&lt;base&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element specifies the base URL to use for all <em>relative</em> URLs in a document. There can be only one <code>&lt;base&gt;</code> element in a document.
826///
827/// A document's used base URL can be accessed by scripts with <a href="/en-US/docs/Web/API/Node/baseURI"><code>Node.baseURI</code></a>. If the document has no <code>&lt;base&gt;</code> elements, then <code>baseURI</code> defaults to <a href="/en-US/docs/Web/API/Location/href"><code>location.href</code></a>.
828///
829/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/base>
830
831#[cfg(feature = "alloc")]
832#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
833pub struct BaseOwned {
834    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
835    ///   
836    pub accesskey: core::option::Option<AttributeValueOwned>,
837    ///
838    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
839    ///     <ul>
840    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
841    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
842    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
843    ///       <li><code>characters</code>, all letters should default to uppercase</li>
844    ///     </ul>
845    ///   
846    pub autocapitalize: core::option::Option<AttributeValueOwned>,
847    ///
848    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
849    ///   
850    pub autofocus: core::option::Option<AttributeValueOwned>,
851    ///
852    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
853    ///   
854    pub class: core::option::Option<AttributeValueOwned>,
855    ///
856    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
857    ///     <ul>
858    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
859    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
860    ///     </ul>
861    ///   
862    pub contenteditable: core::option::Option<AttributeValueOwned>,
863    ///
864    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
865    ///   
866    pub contextmenu: core::option::Option<AttributeValueOwned>,
867    ///
868    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
869    ///   
870    #[cfg(feature = "alloc")]
871    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
872    ///
873    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
874    ///     <ul>
875    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
876    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
877    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
878    ///     </ul>
879    ///   
880    pub dir: core::option::Option<AttributeValueOwned>,
881    ///
882    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
883    ///     <ul>
884    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
885    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
886    ///     </ul>
887    ///   
888    pub draggable: core::option::Option<AttributeValueOwned>,
889    ///
890    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
891    ///   
892    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
893    ///
894    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
895    ///   
896    pub exportparts: core::option::Option<AttributeValueOwned>,
897    /// /// Extra attributes of the element.
898
899    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
900    #[cfg(feature = "alloc")]
901    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
902    ///
903    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
904    ///   
905    pub hidden: core::option::Option<AttributeValueOwned>,
906    ///
907    ///     <p>The base URL to be used throughout the document for relative URLs. Absolute and relative URLs are allowed.</p>
908    ///   
909    pub href: core::option::Option<AttributeValueOwned>,
910    ///
911    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
912    ///   
913    pub id: core::option::Option<AttributeValueOwned>,
914    ///
915    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
916    ///   
917    pub inert: core::option::Option<AttributeValueOwned>,
918    ///
919    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
920    ///   
921    pub inputmode: core::option::Option<AttributeValueOwned>,
922    ///
923    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
924    ///   
925    pub is: core::option::Option<AttributeValueOwned>,
926    ///
927    ///     <p>The unique, global identifier of an item.</p>
928    ///   
929    pub itemid: core::option::Option<AttributeValueOwned>,
930    ///
931    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
932    ///   
933    pub itemprop: core::option::Option<AttributeValueOwned>,
934    ///
935    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
936    ///   
937    pub itemref: core::option::Option<AttributeValueOwned>,
938    ///
939    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
940    ///   
941    pub itemscope: core::option::Option<AttributeValueOwned>,
942    ///
943    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
944    ///   
945    pub itemtype: core::option::Option<AttributeValueOwned>,
946    ///
947    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
948    ///   
949    pub lang: core::option::Option<AttributeValueOwned>,
950    ///
951    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
952    ///   
953    pub nonce: core::option::Option<AttributeValueOwned>,
954    ///
955    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
956    ///   
957    pub part: core::option::Option<AttributeValueOwned>,
958    ///
959    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
960    ///   
961    pub popover: core::option::Option<AttributeValueOwned>,
962    ///
963    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
964    ///   
965    pub role: core::option::Option<AttributeValueOwned>,
966    ///
967    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
968    ///   
969    pub slot: core::option::Option<AttributeValueOwned>,
970    ///
971    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
972    ///     <ul>
973    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
974    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
975    ///     </ul>
976    ///   
977    pub spellcheck: core::option::Option<AttributeValueOwned>,
978    ///
979    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
980    ///   
981    pub style: core::option::Option<AttributeValueOwned>,
982    ///
983    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
984    ///     <ul>
985    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
986    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
987    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
988    ///     </ul>
989    ///   
990    pub tabindex: core::option::Option<AttributeValueOwned>,
991    ///
992    ///     <p>A <strong>keyword</strong> or <strong>author-defined name</strong> of the default <a href="/en-US/docs/Glossary/Browsing_context">browsing context</a> to show the results of navigation from <a href="/en-US/docs/Web/HTML/Element/a"><code>&lt;a&gt;</code></a>, <a href="/en-US/docs/Web/HTML/Element/area"><code>&lt;area&gt;</code></a>, or <a href="/en-US/docs/Web/HTML/Element/form"><code>&lt;form&gt;</code></a> elements without explicit <code>target</code> attributes. The following keywords have special meanings:</p>
993    ///     <ul>
994    ///       <li><code>_self</code> (default): Show the result in the current browsing context.</li>
995    ///       <li><code>_blank</code>: Show the result in a new, unnamed browsing context.</li>
996    ///       <li><code>_parent</code>: 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 <code>_self</code>.</li>
997    ///       <li><code>_top</code>: 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 <code>_self</code>.</li>
998    ///     </ul>
999    ///   
1000    pub target: core::option::Option<AttributeValueOwned>,
1001    ///
1002    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
1003    ///   
1004    pub title: core::option::Option<AttributeValueOwned>,
1005    ///
1006    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
1007    ///     <ul>
1008    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
1009    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
1010    ///     </ul>
1011    ///   
1012    pub translate: core::option::Option<AttributeValueOwned>,
1013    ///
1014    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
1015    ///     <ul>
1016    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
1017    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
1018    ///     </ul>
1019    ///   
1020    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
1021}
1022#[allow(deprecated)]
1023#[cfg(feature = "alloc")]
1024impl BaseOwned {
1025    /// Get the tag name of the element.
1026    /// This is the same as the name of the struct, in kebab-case.
1027    pub fn tag() -> &'static str {
1028        "base"
1029    }
1030    /// Sets an attribute of the element.
1031    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
1032    /// If the `alloc` feature is disabled, this function will silently fail.
1033    ///
1034    /// # Note
1035    /// This only works when the attribute is lowercase.
1036    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
1037        match name {
1038            "accesskey" => self.accesskey = Some(value.into()),
1039            "autocapitalize" => self.autocapitalize = Some(value.into()),
1040            "autofocus" => self.autofocus = Some(value.into()),
1041            "class" => self.class = Some(value.into()),
1042            "contenteditable" => self.contenteditable = Some(value.into()),
1043            "contextmenu" => self.contextmenu = Some(value.into()),
1044            "dir" => self.dir = Some(value.into()),
1045            "draggable" => self.draggable = Some(value.into()),
1046            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
1047            "exportparts" => self.exportparts = Some(value.into()),
1048            "hidden" => self.hidden = Some(value.into()),
1049            "href" => self.href = Some(value.into()),
1050            "id" => self.id = Some(value.into()),
1051            "inert" => self.inert = Some(value.into()),
1052            "inputmode" => self.inputmode = Some(value.into()),
1053            "is" => self.is = Some(value.into()),
1054            "itemid" => self.itemid = Some(value.into()),
1055            "itemprop" => self.itemprop = Some(value.into()),
1056            "itemref" => self.itemref = Some(value.into()),
1057            "itemscope" => self.itemscope = Some(value.into()),
1058            "itemtype" => self.itemtype = Some(value.into()),
1059            "lang" => self.lang = Some(value.into()),
1060            "nonce" => self.nonce = Some(value.into()),
1061            "part" => self.part = Some(value.into()),
1062            "popover" => self.popover = Some(value.into()),
1063            "role" => self.role = Some(value.into()),
1064            "slot" => self.slot = Some(value.into()),
1065            "spellcheck" => self.spellcheck = Some(value.into()),
1066            "style" => self.style = Some(value.into()),
1067            "tabindex" => self.tabindex = Some(value.into()),
1068            "target" => self.target = Some(value.into()),
1069            "title" => self.title = Some(value.into()),
1070            "translate" => self.translate = Some(value.into()),
1071            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
1072            #[cfg(feature = "alloc")]
1073            _ => {
1074                #[allow(clippy::useless_conversion)]
1075                self.extra.insert(name.into(), value.into());
1076            }
1077            #[cfg(not(feature = "alloc"))]
1078            _ => {}
1079        }
1080    }
1081}
1082/// The <strong><code>&lt;head&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element contains machine-readable information (<a href="/en-US/docs/Glossary/Metadata">metadata</a>) about the document, like its <a href="/en-US/docs/Web/HTML/Element/title">title</a>, <a href="/en-US/docs/Web/HTML/Element/script">scripts</a>, and <a href="/en-US/docs/Web/HTML/Element/style">style sheets</a>.
1083///
1084/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/head>
1085
1086#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
1087pub struct Head<'life> {
1088    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
1089    ///   
1090    pub accesskey: core::option::Option<AttributeValue<'life>>,
1091    ///
1092    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
1093    ///     <ul>
1094    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
1095    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
1096    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
1097    ///       <li><code>characters</code>, all letters should default to uppercase</li>
1098    ///     </ul>
1099    ///   
1100    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
1101    ///
1102    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
1103    ///   
1104    pub autofocus: core::option::Option<AttributeValue<'life>>,
1105    ///
1106    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
1107    ///   
1108    pub class: core::option::Option<AttributeValue<'life>>,
1109    ///
1110    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
1111    ///     <ul>
1112    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
1113    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
1114    ///     </ul>
1115    ///   
1116    pub contenteditable: core::option::Option<AttributeValue<'life>>,
1117    ///
1118    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
1119    ///   
1120    pub contextmenu: core::option::Option<AttributeValue<'life>>,
1121    ///
1122    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
1123    ///   
1124    #[cfg(feature = "alloc")]
1125    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
1126    ///
1127    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
1128    ///     <ul>
1129    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
1130    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
1131    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
1132    ///     </ul>
1133    ///   
1134    pub dir: core::option::Option<AttributeValue<'life>>,
1135    ///
1136    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
1137    ///     <ul>
1138    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
1139    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
1140    ///     </ul>
1141    ///   
1142    pub draggable: core::option::Option<AttributeValue<'life>>,
1143    ///
1144    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
1145    ///   
1146    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
1147    ///
1148    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
1149    ///   
1150    pub exportparts: core::option::Option<AttributeValue<'life>>,
1151    /// /// Extra attributes of the element.
1152
1153    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
1154    #[cfg(feature = "alloc")]
1155    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
1156    ///
1157    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
1158    ///   
1159    pub hidden: core::option::Option<AttributeValue<'life>>,
1160    ///
1161    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
1162    ///   
1163    pub id: core::option::Option<AttributeValue<'life>>,
1164    ///
1165    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
1166    ///   
1167    pub inert: core::option::Option<AttributeValue<'life>>,
1168    ///
1169    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
1170    ///   
1171    pub inputmode: core::option::Option<AttributeValue<'life>>,
1172    ///
1173    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
1174    ///   
1175    pub is: core::option::Option<AttributeValue<'life>>,
1176    ///
1177    ///     <p>The unique, global identifier of an item.</p>
1178    ///   
1179    pub itemid: core::option::Option<AttributeValue<'life>>,
1180    ///
1181    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
1182    ///   
1183    pub itemprop: core::option::Option<AttributeValue<'life>>,
1184    ///
1185    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
1186    ///   
1187    pub itemref: core::option::Option<AttributeValue<'life>>,
1188    ///
1189    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
1190    ///   
1191    pub itemscope: core::option::Option<AttributeValue<'life>>,
1192    ///
1193    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
1194    ///   
1195    pub itemtype: core::option::Option<AttributeValue<'life>>,
1196    ///
1197    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
1198    ///   
1199    pub lang: core::option::Option<AttributeValue<'life>>,
1200    ///
1201    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
1202    ///   
1203    pub nonce: core::option::Option<AttributeValue<'life>>,
1204    ///
1205    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
1206    ///   
1207    pub part: core::option::Option<AttributeValue<'life>>,
1208    ///
1209    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
1210    ///   
1211    pub popover: core::option::Option<AttributeValue<'life>>,
1212    ///
1213    ///     <p>The <a href="/en-US/docs/Glossary/URI">URI</a>s of one or more metadata profiles, separated by <a href="/en-US/docs/Glossary/Whitespace">white space</a>.</p>
1214    ///   
1215    pub profile: core::option::Option<AttributeValue<'life>>,
1216    ///
1217    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
1218    ///   
1219    pub role: core::option::Option<AttributeValue<'life>>,
1220    ///
1221    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
1222    ///   
1223    pub slot: core::option::Option<AttributeValue<'life>>,
1224    ///
1225    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
1226    ///     <ul>
1227    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
1228    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
1229    ///     </ul>
1230    ///   
1231    pub spellcheck: core::option::Option<AttributeValue<'life>>,
1232    ///
1233    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
1234    ///   
1235    pub style: core::option::Option<AttributeValue<'life>>,
1236    ///
1237    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
1238    ///     <ul>
1239    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
1240    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
1241    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
1242    ///     </ul>
1243    ///   
1244    pub tabindex: core::option::Option<AttributeValue<'life>>,
1245    ///
1246    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
1247    ///   
1248    pub title: core::option::Option<AttributeValue<'life>>,
1249    ///
1250    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
1251    ///     <ul>
1252    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
1253    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
1254    ///     </ul>
1255    ///   
1256    pub translate: core::option::Option<AttributeValue<'life>>,
1257    ///
1258    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
1259    ///     <ul>
1260    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
1261    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
1262    ///     </ul>
1263    ///   
1264    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
1265}
1266#[allow(deprecated)]
1267
1268impl<'life> Head<'life> {
1269    /// Get the tag name of the element.
1270    /// This is the same as the name of the struct, in kebab-case.
1271    pub fn tag() -> &'static str {
1272        "head"
1273    }
1274    /// Sets an attribute of the element.
1275    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
1276    /// If the `alloc` feature is disabled, this function will silently fail.
1277    ///
1278    /// # Note
1279    /// This only works when the attribute is lowercase.
1280    pub fn set_attr(
1281        &mut self,
1282        name: &'life str,
1283        value: impl core::convert::Into<AttributeValue<'life>>,
1284    ) {
1285        match name {
1286            "accesskey" => self.accesskey = Some(value.into()),
1287            "autocapitalize" => self.autocapitalize = Some(value.into()),
1288            "autofocus" => self.autofocus = Some(value.into()),
1289            "class" => self.class = Some(value.into()),
1290            "contenteditable" => self.contenteditable = Some(value.into()),
1291            "contextmenu" => self.contextmenu = Some(value.into()),
1292            "dir" => self.dir = Some(value.into()),
1293            "draggable" => self.draggable = Some(value.into()),
1294            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
1295            "exportparts" => self.exportparts = Some(value.into()),
1296            "hidden" => self.hidden = Some(value.into()),
1297            "id" => self.id = Some(value.into()),
1298            "inert" => self.inert = Some(value.into()),
1299            "inputmode" => self.inputmode = Some(value.into()),
1300            "is" => self.is = Some(value.into()),
1301            "itemid" => self.itemid = Some(value.into()),
1302            "itemprop" => self.itemprop = Some(value.into()),
1303            "itemref" => self.itemref = Some(value.into()),
1304            "itemscope" => self.itemscope = Some(value.into()),
1305            "itemtype" => self.itemtype = Some(value.into()),
1306            "lang" => self.lang = Some(value.into()),
1307            "nonce" => self.nonce = Some(value.into()),
1308            "part" => self.part = Some(value.into()),
1309            "popover" => self.popover = Some(value.into()),
1310            "profile" => self.profile = Some(value.into()),
1311            "role" => self.role = Some(value.into()),
1312            "slot" => self.slot = Some(value.into()),
1313            "spellcheck" => self.spellcheck = Some(value.into()),
1314            "style" => self.style = Some(value.into()),
1315            "tabindex" => self.tabindex = Some(value.into()),
1316            "title" => self.title = Some(value.into()),
1317            "translate" => self.translate = Some(value.into()),
1318            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
1319            #[cfg(feature = "alloc")]
1320            _ => {
1321                #[allow(clippy::useless_conversion)]
1322                self.extra.insert(name.into(), value.into());
1323            }
1324            #[cfg(not(feature = "alloc"))]
1325            _ => {}
1326        }
1327    }
1328}
1329/// The <strong><code>&lt;head&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element contains machine-readable information (<a href="/en-US/docs/Glossary/Metadata">metadata</a>) about the document, like its <a href="/en-US/docs/Web/HTML/Element/title">title</a>, <a href="/en-US/docs/Web/HTML/Element/script">scripts</a>, and <a href="/en-US/docs/Web/HTML/Element/style">style sheets</a>.
1330///
1331/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/head>
1332
1333#[cfg(feature = "alloc")]
1334#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
1335pub struct HeadOwned {
1336    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
1337    ///   
1338    pub accesskey: core::option::Option<AttributeValueOwned>,
1339    ///
1340    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
1341    ///     <ul>
1342    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
1343    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
1344    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
1345    ///       <li><code>characters</code>, all letters should default to uppercase</li>
1346    ///     </ul>
1347    ///   
1348    pub autocapitalize: core::option::Option<AttributeValueOwned>,
1349    ///
1350    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
1351    ///   
1352    pub autofocus: core::option::Option<AttributeValueOwned>,
1353    ///
1354    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
1355    ///   
1356    pub class: core::option::Option<AttributeValueOwned>,
1357    ///
1358    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
1359    ///     <ul>
1360    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
1361    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
1362    ///     </ul>
1363    ///   
1364    pub contenteditable: core::option::Option<AttributeValueOwned>,
1365    ///
1366    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
1367    ///   
1368    pub contextmenu: core::option::Option<AttributeValueOwned>,
1369    ///
1370    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
1371    ///   
1372    #[cfg(feature = "alloc")]
1373    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
1374    ///
1375    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
1376    ///     <ul>
1377    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
1378    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
1379    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
1380    ///     </ul>
1381    ///   
1382    pub dir: core::option::Option<AttributeValueOwned>,
1383    ///
1384    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
1385    ///     <ul>
1386    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
1387    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
1388    ///     </ul>
1389    ///   
1390    pub draggable: core::option::Option<AttributeValueOwned>,
1391    ///
1392    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
1393    ///   
1394    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
1395    ///
1396    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
1397    ///   
1398    pub exportparts: core::option::Option<AttributeValueOwned>,
1399    /// /// Extra attributes of the element.
1400
1401    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
1402    #[cfg(feature = "alloc")]
1403    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
1404    ///
1405    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
1406    ///   
1407    pub hidden: core::option::Option<AttributeValueOwned>,
1408    ///
1409    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
1410    ///   
1411    pub id: core::option::Option<AttributeValueOwned>,
1412    ///
1413    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
1414    ///   
1415    pub inert: core::option::Option<AttributeValueOwned>,
1416    ///
1417    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
1418    ///   
1419    pub inputmode: core::option::Option<AttributeValueOwned>,
1420    ///
1421    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
1422    ///   
1423    pub is: core::option::Option<AttributeValueOwned>,
1424    ///
1425    ///     <p>The unique, global identifier of an item.</p>
1426    ///   
1427    pub itemid: core::option::Option<AttributeValueOwned>,
1428    ///
1429    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
1430    ///   
1431    pub itemprop: core::option::Option<AttributeValueOwned>,
1432    ///
1433    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
1434    ///   
1435    pub itemref: core::option::Option<AttributeValueOwned>,
1436    ///
1437    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
1438    ///   
1439    pub itemscope: core::option::Option<AttributeValueOwned>,
1440    ///
1441    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
1442    ///   
1443    pub itemtype: core::option::Option<AttributeValueOwned>,
1444    ///
1445    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
1446    ///   
1447    pub lang: core::option::Option<AttributeValueOwned>,
1448    ///
1449    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
1450    ///   
1451    pub nonce: core::option::Option<AttributeValueOwned>,
1452    ///
1453    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
1454    ///   
1455    pub part: core::option::Option<AttributeValueOwned>,
1456    ///
1457    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
1458    ///   
1459    pub popover: core::option::Option<AttributeValueOwned>,
1460    ///
1461    ///     <p>The <a href="/en-US/docs/Glossary/URI">URI</a>s of one or more metadata profiles, separated by <a href="/en-US/docs/Glossary/Whitespace">white space</a>.</p>
1462    ///   
1463    pub profile: core::option::Option<AttributeValueOwned>,
1464    ///
1465    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
1466    ///   
1467    pub role: core::option::Option<AttributeValueOwned>,
1468    ///
1469    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
1470    ///   
1471    pub slot: core::option::Option<AttributeValueOwned>,
1472    ///
1473    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
1474    ///     <ul>
1475    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
1476    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
1477    ///     </ul>
1478    ///   
1479    pub spellcheck: core::option::Option<AttributeValueOwned>,
1480    ///
1481    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
1482    ///   
1483    pub style: core::option::Option<AttributeValueOwned>,
1484    ///
1485    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
1486    ///     <ul>
1487    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
1488    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
1489    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
1490    ///     </ul>
1491    ///   
1492    pub tabindex: core::option::Option<AttributeValueOwned>,
1493    ///
1494    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
1495    ///   
1496    pub title: core::option::Option<AttributeValueOwned>,
1497    ///
1498    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
1499    ///     <ul>
1500    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
1501    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
1502    ///     </ul>
1503    ///   
1504    pub translate: core::option::Option<AttributeValueOwned>,
1505    ///
1506    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
1507    ///     <ul>
1508    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
1509    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
1510    ///     </ul>
1511    ///   
1512    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
1513}
1514#[allow(deprecated)]
1515#[cfg(feature = "alloc")]
1516impl HeadOwned {
1517    /// Get the tag name of the element.
1518    /// This is the same as the name of the struct, in kebab-case.
1519    pub fn tag() -> &'static str {
1520        "head"
1521    }
1522    /// Sets an attribute of the element.
1523    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
1524    /// If the `alloc` feature is disabled, this function will silently fail.
1525    ///
1526    /// # Note
1527    /// This only works when the attribute is lowercase.
1528    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
1529        match name {
1530            "accesskey" => self.accesskey = Some(value.into()),
1531            "autocapitalize" => self.autocapitalize = Some(value.into()),
1532            "autofocus" => self.autofocus = Some(value.into()),
1533            "class" => self.class = Some(value.into()),
1534            "contenteditable" => self.contenteditable = Some(value.into()),
1535            "contextmenu" => self.contextmenu = Some(value.into()),
1536            "dir" => self.dir = Some(value.into()),
1537            "draggable" => self.draggable = Some(value.into()),
1538            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
1539            "exportparts" => self.exportparts = Some(value.into()),
1540            "hidden" => self.hidden = Some(value.into()),
1541            "id" => self.id = Some(value.into()),
1542            "inert" => self.inert = Some(value.into()),
1543            "inputmode" => self.inputmode = Some(value.into()),
1544            "is" => self.is = Some(value.into()),
1545            "itemid" => self.itemid = Some(value.into()),
1546            "itemprop" => self.itemprop = Some(value.into()),
1547            "itemref" => self.itemref = Some(value.into()),
1548            "itemscope" => self.itemscope = Some(value.into()),
1549            "itemtype" => self.itemtype = Some(value.into()),
1550            "lang" => self.lang = Some(value.into()),
1551            "nonce" => self.nonce = Some(value.into()),
1552            "part" => self.part = Some(value.into()),
1553            "popover" => self.popover = Some(value.into()),
1554            "profile" => self.profile = Some(value.into()),
1555            "role" => self.role = Some(value.into()),
1556            "slot" => self.slot = Some(value.into()),
1557            "spellcheck" => self.spellcheck = Some(value.into()),
1558            "style" => self.style = Some(value.into()),
1559            "tabindex" => self.tabindex = Some(value.into()),
1560            "title" => self.title = Some(value.into()),
1561            "translate" => self.translate = Some(value.into()),
1562            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
1563            #[cfg(feature = "alloc")]
1564            _ => {
1565                #[allow(clippy::useless_conversion)]
1566                self.extra.insert(name.into(), value.into());
1567            }
1568            #[cfg(not(feature = "alloc"))]
1569            _ => {}
1570        }
1571    }
1572}
1573///
1574///   The <strong><code>&lt;link&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element specifies relationships between the current document and an external resource.
1575///   This element is most commonly used to link to <a href="/en-US/docs/Glossary/CSS">stylesheets</a>, but is also used to establish site icons (both "favicon" style icons and icons for the home screen and apps on mobile devices) among other things.
1576///
1577///
1578/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/link>
1579
1580#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
1581pub struct Link<'life> {
1582    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
1583    ///   
1584    pub accesskey: core::option::Option<AttributeValue<'life>>,
1585    ///
1586    ///     <p>
1587    ///       This attribute is only used when <code>rel="preload"</code> or <code>rel="prefetch"</code> has been set on the <code>&lt;link&gt;</code> element.
1588    ///       It specifies the type of content being loaded by the <code>&lt;link&gt;</code>, which is necessary for request matching, application of correct <a href="/en-US/docs/Web/HTTP/CSP">content security policy</a>, and setting of correct <a href="/en-US/docs/Web/HTTP/Headers/Accept"><code>Accept</code></a> request header.
1589    ///       Furthermore, <code>rel="preload"</code> uses this as a signal for request prioritization.
1590    ///       The table below lists the valid values for this attribute and the elements or resources they apply to.
1591    ///     </p>
1592    ///     <figure class="table-container"><table class="standard-table">
1593    ///       <thead>
1594    ///         <tr>
1595    ///           <th scope="col">Value</th>
1596    ///           <th scope="col">Applies To</th>
1597    ///         </tr>
1598    ///       </thead>
1599    ///       <tbody>
1600    ///         <tr>
1601    ///           <td>audio</td>
1602    ///           <td><code>&lt;audio&gt;</code> elements</td>
1603    ///         </tr>
1604    ///         <tr>
1605    ///           <td>document</td>
1606    ///           <td><code>&lt;iframe&gt;</code> and <code>&lt;frame&gt;</code> elements</td>
1607    ///         </tr>
1608    ///         <tr>
1609    ///           <td>embed</td>
1610    ///           <td><code>&lt;embed&gt;</code> elements</td>
1611    ///         </tr>
1612    ///         <tr>
1613    ///           <td>fetch</td>
1614    ///           <td>
1615    ///             <p>fetch, XHR</p>
1616    ///             <div class="notecard note" id="sect1">
1617    ///               <p>
1618    ///                 <strong>Note:</strong> This value also requires
1619    ///                 <code>&lt;link&gt;</code> to contain the crossorigin attribute.
1620    ///               </p>
1621    ///             </div>
1622    ///           </td>
1623    ///         </tr>
1624    ///         <tr>
1625    ///           <td>font</td>
1626    ///           <td>CSS @font-face</td>
1627    ///         </tr>
1628    ///         <tr>
1629    ///           <td>image</td>
1630    ///           <td>
1631    ///             <code>&lt;img&gt;</code> and <code>&lt;picture&gt;</code> elements with
1632    ///             srcset or imageset attributes, SVG <code>&lt;image&gt;</code> elements,
1633    ///             CSS <code>*-image</code> rules
1634    ///           </td>
1635    ///         </tr>
1636    ///         <tr>
1637    ///           <td>object</td>
1638    ///           <td><code>&lt;object&gt;</code> elements</td>
1639    ///         </tr>
1640    ///         <tr>
1641    ///           <td>script</td>
1642    ///           <td><code>&lt;script&gt;</code> elements, Worker <code>importScripts</code></td>
1643    ///         </tr>
1644    ///         <tr>
1645    ///           <td>style</td>
1646    ///           <td>
1647    ///             <code>&lt;link rel=stylesheet&gt;</code> elements, CSS
1648    ///             <code>@import</code>
1649    ///           </td>
1650    ///         </tr>
1651    ///         <tr>
1652    ///           <td>track</td>
1653    ///           <td><code>&lt;track&gt;</code> elements</td>
1654    ///         </tr>
1655    ///         <tr>
1656    ///           <td>video</td>
1657    ///           <td><code>&lt;video&gt;</code> elements</td>
1658    ///         </tr>
1659    ///         <tr>
1660    ///           <td>worker</td>
1661    ///           <td>Worker, SharedWorker</td>
1662    ///         </tr>
1663    ///       </tbody>
1664    ///     </table></figure>
1665    ///   
1666    pub as_: core::option::Option<AttributeValue<'life>>,
1667    ///
1668    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
1669    ///     <ul>
1670    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
1671    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
1672    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
1673    ///       <li><code>characters</code>, all letters should default to uppercase</li>
1674    ///     </ul>
1675    ///   
1676    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
1677    ///
1678    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
1679    ///   
1680    pub autofocus: core::option::Option<AttributeValue<'life>>,
1681    ///
1682    ///     <p>This attribute explicitly indicates that certain operations should be blocked on the fetching of an external resource. The operations that are to be blocked must be a space-separated list of blocking attributes listed below.</p>
1683    ///     <ul>
1684    ///       <li><code>render</code>: The rendering of content on the screen is blocked.</li>
1685    ///     </ul>
1686    ///   
1687    pub blocking: core::option::Option<AttributeValue<'life>>,
1688    ///
1689    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
1690    ///   
1691    pub class: core::option::Option<AttributeValue<'life>>,
1692    ///
1693    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
1694    ///     <ul>
1695    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
1696    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
1697    ///     </ul>
1698    ///   
1699    pub contenteditable: core::option::Option<AttributeValue<'life>>,
1700    ///
1701    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
1702    ///   
1703    pub contextmenu: core::option::Option<AttributeValue<'life>>,
1704    ///
1705    ///     <p>
1706    ///       This <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicates whether <a href="/en-US/docs/Glossary/CORS">CORS</a> must be used when fetching the resource.
1707    ///       <a href="/en-US/docs/Web/HTML/CORS_enabled_image">CORS-enabled images</a> can be reused in the <a href="/en-US/docs/Web/HTML/Element/canvas"><code>&lt;canvas&gt;</code></a> element without being <em>tainted</em>.
1708    ///       The allowed values are:
1709    ///     </p>
1710    ///     <dl>
1711    ///       <dt id="anonymous"><code>anonymous</code></dt>
1712    ///       <dd>
1713    ///         <p>
1714    ///           A cross-origin request (i.e. with an <a href="/en-US/docs/Web/HTTP/Headers/Origin"><code>Origin</code></a> HTTP header) is performed, but no credential is sent (i.e. no cookie, X.509 certificate, or HTTP Basic authentication).
1715    ///           If the server does not give credentials to the origin site (by not setting the <a href="/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin"><code>Access-Control-Allow-Origin</code></a> HTTP header) the resource will be tainted and its usage restricted.
1716    ///         </p>
1717    ///       </dd>
1718    ///       <dt id="use-credentials"><code>use-credentials</code></dt>
1719    ///       <dd>
1720    ///         <p>
1721    ///           A cross-origin request (i.e. with an <code>Origin</code> HTTP header) is performed along with a credential sent (i.e. a cookie, certificate, and/or HTTP Basic authentication is performed).
1722    ///           If the server does not give credentials to the origin site (through <a href="/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Credentials"><code>Access-Control-Allow-Credentials</code></a> HTTP header), the resource will be <em>tainted</em> and its usage restricted.
1723    ///         </p>
1724    ///       </dd>
1725    ///     </dl>
1726    ///     <p>
1727    ///       If the attribute is not present, the resource is fetched without a <a href="/en-US/docs/Glossary/CORS">CORS</a> request (i.e. without sending the <code>Origin</code> HTTP header), preventing its non-tainted usage. If invalid, it is handled as if the enumerated keyword <strong>anonymous</strong> was used.
1728    ///       See <a href="/en-US/docs/Web/HTML/Attributes/crossorigin">CORS settings attributes</a> for additional information.
1729    ///     </p>
1730    ///   
1731    pub crossorigin: core::option::Option<AttributeValue<'life>>,
1732    ///
1733    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
1734    ///   
1735    #[cfg(feature = "alloc")]
1736    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
1737    ///
1738    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
1739    ///     <ul>
1740    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
1741    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
1742    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
1743    ///     </ul>
1744    ///   
1745    pub dir: core::option::Option<AttributeValue<'life>>,
1746    ///
1747    ///     <p>
1748    ///       For <code>rel="stylesheet"</code> only, the <code>disabled</code> Boolean attribute indicates whether the described stylesheet should be loaded and applied to the document.
1749    ///       If <code>disabled</code> is specified in the HTML when it is loaded, the stylesheet will not be loaded during page load.
1750    ///       Instead, the stylesheet will be loaded on-demand, if and when the <code>disabled</code> attribute is changed to <code>false</code> or removed.
1751    ///     </p>
1752    ///     <p>Setting the <code>disabled</code> property in the DOM causes the stylesheet to be removed from the document's <a href="/en-US/docs/Web/API/Document/styleSheets"><code>Document.styleSheets</code></a> list.</p>
1753    ///   
1754    pub disabled: core::option::Option<AttributeValue<'life>>,
1755    ///
1756    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
1757    ///     <ul>
1758    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
1759    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
1760    ///     </ul>
1761    ///   
1762    pub draggable: core::option::Option<AttributeValue<'life>>,
1763    ///
1764    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
1765    ///   
1766    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
1767    ///
1768    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
1769    ///   
1770    pub exportparts: core::option::Option<AttributeValue<'life>>,
1771    /// /// Extra attributes of the element.
1772
1773    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
1774    #[cfg(feature = "alloc")]
1775    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
1776    ///
1777    ///     <p>Provides a hint of the relative priority to use when fetching a preloaded resource. Allowed values:</p>
1778    ///     <dl>
1779    ///       <dt id="high"><code>high</code></dt>
1780    ///       <dd>
1781    ///         <p>Signals a high-priority fetch relative to other resources of the same type.</p>
1782    ///       </dd>
1783    ///       <dt id="low"><code>low</code></dt>
1784    ///       <dd>
1785    ///         <p>Signals a low-priority fetch relative to other resources of the same type.</p>
1786    ///       </dd>
1787    ///       <dt id="auto"><code>auto</code></dt>
1788    ///       <dd>
1789    ///         <p>Default: Signals automatic determination of fetch priority relative to other resources of the same type.</p>
1790    ///       </dd>
1791    ///     </dl>
1792    ///   
1793    pub fetchpriority: core::option::Option<AttributeValue<'life>>,
1794    ///
1795    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
1796    ///   
1797    pub hidden: core::option::Option<AttributeValue<'life>>,
1798    ///
1799    ///     <p>This attribute specifies the <a href="/en-US/docs/Glossary/URL">URL</a> of the linked resource. A URL can be absolute or relative.</p>
1800    ///   
1801    pub href: core::option::Option<AttributeValue<'life>>,
1802    ///
1803    ///     <p>
1804    ///       This attribute indicates the language of the linked resource.
1805    ///       It is purely advisory.
1806    ///       Allowed values are specified by <a href="https://datatracker.ietf.org/doc/html/rfc5646" class="external" target="_blank">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>.
1807    ///       Use this attribute only if the <a href="/en-US/docs/Web/HTML/Element/a#href"><code>href</code></a> attribute is present.
1808    ///     </p>
1809    ///   
1810    pub hreflang: core::option::Option<AttributeValue<'life>>,
1811    ///
1812    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
1813    ///   
1814    pub id: core::option::Option<AttributeValue<'life>>,
1815    ///
1816    ///     <p>For <code>rel="preload"</code> and <code>as="image"</code> only, the <code>imagesizes</code> attribute is <a href="https://html.spec.whatwg.org/multipage/images.html#sizes-attribute" class="external" target="_blank">a sizes attribute</a> that indicates to preload the appropriate resource used by an <code>img</code> element with corresponding values for its <code>srcset</code> and <code>sizes</code> attributes.</p>
1817    ///   
1818    pub imagesizes: core::option::Option<AttributeValue<'life>>,
1819    ///
1820    ///     <p>For <code>rel="preload"</code> and <code>as="image"</code> only, the <code>imagesrcset</code> attribute is <a target="_blank" href="https://html.spec.whatwg.org/multipage/images.html#srcset-attribute" class="external">a sourceset attribute</a> that indicates to preload the appropriate resource used by an <code>img</code> element with corresponding values for its <code>srcset</code> and <code>sizes</code> attributes.</p>
1821    ///   
1822    pub imagesrcset: core::option::Option<AttributeValue<'life>>,
1823    ///
1824    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
1825    ///   
1826    pub inert: core::option::Option<AttributeValue<'life>>,
1827    ///
1828    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
1829    ///   
1830    pub inputmode: core::option::Option<AttributeValue<'life>>,
1831    ///
1832    ///     <p>
1833    ///       Contains inline metadata — a base64-encoded cryptographic hash of the resource (file) you're telling the browser to fetch.
1834    ///       The browser can use this to verify that the fetched resource has been delivered free of unexpected manipulation.
1835    ///       See <a href="/en-US/docs/Web/Security/Subresource_Integrity">Subresource Integrity</a>.
1836    ///     </p>
1837    ///   
1838    pub integrity: core::option::Option<AttributeValue<'life>>,
1839    ///
1840    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
1841    ///   
1842    pub is: core::option::Option<AttributeValue<'life>>,
1843    ///
1844    ///     <p>The unique, global identifier of an item.</p>
1845    ///   
1846    pub itemid: core::option::Option<AttributeValue<'life>>,
1847    ///
1848    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
1849    ///   
1850    pub itemprop: core::option::Option<AttributeValue<'life>>,
1851    ///
1852    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
1853    ///   
1854    pub itemref: core::option::Option<AttributeValue<'life>>,
1855    ///
1856    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
1857    ///   
1858    pub itemscope: core::option::Option<AttributeValue<'life>>,
1859    ///
1860    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
1861    ///   
1862    pub itemtype: core::option::Option<AttributeValue<'life>>,
1863    ///
1864    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
1865    ///   
1866    pub lang: core::option::Option<AttributeValue<'life>>,
1867    ///
1868    ///     <p>
1869    ///       This attribute specifies the media that the linked resource applies to. Its value must be a media type / <a href="/en-US/docs/Web/CSS/Media_Queries">media query</a>.
1870    ///       This attribute is mainly useful when linking to external stylesheets — it allows the user agent to pick the best adapted one for the device it runs on.
1871    ///     </p>
1872    ///     <div class="notecard note" id="sect2">
1873    ///       <p><strong>Note:</strong></p>
1874    ///       <ul>
1875    ///         <li>
1876    ///           In HTML 4, this can only be a simple white-space-separated list of media description literals, i.e., <a href="/en-US/docs/Web/CSS/@media">media types and groups</a>, where defined and allowed as values for this attribute, such as <code>print</code>, <code>screen</code>, <code>aural</code>, <code>braille</code>.
1877    ///           HTML5 extended this to any kind of <a href="/en-US/docs/Web/CSS/Media_Queries">media queries</a>, which are a superset of the allowed values of HTML 4.
1878    ///         </li>
1879    ///         <li>Browsers not supporting <a href="/en-US/docs/Web/CSS/Media_Queries">CSS Media Queries</a> won't necessarily recognize the adequate link; do not forget to set fallback links, the restricted set of media queries defined in HTML 4.</li>
1880    ///       </ul>
1881    ///     </div>
1882    ///   
1883    pub media: core::option::Option<AttributeValue<'life>>,
1884    ///
1885    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
1886    ///   
1887    pub nonce: core::option::Option<AttributeValue<'life>>,
1888    ///
1889    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
1890    ///   
1891    pub part: core::option::Option<AttributeValue<'life>>,
1892    ///
1893    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
1894    ///   
1895    pub popover: core::option::Option<AttributeValue<'life>>,
1896    ///
1897    ///     <p>
1898    ///       Identifies a resource that might be required by the next navigation and that the user agent should retrieve it.
1899    ///       This allows the user agent to respond faster when the resource is requested in the future.
1900    ///     </p>
1901    ///   
1902    pub prefetch: core::option::Option<AttributeValue<'life>>,
1903    ///
1904    ///     <p>A string indicating which referrer to use when fetching the resource:</p>
1905    ///     <ul>
1906    ///       <li><code>no-referrer</code> means that the <a href="/en-US/docs/Web/HTTP/Headers/Referer"><code>Referer</code></a> header will not be sent.</li>
1907    ///       <li>
1908    ///         <code>no-referrer-when-downgrade</code> means that no <a href="/en-US/docs/Web/HTTP/Headers/Referer"><code>Referer</code></a> header will be sent when navigating to an origin without TLS (HTTPS).
1909    ///         This is a user agent's default behavior, if no policy is otherwise specified.
1910    ///       </li>
1911    ///       <li><code>origin</code> means that the referrer will be the origin of the page, which is roughly the scheme, the host, and the port.</li>
1912    ///       <li><code>origin-when-cross-origin</code> means that navigating to other origins will be limited to the scheme, the host, and the port, while navigating on the same origin will include the referrer's path.</li>
1913    ///       <li>
1914    ///         <code>unsafe-url</code> means that the referrer will include the origin and the path (but not the fragment, password, or username).
1915    ///         This case is unsafe because it can leak origins and paths from TLS-protected resources to insecure origins.
1916    ///       </li>
1917    ///     </ul>
1918    ///   
1919    pub referrerpolicy: core::option::Option<AttributeValue<'life>>,
1920    ///
1921    ///     <p>This attribute names a relationship of the linked document to the current document. The attribute must be a space-separated list of <a href="/en-US/docs/Web/HTML/Attributes/rel">link type values</a>.</p>
1922    ///   
1923    pub rel: core::option::Option<AttributeValue<'life>>,
1924    ///
1925    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
1926    ///   
1927    pub role: core::option::Option<AttributeValue<'life>>,
1928    ///
1929    ///     <p>
1930    ///       This attribute defines the sizes of the icons for visual media contained in the resource.
1931    ///       It must be present only if the <a href="#rel"><code>rel</code></a> contains a value of <code>icon</code> or a non-standard type such as Apple's <code>apple-touch-icon</code>.
1932    ///       It may have the following values:
1933    ///     </p>
1934    ///     <ul>
1935    ///       <li><code>any</code>, meaning that the icon can be scaled to any size as it is in a vector format, like <code>image/svg+xml</code>.</li>
1936    ///       <li>a white-space separated list of sizes, each in the format <code>&lt;width in pixels&gt;x&lt;height in pixels&gt;</code> or <code>&lt;width in pixels&gt;X&lt;height in pixels&gt;</code>. Each of these sizes must be contained in the resource.</li>
1937    ///     </ul>
1938    ///     <div class="notecard note" id="sect3">
1939    ///       <p>
1940    ///         <strong>Note:</strong> Most icon formats are only able to store one single icon; therefore, most of the time, the <a href="#sizes"><code>sizes</code></a> attribute contains only one entry.
1941    ///         MS's ICO format does, as well as Apple's ICNS. ICO is more ubiquitous, so you should use this format if cross-browser support is a concern (especially for old IE versions).
1942    ///       </p>
1943    ///     </div>
1944    ///   
1945    pub sizes: core::option::Option<AttributeValue<'life>>,
1946    ///
1947    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
1948    ///   
1949    pub slot: core::option::Option<AttributeValue<'life>>,
1950    ///
1951    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
1952    ///     <ul>
1953    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
1954    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
1955    ///     </ul>
1956    ///   
1957    pub spellcheck: core::option::Option<AttributeValue<'life>>,
1958    ///
1959    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
1960    ///   
1961    pub style: core::option::Option<AttributeValue<'life>>,
1962    ///
1963    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
1964    ///     <ul>
1965    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
1966    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
1967    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
1968    ///     </ul>
1969    ///   
1970    pub tabindex: core::option::Option<AttributeValue<'life>>,
1971    ///
1972    ///     <p>
1973    ///       The <code>title</code> attribute has special semantics on the <code>&lt;link&gt;</code> element.
1974    ///       When used on a <code>&lt;link rel="stylesheet"&gt;</code> it defines a <a href="/en-US/docs/Web/CSS/Alternative_style_sheets">default or an alternate stylesheet</a>.
1975    ///     </p>
1976    ///   
1977    pub title: core::option::Option<AttributeValue<'life>>,
1978    ///
1979    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
1980    ///     <ul>
1981    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
1982    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
1983    ///     </ul>
1984    ///   
1985    pub translate: core::option::Option<AttributeValue<'life>>,
1986    ///
1987    ///     <p>
1988    ///       This attribute is used to define the type of the content linked to.
1989    ///       The value of the attribute should be a MIME type such as <strong>text/html</strong>, <strong>text/css</strong>, and so on.
1990    ///       The common use of this attribute is to define the type of stylesheet being referenced (such as <strong>text/css</strong>), but given that CSS is the only stylesheet language used on the web, not only is it possible to omit the <code>type</code> attribute, but is actually now recommended practice.
1991    ///       It is also used on <code>rel="preload"</code> link types, to make sure the browser only downloads file types that it supports.
1992    ///     </p>
1993    ///   
1994    pub type_: core::option::Option<AttributeValue<'life>>,
1995    ///
1996    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
1997    ///     <ul>
1998    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
1999    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
2000    ///     </ul>
2001    ///   
2002    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
2003}
2004#[allow(deprecated)]
2005
2006impl<'life> Link<'life> {
2007    /// Get the tag name of the element.
2008    /// This is the same as the name of the struct, in kebab-case.
2009    pub fn tag() -> &'static str {
2010        "link"
2011    }
2012    /// Sets an attribute of the element.
2013    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
2014    /// If the `alloc` feature is disabled, this function will silently fail.
2015    ///
2016    /// # Note
2017    /// This only works when the attribute is lowercase.
2018    pub fn set_attr(
2019        &mut self,
2020        name: &'life str,
2021        value: impl core::convert::Into<AttributeValue<'life>>,
2022    ) {
2023        match name {
2024            "accesskey" => self.accesskey = Some(value.into()),
2025            "as_" => self.as_ = Some(value.into()),
2026            "autocapitalize" => self.autocapitalize = Some(value.into()),
2027            "autofocus" => self.autofocus = Some(value.into()),
2028            "blocking" => self.blocking = Some(value.into()),
2029            "class" => self.class = Some(value.into()),
2030            "contenteditable" => self.contenteditable = Some(value.into()),
2031            "contextmenu" => self.contextmenu = Some(value.into()),
2032            "crossorigin" => self.crossorigin = Some(value.into()),
2033            "dir" => self.dir = Some(value.into()),
2034            "disabled" => self.disabled = Some(value.into()),
2035            "draggable" => self.draggable = Some(value.into()),
2036            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
2037            "exportparts" => self.exportparts = Some(value.into()),
2038            "fetchpriority" => self.fetchpriority = Some(value.into()),
2039            "hidden" => self.hidden = Some(value.into()),
2040            "href" => self.href = Some(value.into()),
2041            "hreflang" => self.hreflang = Some(value.into()),
2042            "id" => self.id = Some(value.into()),
2043            "imagesizes" => self.imagesizes = Some(value.into()),
2044            "imagesrcset" => self.imagesrcset = Some(value.into()),
2045            "inert" => self.inert = Some(value.into()),
2046            "inputmode" => self.inputmode = Some(value.into()),
2047            "integrity" => self.integrity = Some(value.into()),
2048            "is" => self.is = Some(value.into()),
2049            "itemid" => self.itemid = Some(value.into()),
2050            "itemprop" => self.itemprop = Some(value.into()),
2051            "itemref" => self.itemref = Some(value.into()),
2052            "itemscope" => self.itemscope = Some(value.into()),
2053            "itemtype" => self.itemtype = Some(value.into()),
2054            "lang" => self.lang = Some(value.into()),
2055            "media" => self.media = Some(value.into()),
2056            "nonce" => self.nonce = Some(value.into()),
2057            "part" => self.part = Some(value.into()),
2058            "popover" => self.popover = Some(value.into()),
2059            "prefetch" => self.prefetch = Some(value.into()),
2060            "referrerpolicy" => self.referrerpolicy = Some(value.into()),
2061            "rel" => self.rel = Some(value.into()),
2062            "role" => self.role = Some(value.into()),
2063            "sizes" => self.sizes = Some(value.into()),
2064            "slot" => self.slot = Some(value.into()),
2065            "spellcheck" => self.spellcheck = Some(value.into()),
2066            "style" => self.style = Some(value.into()),
2067            "tabindex" => self.tabindex = Some(value.into()),
2068            "title" => self.title = Some(value.into()),
2069            "translate" => self.translate = Some(value.into()),
2070            "type_" => self.type_ = Some(value.into()),
2071            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
2072            #[cfg(feature = "alloc")]
2073            _ => {
2074                #[allow(clippy::useless_conversion)]
2075                self.extra.insert(name.into(), value.into());
2076            }
2077            #[cfg(not(feature = "alloc"))]
2078            _ => {}
2079        }
2080    }
2081}
2082///
2083///   The <strong><code>&lt;link&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element specifies relationships between the current document and an external resource.
2084///   This element is most commonly used to link to <a href="/en-US/docs/Glossary/CSS">stylesheets</a>, but is also used to establish site icons (both "favicon" style icons and icons for the home screen and apps on mobile devices) among other things.
2085///
2086///
2087/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/link>
2088
2089#[cfg(feature = "alloc")]
2090#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
2091pub struct LinkOwned {
2092    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
2093    ///   
2094    pub accesskey: core::option::Option<AttributeValueOwned>,
2095    ///
2096    ///     <p>
2097    ///       This attribute is only used when <code>rel="preload"</code> or <code>rel="prefetch"</code> has been set on the <code>&lt;link&gt;</code> element.
2098    ///       It specifies the type of content being loaded by the <code>&lt;link&gt;</code>, which is necessary for request matching, application of correct <a href="/en-US/docs/Web/HTTP/CSP">content security policy</a>, and setting of correct <a href="/en-US/docs/Web/HTTP/Headers/Accept"><code>Accept</code></a> request header.
2099    ///       Furthermore, <code>rel="preload"</code> uses this as a signal for request prioritization.
2100    ///       The table below lists the valid values for this attribute and the elements or resources they apply to.
2101    ///     </p>
2102    ///     <figure class="table-container"><table class="standard-table">
2103    ///       <thead>
2104    ///         <tr>
2105    ///           <th scope="col">Value</th>
2106    ///           <th scope="col">Applies To</th>
2107    ///         </tr>
2108    ///       </thead>
2109    ///       <tbody>
2110    ///         <tr>
2111    ///           <td>audio</td>
2112    ///           <td><code>&lt;audio&gt;</code> elements</td>
2113    ///         </tr>
2114    ///         <tr>
2115    ///           <td>document</td>
2116    ///           <td><code>&lt;iframe&gt;</code> and <code>&lt;frame&gt;</code> elements</td>
2117    ///         </tr>
2118    ///         <tr>
2119    ///           <td>embed</td>
2120    ///           <td><code>&lt;embed&gt;</code> elements</td>
2121    ///         </tr>
2122    ///         <tr>
2123    ///           <td>fetch</td>
2124    ///           <td>
2125    ///             <p>fetch, XHR</p>
2126    ///             <div class="notecard note" id="sect1">
2127    ///               <p>
2128    ///                 <strong>Note:</strong> This value also requires
2129    ///                 <code>&lt;link&gt;</code> to contain the crossorigin attribute.
2130    ///               </p>
2131    ///             </div>
2132    ///           </td>
2133    ///         </tr>
2134    ///         <tr>
2135    ///           <td>font</td>
2136    ///           <td>CSS @font-face</td>
2137    ///         </tr>
2138    ///         <tr>
2139    ///           <td>image</td>
2140    ///           <td>
2141    ///             <code>&lt;img&gt;</code> and <code>&lt;picture&gt;</code> elements with
2142    ///             srcset or imageset attributes, SVG <code>&lt;image&gt;</code> elements,
2143    ///             CSS <code>*-image</code> rules
2144    ///           </td>
2145    ///         </tr>
2146    ///         <tr>
2147    ///           <td>object</td>
2148    ///           <td><code>&lt;object&gt;</code> elements</td>
2149    ///         </tr>
2150    ///         <tr>
2151    ///           <td>script</td>
2152    ///           <td><code>&lt;script&gt;</code> elements, Worker <code>importScripts</code></td>
2153    ///         </tr>
2154    ///         <tr>
2155    ///           <td>style</td>
2156    ///           <td>
2157    ///             <code>&lt;link rel=stylesheet&gt;</code> elements, CSS
2158    ///             <code>@import</code>
2159    ///           </td>
2160    ///         </tr>
2161    ///         <tr>
2162    ///           <td>track</td>
2163    ///           <td><code>&lt;track&gt;</code> elements</td>
2164    ///         </tr>
2165    ///         <tr>
2166    ///           <td>video</td>
2167    ///           <td><code>&lt;video&gt;</code> elements</td>
2168    ///         </tr>
2169    ///         <tr>
2170    ///           <td>worker</td>
2171    ///           <td>Worker, SharedWorker</td>
2172    ///         </tr>
2173    ///       </tbody>
2174    ///     </table></figure>
2175    ///   
2176    pub as_: core::option::Option<AttributeValueOwned>,
2177    ///
2178    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
2179    ///     <ul>
2180    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
2181    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
2182    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
2183    ///       <li><code>characters</code>, all letters should default to uppercase</li>
2184    ///     </ul>
2185    ///   
2186    pub autocapitalize: core::option::Option<AttributeValueOwned>,
2187    ///
2188    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
2189    ///   
2190    pub autofocus: core::option::Option<AttributeValueOwned>,
2191    ///
2192    ///     <p>This attribute explicitly indicates that certain operations should be blocked on the fetching of an external resource. The operations that are to be blocked must be a space-separated list of blocking attributes listed below.</p>
2193    ///     <ul>
2194    ///       <li><code>render</code>: The rendering of content on the screen is blocked.</li>
2195    ///     </ul>
2196    ///   
2197    pub blocking: core::option::Option<AttributeValueOwned>,
2198    ///
2199    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
2200    ///   
2201    pub class: core::option::Option<AttributeValueOwned>,
2202    ///
2203    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
2204    ///     <ul>
2205    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
2206    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
2207    ///     </ul>
2208    ///   
2209    pub contenteditable: core::option::Option<AttributeValueOwned>,
2210    ///
2211    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
2212    ///   
2213    pub contextmenu: core::option::Option<AttributeValueOwned>,
2214    ///
2215    ///     <p>
2216    ///       This <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicates whether <a href="/en-US/docs/Glossary/CORS">CORS</a> must be used when fetching the resource.
2217    ///       <a href="/en-US/docs/Web/HTML/CORS_enabled_image">CORS-enabled images</a> can be reused in the <a href="/en-US/docs/Web/HTML/Element/canvas"><code>&lt;canvas&gt;</code></a> element without being <em>tainted</em>.
2218    ///       The allowed values are:
2219    ///     </p>
2220    ///     <dl>
2221    ///       <dt id="anonymous"><code>anonymous</code></dt>
2222    ///       <dd>
2223    ///         <p>
2224    ///           A cross-origin request (i.e. with an <a href="/en-US/docs/Web/HTTP/Headers/Origin"><code>Origin</code></a> HTTP header) is performed, but no credential is sent (i.e. no cookie, X.509 certificate, or HTTP Basic authentication).
2225    ///           If the server does not give credentials to the origin site (by not setting the <a href="/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin"><code>Access-Control-Allow-Origin</code></a> HTTP header) the resource will be tainted and its usage restricted.
2226    ///         </p>
2227    ///       </dd>
2228    ///       <dt id="use-credentials"><code>use-credentials</code></dt>
2229    ///       <dd>
2230    ///         <p>
2231    ///           A cross-origin request (i.e. with an <code>Origin</code> HTTP header) is performed along with a credential sent (i.e. a cookie, certificate, and/or HTTP Basic authentication is performed).
2232    ///           If the server does not give credentials to the origin site (through <a href="/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Credentials"><code>Access-Control-Allow-Credentials</code></a> HTTP header), the resource will be <em>tainted</em> and its usage restricted.
2233    ///         </p>
2234    ///       </dd>
2235    ///     </dl>
2236    ///     <p>
2237    ///       If the attribute is not present, the resource is fetched without a <a href="/en-US/docs/Glossary/CORS">CORS</a> request (i.e. without sending the <code>Origin</code> HTTP header), preventing its non-tainted usage. If invalid, it is handled as if the enumerated keyword <strong>anonymous</strong> was used.
2238    ///       See <a href="/en-US/docs/Web/HTML/Attributes/crossorigin">CORS settings attributes</a> for additional information.
2239    ///     </p>
2240    ///   
2241    pub crossorigin: core::option::Option<AttributeValueOwned>,
2242    ///
2243    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
2244    ///   
2245    #[cfg(feature = "alloc")]
2246    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
2247    ///
2248    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
2249    ///     <ul>
2250    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
2251    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
2252    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
2253    ///     </ul>
2254    ///   
2255    pub dir: core::option::Option<AttributeValueOwned>,
2256    ///
2257    ///     <p>
2258    ///       For <code>rel="stylesheet"</code> only, the <code>disabled</code> Boolean attribute indicates whether the described stylesheet should be loaded and applied to the document.
2259    ///       If <code>disabled</code> is specified in the HTML when it is loaded, the stylesheet will not be loaded during page load.
2260    ///       Instead, the stylesheet will be loaded on-demand, if and when the <code>disabled</code> attribute is changed to <code>false</code> or removed.
2261    ///     </p>
2262    ///     <p>Setting the <code>disabled</code> property in the DOM causes the stylesheet to be removed from the document's <a href="/en-US/docs/Web/API/Document/styleSheets"><code>Document.styleSheets</code></a> list.</p>
2263    ///   
2264    pub disabled: core::option::Option<AttributeValueOwned>,
2265    ///
2266    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
2267    ///     <ul>
2268    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
2269    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
2270    ///     </ul>
2271    ///   
2272    pub draggable: core::option::Option<AttributeValueOwned>,
2273    ///
2274    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
2275    ///   
2276    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
2277    ///
2278    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
2279    ///   
2280    pub exportparts: core::option::Option<AttributeValueOwned>,
2281    /// /// Extra attributes of the element.
2282
2283    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
2284    #[cfg(feature = "alloc")]
2285    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
2286    ///
2287    ///     <p>Provides a hint of the relative priority to use when fetching a preloaded resource. Allowed values:</p>
2288    ///     <dl>
2289    ///       <dt id="high"><code>high</code></dt>
2290    ///       <dd>
2291    ///         <p>Signals a high-priority fetch relative to other resources of the same type.</p>
2292    ///       </dd>
2293    ///       <dt id="low"><code>low</code></dt>
2294    ///       <dd>
2295    ///         <p>Signals a low-priority fetch relative to other resources of the same type.</p>
2296    ///       </dd>
2297    ///       <dt id="auto"><code>auto</code></dt>
2298    ///       <dd>
2299    ///         <p>Default: Signals automatic determination of fetch priority relative to other resources of the same type.</p>
2300    ///       </dd>
2301    ///     </dl>
2302    ///   
2303    pub fetchpriority: core::option::Option<AttributeValueOwned>,
2304    ///
2305    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
2306    ///   
2307    pub hidden: core::option::Option<AttributeValueOwned>,
2308    ///
2309    ///     <p>This attribute specifies the <a href="/en-US/docs/Glossary/URL">URL</a> of the linked resource. A URL can be absolute or relative.</p>
2310    ///   
2311    pub href: core::option::Option<AttributeValueOwned>,
2312    ///
2313    ///     <p>
2314    ///       This attribute indicates the language of the linked resource.
2315    ///       It is purely advisory.
2316    ///       Allowed values are specified by <a href="https://datatracker.ietf.org/doc/html/rfc5646" class="external" target="_blank">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>.
2317    ///       Use this attribute only if the <a href="/en-US/docs/Web/HTML/Element/a#href"><code>href</code></a> attribute is present.
2318    ///     </p>
2319    ///   
2320    pub hreflang: core::option::Option<AttributeValueOwned>,
2321    ///
2322    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
2323    ///   
2324    pub id: core::option::Option<AttributeValueOwned>,
2325    ///
2326    ///     <p>For <code>rel="preload"</code> and <code>as="image"</code> only, the <code>imagesizes</code> attribute is <a href="https://html.spec.whatwg.org/multipage/images.html#sizes-attribute" class="external" target="_blank">a sizes attribute</a> that indicates to preload the appropriate resource used by an <code>img</code> element with corresponding values for its <code>srcset</code> and <code>sizes</code> attributes.</p>
2327    ///   
2328    pub imagesizes: core::option::Option<AttributeValueOwned>,
2329    ///
2330    ///     <p>For <code>rel="preload"</code> and <code>as="image"</code> only, the <code>imagesrcset</code> attribute is <a target="_blank" href="https://html.spec.whatwg.org/multipage/images.html#srcset-attribute" class="external">a sourceset attribute</a> that indicates to preload the appropriate resource used by an <code>img</code> element with corresponding values for its <code>srcset</code> and <code>sizes</code> attributes.</p>
2331    ///   
2332    pub imagesrcset: core::option::Option<AttributeValueOwned>,
2333    ///
2334    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
2335    ///   
2336    pub inert: core::option::Option<AttributeValueOwned>,
2337    ///
2338    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
2339    ///   
2340    pub inputmode: core::option::Option<AttributeValueOwned>,
2341    ///
2342    ///     <p>
2343    ///       Contains inline metadata — a base64-encoded cryptographic hash of the resource (file) you're telling the browser to fetch.
2344    ///       The browser can use this to verify that the fetched resource has been delivered free of unexpected manipulation.
2345    ///       See <a href="/en-US/docs/Web/Security/Subresource_Integrity">Subresource Integrity</a>.
2346    ///     </p>
2347    ///   
2348    pub integrity: core::option::Option<AttributeValueOwned>,
2349    ///
2350    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
2351    ///   
2352    pub is: core::option::Option<AttributeValueOwned>,
2353    ///
2354    ///     <p>The unique, global identifier of an item.</p>
2355    ///   
2356    pub itemid: core::option::Option<AttributeValueOwned>,
2357    ///
2358    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
2359    ///   
2360    pub itemprop: core::option::Option<AttributeValueOwned>,
2361    ///
2362    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
2363    ///   
2364    pub itemref: core::option::Option<AttributeValueOwned>,
2365    ///
2366    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
2367    ///   
2368    pub itemscope: core::option::Option<AttributeValueOwned>,
2369    ///
2370    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
2371    ///   
2372    pub itemtype: core::option::Option<AttributeValueOwned>,
2373    ///
2374    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
2375    ///   
2376    pub lang: core::option::Option<AttributeValueOwned>,
2377    ///
2378    ///     <p>
2379    ///       This attribute specifies the media that the linked resource applies to. Its value must be a media type / <a href="/en-US/docs/Web/CSS/Media_Queries">media query</a>.
2380    ///       This attribute is mainly useful when linking to external stylesheets — it allows the user agent to pick the best adapted one for the device it runs on.
2381    ///     </p>
2382    ///     <div class="notecard note" id="sect2">
2383    ///       <p><strong>Note:</strong></p>
2384    ///       <ul>
2385    ///         <li>
2386    ///           In HTML 4, this can only be a simple white-space-separated list of media description literals, i.e., <a href="/en-US/docs/Web/CSS/@media">media types and groups</a>, where defined and allowed as values for this attribute, such as <code>print</code>, <code>screen</code>, <code>aural</code>, <code>braille</code>.
2387    ///           HTML5 extended this to any kind of <a href="/en-US/docs/Web/CSS/Media_Queries">media queries</a>, which are a superset of the allowed values of HTML 4.
2388    ///         </li>
2389    ///         <li>Browsers not supporting <a href="/en-US/docs/Web/CSS/Media_Queries">CSS Media Queries</a> won't necessarily recognize the adequate link; do not forget to set fallback links, the restricted set of media queries defined in HTML 4.</li>
2390    ///       </ul>
2391    ///     </div>
2392    ///   
2393    pub media: core::option::Option<AttributeValueOwned>,
2394    ///
2395    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
2396    ///   
2397    pub nonce: core::option::Option<AttributeValueOwned>,
2398    ///
2399    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
2400    ///   
2401    pub part: core::option::Option<AttributeValueOwned>,
2402    ///
2403    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
2404    ///   
2405    pub popover: core::option::Option<AttributeValueOwned>,
2406    ///
2407    ///     <p>
2408    ///       Identifies a resource that might be required by the next navigation and that the user agent should retrieve it.
2409    ///       This allows the user agent to respond faster when the resource is requested in the future.
2410    ///     </p>
2411    ///   
2412    pub prefetch: core::option::Option<AttributeValueOwned>,
2413    ///
2414    ///     <p>A string indicating which referrer to use when fetching the resource:</p>
2415    ///     <ul>
2416    ///       <li><code>no-referrer</code> means that the <a href="/en-US/docs/Web/HTTP/Headers/Referer"><code>Referer</code></a> header will not be sent.</li>
2417    ///       <li>
2418    ///         <code>no-referrer-when-downgrade</code> means that no <a href="/en-US/docs/Web/HTTP/Headers/Referer"><code>Referer</code></a> header will be sent when navigating to an origin without TLS (HTTPS).
2419    ///         This is a user agent's default behavior, if no policy is otherwise specified.
2420    ///       </li>
2421    ///       <li><code>origin</code> means that the referrer will be the origin of the page, which is roughly the scheme, the host, and the port.</li>
2422    ///       <li><code>origin-when-cross-origin</code> means that navigating to other origins will be limited to the scheme, the host, and the port, while navigating on the same origin will include the referrer's path.</li>
2423    ///       <li>
2424    ///         <code>unsafe-url</code> means that the referrer will include the origin and the path (but not the fragment, password, or username).
2425    ///         This case is unsafe because it can leak origins and paths from TLS-protected resources to insecure origins.
2426    ///       </li>
2427    ///     </ul>
2428    ///   
2429    pub referrerpolicy: core::option::Option<AttributeValueOwned>,
2430    ///
2431    ///     <p>This attribute names a relationship of the linked document to the current document. The attribute must be a space-separated list of <a href="/en-US/docs/Web/HTML/Attributes/rel">link type values</a>.</p>
2432    ///   
2433    pub rel: core::option::Option<AttributeValueOwned>,
2434    ///
2435    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
2436    ///   
2437    pub role: core::option::Option<AttributeValueOwned>,
2438    ///
2439    ///     <p>
2440    ///       This attribute defines the sizes of the icons for visual media contained in the resource.
2441    ///       It must be present only if the <a href="#rel"><code>rel</code></a> contains a value of <code>icon</code> or a non-standard type such as Apple's <code>apple-touch-icon</code>.
2442    ///       It may have the following values:
2443    ///     </p>
2444    ///     <ul>
2445    ///       <li><code>any</code>, meaning that the icon can be scaled to any size as it is in a vector format, like <code>image/svg+xml</code>.</li>
2446    ///       <li>a white-space separated list of sizes, each in the format <code>&lt;width in pixels&gt;x&lt;height in pixels&gt;</code> or <code>&lt;width in pixels&gt;X&lt;height in pixels&gt;</code>. Each of these sizes must be contained in the resource.</li>
2447    ///     </ul>
2448    ///     <div class="notecard note" id="sect3">
2449    ///       <p>
2450    ///         <strong>Note:</strong> Most icon formats are only able to store one single icon; therefore, most of the time, the <a href="#sizes"><code>sizes</code></a> attribute contains only one entry.
2451    ///         MS's ICO format does, as well as Apple's ICNS. ICO is more ubiquitous, so you should use this format if cross-browser support is a concern (especially for old IE versions).
2452    ///       </p>
2453    ///     </div>
2454    ///   
2455    pub sizes: core::option::Option<AttributeValueOwned>,
2456    ///
2457    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
2458    ///   
2459    pub slot: core::option::Option<AttributeValueOwned>,
2460    ///
2461    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
2462    ///     <ul>
2463    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
2464    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
2465    ///     </ul>
2466    ///   
2467    pub spellcheck: core::option::Option<AttributeValueOwned>,
2468    ///
2469    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
2470    ///   
2471    pub style: core::option::Option<AttributeValueOwned>,
2472    ///
2473    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
2474    ///     <ul>
2475    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
2476    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
2477    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
2478    ///     </ul>
2479    ///   
2480    pub tabindex: core::option::Option<AttributeValueOwned>,
2481    ///
2482    ///     <p>
2483    ///       The <code>title</code> attribute has special semantics on the <code>&lt;link&gt;</code> element.
2484    ///       When used on a <code>&lt;link rel="stylesheet"&gt;</code> it defines a <a href="/en-US/docs/Web/CSS/Alternative_style_sheets">default or an alternate stylesheet</a>.
2485    ///     </p>
2486    ///   
2487    pub title: core::option::Option<AttributeValueOwned>,
2488    ///
2489    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
2490    ///     <ul>
2491    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
2492    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
2493    ///     </ul>
2494    ///   
2495    pub translate: core::option::Option<AttributeValueOwned>,
2496    ///
2497    ///     <p>
2498    ///       This attribute is used to define the type of the content linked to.
2499    ///       The value of the attribute should be a MIME type such as <strong>text/html</strong>, <strong>text/css</strong>, and so on.
2500    ///       The common use of this attribute is to define the type of stylesheet being referenced (such as <strong>text/css</strong>), but given that CSS is the only stylesheet language used on the web, not only is it possible to omit the <code>type</code> attribute, but is actually now recommended practice.
2501    ///       It is also used on <code>rel="preload"</code> link types, to make sure the browser only downloads file types that it supports.
2502    ///     </p>
2503    ///   
2504    pub type_: core::option::Option<AttributeValueOwned>,
2505    ///
2506    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
2507    ///     <ul>
2508    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
2509    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
2510    ///     </ul>
2511    ///   
2512    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
2513}
2514#[allow(deprecated)]
2515#[cfg(feature = "alloc")]
2516impl LinkOwned {
2517    /// Get the tag name of the element.
2518    /// This is the same as the name of the struct, in kebab-case.
2519    pub fn tag() -> &'static str {
2520        "link"
2521    }
2522    /// Sets an attribute of the element.
2523    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
2524    /// If the `alloc` feature is disabled, this function will silently fail.
2525    ///
2526    /// # Note
2527    /// This only works when the attribute is lowercase.
2528    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
2529        match name {
2530            "accesskey" => self.accesskey = Some(value.into()),
2531            "as_" => self.as_ = Some(value.into()),
2532            "autocapitalize" => self.autocapitalize = Some(value.into()),
2533            "autofocus" => self.autofocus = Some(value.into()),
2534            "blocking" => self.blocking = Some(value.into()),
2535            "class" => self.class = Some(value.into()),
2536            "contenteditable" => self.contenteditable = Some(value.into()),
2537            "contextmenu" => self.contextmenu = Some(value.into()),
2538            "crossorigin" => self.crossorigin = Some(value.into()),
2539            "dir" => self.dir = Some(value.into()),
2540            "disabled" => self.disabled = Some(value.into()),
2541            "draggable" => self.draggable = Some(value.into()),
2542            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
2543            "exportparts" => self.exportparts = Some(value.into()),
2544            "fetchpriority" => self.fetchpriority = Some(value.into()),
2545            "hidden" => self.hidden = Some(value.into()),
2546            "href" => self.href = Some(value.into()),
2547            "hreflang" => self.hreflang = Some(value.into()),
2548            "id" => self.id = Some(value.into()),
2549            "imagesizes" => self.imagesizes = Some(value.into()),
2550            "imagesrcset" => self.imagesrcset = Some(value.into()),
2551            "inert" => self.inert = Some(value.into()),
2552            "inputmode" => self.inputmode = Some(value.into()),
2553            "integrity" => self.integrity = Some(value.into()),
2554            "is" => self.is = Some(value.into()),
2555            "itemid" => self.itemid = Some(value.into()),
2556            "itemprop" => self.itemprop = Some(value.into()),
2557            "itemref" => self.itemref = Some(value.into()),
2558            "itemscope" => self.itemscope = Some(value.into()),
2559            "itemtype" => self.itemtype = Some(value.into()),
2560            "lang" => self.lang = Some(value.into()),
2561            "media" => self.media = Some(value.into()),
2562            "nonce" => self.nonce = Some(value.into()),
2563            "part" => self.part = Some(value.into()),
2564            "popover" => self.popover = Some(value.into()),
2565            "prefetch" => self.prefetch = Some(value.into()),
2566            "referrerpolicy" => self.referrerpolicy = Some(value.into()),
2567            "rel" => self.rel = Some(value.into()),
2568            "role" => self.role = Some(value.into()),
2569            "sizes" => self.sizes = Some(value.into()),
2570            "slot" => self.slot = Some(value.into()),
2571            "spellcheck" => self.spellcheck = Some(value.into()),
2572            "style" => self.style = Some(value.into()),
2573            "tabindex" => self.tabindex = Some(value.into()),
2574            "title" => self.title = Some(value.into()),
2575            "translate" => self.translate = Some(value.into()),
2576            "type_" => self.type_ = Some(value.into()),
2577            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
2578            #[cfg(feature = "alloc")]
2579            _ => {
2580                #[allow(clippy::useless_conversion)]
2581                self.extra.insert(name.into(), value.into());
2582            }
2583            #[cfg(not(feature = "alloc"))]
2584            _ => {}
2585        }
2586    }
2587}
2588/// The <strong><code>&lt;meta&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents <a href="/en-US/docs/Glossary/Metadata">metadata</a> that cannot be represented by other HTML meta-related elements, like <a href="/en-US/docs/Web/HTML/Element/base"><code>&lt;base&gt;</code></a>, <a href="/en-US/docs/Web/HTML/Element/link"><code>&lt;link&gt;</code></a>, <a href="/en-US/docs/Web/HTML/Element/script"><code>&lt;script&gt;</code></a>, <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> or <a href="/en-US/docs/Web/HTML/Element/title"><code>&lt;title&gt;</code></a>.
2589///
2590/// The type of metadata provided by the <code>&lt;meta&gt;</code> element can be one of the following:
2591///
2592/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta>
2593
2594#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
2595pub struct Meta<'life> {
2596    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
2597    ///   
2598    pub accesskey: core::option::Option<AttributeValue<'life>>,
2599    ///
2600    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
2601    ///     <ul>
2602    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
2603    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
2604    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
2605    ///       <li><code>characters</code>, all letters should default to uppercase</li>
2606    ///     </ul>
2607    ///   
2608    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
2609    ///
2610    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
2611    ///   
2612    pub autofocus: core::option::Option<AttributeValue<'life>>,
2613    ///
2614    ///     <p>This attribute declares the document's character encoding. If the attribute is present, its value must be an ASCII case-insensitive match for the string "<code>utf-8</code>", because UTF-8 is the only valid encoding for HTML5 documents. <code>&lt;meta&gt;</code> elements which declare a character encoding must be located entirely within the first 1024 bytes of the document.</p>
2615    ///   
2616    pub charset: core::option::Option<AttributeValue<'life>>,
2617    ///
2618    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
2619    ///   
2620    pub class: core::option::Option<AttributeValue<'life>>,
2621    ///
2622    ///     <p>This attribute contains the value for the <a href="#http-equiv"><code>http-equiv</code></a> or <a href="#name"><code>name</code></a> attribute, depending on which is used.</p>
2623    ///   
2624    pub content: core::option::Option<AttributeValue<'life>>,
2625    ///
2626    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
2627    ///     <ul>
2628    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
2629    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
2630    ///     </ul>
2631    ///   
2632    pub contenteditable: core::option::Option<AttributeValue<'life>>,
2633    ///
2634    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
2635    ///   
2636    pub contextmenu: core::option::Option<AttributeValue<'life>>,
2637    ///
2638    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
2639    ///   
2640    #[cfg(feature = "alloc")]
2641    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
2642    ///
2643    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
2644    ///     <ul>
2645    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
2646    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
2647    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
2648    ///     </ul>
2649    ///   
2650    pub dir: core::option::Option<AttributeValue<'life>>,
2651    ///
2652    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
2653    ///     <ul>
2654    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
2655    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
2656    ///     </ul>
2657    ///   
2658    pub draggable: core::option::Option<AttributeValue<'life>>,
2659    ///
2660    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
2661    ///   
2662    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
2663    ///
2664    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
2665    ///   
2666    pub exportparts: core::option::Option<AttributeValue<'life>>,
2667    /// /// Extra attributes of the element.
2668
2669    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
2670    #[cfg(feature = "alloc")]
2671    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
2672    ///
2673    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
2674    ///   
2675    pub hidden: core::option::Option<AttributeValue<'life>>,
2676    ///
2677    ///     <p>Defines a pragma directive. The attribute is named <code>http-equiv(alent)</code> because all the allowed values are names of particular HTTP headers:</p>
2678    ///     <ul>
2679    ///       <li>
2680    ///         <code>content-security-policy</code>
2681    ///         Allows page authors to define a <a href="/en-US/docs/Web/HTTP/Headers/Content-Security-Policy">content policy</a> for the current page. Content policies mostly specify allowed server origins and script endpoints which help guard against cross-site scripting attacks.
2682    ///       </li>
2683    ///       <li>
2684    ///         <code>content-type</code>
2685    ///         Declares the <a href="/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types">MIME type</a> and the document's character encoding. The <code>content</code> attribute must have the value "<code>text/html; charset=utf-8</code>" if specified. This is equivalent to a <code>&lt;meta&gt;</code> element with the <a href="#charset"><code>charset</code></a> attribute specified and carries the same restriction on placement within the document. <strong>Note:</strong> Can only be used in documents served with a <code>text/html</code> — not in documents served with an XML MIME type.
2686    ///       </li>
2687    ///       <li>
2688    ///         <code>default-style</code>
2689    ///         Sets the name of the default <a href="/en-US/docs/Web/CSS">CSS style sheet</a> set.
2690    ///       </li>
2691    ///       <li>
2692    ///         <code>x-ua-compatible</code>
2693    ///         If specified, the <code>content</code> attribute must have the value "<code>IE=edge</code>". User agents are required to ignore this pragma.
2694    ///       </li>
2695    ///       <li><code>refresh</code> This instruction specifies:
2696    ///         <ul>
2697    ///           <li>The number of seconds until the page should be reloaded - only if the <a href="#content"><code>content</code></a> attribute contains a non-negative integer.</li>
2698    ///           <li>The number of seconds until the page should redirect to another - only if the <a href="#content"><code>content</code></a> attribute contains a non-negative integer followed by the string '<code>;url=</code>', and a valid URL.</li>
2699    ///         </ul>
2700    ///         <div id="sect2" class="notecard warning">
2701    ///           <p><strong>Warning:</strong></p>
2702    ///           <p>Pages set with a <code>refresh</code> value run the risk of having the time interval being too short. People navigating with the aid of assistive technology such as a screen reader may be unable to read through and understand the page's content before being automatically redirected. The abrupt, unannounced updating of the page content may also be disorienting for people experiencing low vision conditions.</p>
2703    ///           <ul>
2704    ///             <li><a href="/en-US/docs/Web/Accessibility/Understanding_WCAG/Operable#guideline_2.2_%E2%80%94_enough_time_provide_users_enough_time_to_read_and_use_content">MDN Understanding WCAG, Guideline 2.1 explanations</a></li>
2705    ///             <li><a href="/en-US/docs/Web/Accessibility/Understanding_WCAG/Understandable#guideline_3.2_%E2%80%94_predictable_make_web_pages_appear_and_operate_in_predictable_ways">MDN Understanding WCAG, Guideline 3.1 explanations</a></li>
2706    ///             <li><a class="external" target="_blank" href="https://www.w3.org/TR/UNDERSTANDING-WCAG20/time-limits-required-behaviors.html">Understanding Success Criterion 2.2.1 | W3C Understanding WCAG 2.0</a></li>
2707    ///             <li><a class="external" href="https://www.w3.org/TR/UNDERSTANDING-WCAG20/time-limits-postponed.html" target="_blank">Understanding Success Criterion 2.2.4 | W3C Understanding WCAG 2.0</a></li>
2708    ///             <li><a class="external" href="https://www.w3.org/TR/UNDERSTANDING-WCAG20/consistent-behavior-no-extreme-changes-context.html" target="_blank">Understanding Success Criterion 3.2.5 | W3C Understanding WCAG 2.0</a></li>
2709    ///           </ul>
2710    ///         </div>
2711    ///       </li>
2712    ///     </ul>
2713    ///   
2714    pub http_equiv: core::option::Option<AttributeValue<'life>>,
2715    ///
2716    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
2717    ///   
2718    pub id: core::option::Option<AttributeValue<'life>>,
2719    ///
2720    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
2721    ///   
2722    pub inert: core::option::Option<AttributeValue<'life>>,
2723    ///
2724    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
2725    ///   
2726    pub inputmode: core::option::Option<AttributeValue<'life>>,
2727    ///
2728    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
2729    ///   
2730    pub is: core::option::Option<AttributeValue<'life>>,
2731    ///
2732    ///     <p>The unique, global identifier of an item.</p>
2733    ///   
2734    pub itemid: core::option::Option<AttributeValue<'life>>,
2735    ///
2736    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
2737    ///   
2738    pub itemprop: core::option::Option<AttributeValue<'life>>,
2739    ///
2740    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
2741    ///   
2742    pub itemref: core::option::Option<AttributeValue<'life>>,
2743    ///
2744    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
2745    ///   
2746    pub itemscope: core::option::Option<AttributeValue<'life>>,
2747    ///
2748    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
2749    ///   
2750    pub itemtype: core::option::Option<AttributeValue<'life>>,
2751    ///
2752    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
2753    ///   
2754    pub lang: core::option::Option<AttributeValue<'life>>,
2755    ///
2756    ///     <p>The <code>name</code> and <code>content</code> attributes can be used together to provide document metadata in terms of name-value pairs, with the <code>name</code> attribute giving the metadata name, and the <code>content</code> attribute giving the value.</p>
2757    ///     <p>See <a href="/en-US/docs/Web/HTML/Element/meta/name">standard metadata names</a> for details about the set of standard metadata names defined in the HTML specification.</p>
2758    ///   
2759    pub name: core::option::Option<AttributeValue<'life>>,
2760    ///
2761    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
2762    ///   
2763    pub nonce: core::option::Option<AttributeValue<'life>>,
2764    ///
2765    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
2766    ///   
2767    pub part: core::option::Option<AttributeValue<'life>>,
2768    ///
2769    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
2770    ///   
2771    pub popover: core::option::Option<AttributeValue<'life>>,
2772    ///
2773    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
2774    ///   
2775    pub role: core::option::Option<AttributeValue<'life>>,
2776    ///
2777    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
2778    ///   
2779    pub slot: core::option::Option<AttributeValue<'life>>,
2780    ///
2781    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
2782    ///     <ul>
2783    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
2784    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
2785    ///     </ul>
2786    ///   
2787    pub spellcheck: core::option::Option<AttributeValue<'life>>,
2788    ///
2789    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
2790    ///   
2791    pub style: core::option::Option<AttributeValue<'life>>,
2792    ///
2793    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
2794    ///     <ul>
2795    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
2796    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
2797    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
2798    ///     </ul>
2799    ///   
2800    pub tabindex: core::option::Option<AttributeValue<'life>>,
2801    ///
2802    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
2803    ///   
2804    pub title: core::option::Option<AttributeValue<'life>>,
2805    ///
2806    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
2807    ///     <ul>
2808    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
2809    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
2810    ///     </ul>
2811    ///   
2812    pub translate: core::option::Option<AttributeValue<'life>>,
2813    ///
2814    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
2815    ///     <ul>
2816    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
2817    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
2818    ///     </ul>
2819    ///   
2820    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
2821}
2822#[allow(deprecated)]
2823
2824impl<'life> Meta<'life> {
2825    /// Get the tag name of the element.
2826    /// This is the same as the name of the struct, in kebab-case.
2827    pub fn tag() -> &'static str {
2828        "meta"
2829    }
2830    /// Sets an attribute of the element.
2831    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
2832    /// If the `alloc` feature is disabled, this function will silently fail.
2833    ///
2834    /// # Note
2835    /// This only works when the attribute is lowercase.
2836    pub fn set_attr(
2837        &mut self,
2838        name: &'life str,
2839        value: impl core::convert::Into<AttributeValue<'life>>,
2840    ) {
2841        match name {
2842            "accesskey" => self.accesskey = Some(value.into()),
2843            "autocapitalize" => self.autocapitalize = Some(value.into()),
2844            "autofocus" => self.autofocus = Some(value.into()),
2845            "charset" => self.charset = Some(value.into()),
2846            "class" => self.class = Some(value.into()),
2847            "content" => self.content = Some(value.into()),
2848            "contenteditable" => self.contenteditable = Some(value.into()),
2849            "contextmenu" => self.contextmenu = Some(value.into()),
2850            "dir" => self.dir = Some(value.into()),
2851            "draggable" => self.draggable = Some(value.into()),
2852            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
2853            "exportparts" => self.exportparts = Some(value.into()),
2854            "hidden" => self.hidden = Some(value.into()),
2855            "http_equiv" => self.http_equiv = Some(value.into()),
2856            "id" => self.id = Some(value.into()),
2857            "inert" => self.inert = Some(value.into()),
2858            "inputmode" => self.inputmode = Some(value.into()),
2859            "is" => self.is = Some(value.into()),
2860            "itemid" => self.itemid = Some(value.into()),
2861            "itemprop" => self.itemprop = Some(value.into()),
2862            "itemref" => self.itemref = Some(value.into()),
2863            "itemscope" => self.itemscope = Some(value.into()),
2864            "itemtype" => self.itemtype = Some(value.into()),
2865            "lang" => self.lang = Some(value.into()),
2866            "name" => self.name = Some(value.into()),
2867            "nonce" => self.nonce = Some(value.into()),
2868            "part" => self.part = Some(value.into()),
2869            "popover" => self.popover = Some(value.into()),
2870            "role" => self.role = Some(value.into()),
2871            "slot" => self.slot = Some(value.into()),
2872            "spellcheck" => self.spellcheck = Some(value.into()),
2873            "style" => self.style = Some(value.into()),
2874            "tabindex" => self.tabindex = Some(value.into()),
2875            "title" => self.title = Some(value.into()),
2876            "translate" => self.translate = Some(value.into()),
2877            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
2878            #[cfg(feature = "alloc")]
2879            _ => {
2880                #[allow(clippy::useless_conversion)]
2881                self.extra.insert(name.into(), value.into());
2882            }
2883            #[cfg(not(feature = "alloc"))]
2884            _ => {}
2885        }
2886    }
2887}
2888/// The <strong><code>&lt;meta&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents <a href="/en-US/docs/Glossary/Metadata">metadata</a> that cannot be represented by other HTML meta-related elements, like <a href="/en-US/docs/Web/HTML/Element/base"><code>&lt;base&gt;</code></a>, <a href="/en-US/docs/Web/HTML/Element/link"><code>&lt;link&gt;</code></a>, <a href="/en-US/docs/Web/HTML/Element/script"><code>&lt;script&gt;</code></a>, <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> or <a href="/en-US/docs/Web/HTML/Element/title"><code>&lt;title&gt;</code></a>.
2889///
2890/// The type of metadata provided by the <code>&lt;meta&gt;</code> element can be one of the following:
2891///
2892/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta>
2893
2894#[cfg(feature = "alloc")]
2895#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
2896pub struct MetaOwned {
2897    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
2898    ///   
2899    pub accesskey: core::option::Option<AttributeValueOwned>,
2900    ///
2901    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
2902    ///     <ul>
2903    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
2904    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
2905    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
2906    ///       <li><code>characters</code>, all letters should default to uppercase</li>
2907    ///     </ul>
2908    ///   
2909    pub autocapitalize: core::option::Option<AttributeValueOwned>,
2910    ///
2911    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
2912    ///   
2913    pub autofocus: core::option::Option<AttributeValueOwned>,
2914    ///
2915    ///     <p>This attribute declares the document's character encoding. If the attribute is present, its value must be an ASCII case-insensitive match for the string "<code>utf-8</code>", because UTF-8 is the only valid encoding for HTML5 documents. <code>&lt;meta&gt;</code> elements which declare a character encoding must be located entirely within the first 1024 bytes of the document.</p>
2916    ///   
2917    pub charset: core::option::Option<AttributeValueOwned>,
2918    ///
2919    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
2920    ///   
2921    pub class: core::option::Option<AttributeValueOwned>,
2922    ///
2923    ///     <p>This attribute contains the value for the <a href="#http-equiv"><code>http-equiv</code></a> or <a href="#name"><code>name</code></a> attribute, depending on which is used.</p>
2924    ///   
2925    pub content: core::option::Option<AttributeValueOwned>,
2926    ///
2927    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
2928    ///     <ul>
2929    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
2930    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
2931    ///     </ul>
2932    ///   
2933    pub contenteditable: core::option::Option<AttributeValueOwned>,
2934    ///
2935    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
2936    ///   
2937    pub contextmenu: core::option::Option<AttributeValueOwned>,
2938    ///
2939    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
2940    ///   
2941    #[cfg(feature = "alloc")]
2942    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
2943    ///
2944    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
2945    ///     <ul>
2946    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
2947    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
2948    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
2949    ///     </ul>
2950    ///   
2951    pub dir: core::option::Option<AttributeValueOwned>,
2952    ///
2953    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
2954    ///     <ul>
2955    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
2956    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
2957    ///     </ul>
2958    ///   
2959    pub draggable: core::option::Option<AttributeValueOwned>,
2960    ///
2961    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
2962    ///   
2963    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
2964    ///
2965    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
2966    ///   
2967    pub exportparts: core::option::Option<AttributeValueOwned>,
2968    /// /// Extra attributes of the element.
2969
2970    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
2971    #[cfg(feature = "alloc")]
2972    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
2973    ///
2974    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
2975    ///   
2976    pub hidden: core::option::Option<AttributeValueOwned>,
2977    ///
2978    ///     <p>Defines a pragma directive. The attribute is named <code>http-equiv(alent)</code> because all the allowed values are names of particular HTTP headers:</p>
2979    ///     <ul>
2980    ///       <li>
2981    ///         <code>content-security-policy</code>
2982    ///         Allows page authors to define a <a href="/en-US/docs/Web/HTTP/Headers/Content-Security-Policy">content policy</a> for the current page. Content policies mostly specify allowed server origins and script endpoints which help guard against cross-site scripting attacks.
2983    ///       </li>
2984    ///       <li>
2985    ///         <code>content-type</code>
2986    ///         Declares the <a href="/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types">MIME type</a> and the document's character encoding. The <code>content</code> attribute must have the value "<code>text/html; charset=utf-8</code>" if specified. This is equivalent to a <code>&lt;meta&gt;</code> element with the <a href="#charset"><code>charset</code></a> attribute specified and carries the same restriction on placement within the document. <strong>Note:</strong> Can only be used in documents served with a <code>text/html</code> — not in documents served with an XML MIME type.
2987    ///       </li>
2988    ///       <li>
2989    ///         <code>default-style</code>
2990    ///         Sets the name of the default <a href="/en-US/docs/Web/CSS">CSS style sheet</a> set.
2991    ///       </li>
2992    ///       <li>
2993    ///         <code>x-ua-compatible</code>
2994    ///         If specified, the <code>content</code> attribute must have the value "<code>IE=edge</code>". User agents are required to ignore this pragma.
2995    ///       </li>
2996    ///       <li><code>refresh</code> This instruction specifies:
2997    ///         <ul>
2998    ///           <li>The number of seconds until the page should be reloaded - only if the <a href="#content"><code>content</code></a> attribute contains a non-negative integer.</li>
2999    ///           <li>The number of seconds until the page should redirect to another - only if the <a href="#content"><code>content</code></a> attribute contains a non-negative integer followed by the string '<code>;url=</code>', and a valid URL.</li>
3000    ///         </ul>
3001    ///         <div id="sect2" class="notecard warning">
3002    ///           <p><strong>Warning:</strong></p>
3003    ///           <p>Pages set with a <code>refresh</code> value run the risk of having the time interval being too short. People navigating with the aid of assistive technology such as a screen reader may be unable to read through and understand the page's content before being automatically redirected. The abrupt, unannounced updating of the page content may also be disorienting for people experiencing low vision conditions.</p>
3004    ///           <ul>
3005    ///             <li><a href="/en-US/docs/Web/Accessibility/Understanding_WCAG/Operable#guideline_2.2_%E2%80%94_enough_time_provide_users_enough_time_to_read_and_use_content">MDN Understanding WCAG, Guideline 2.1 explanations</a></li>
3006    ///             <li><a href="/en-US/docs/Web/Accessibility/Understanding_WCAG/Understandable#guideline_3.2_%E2%80%94_predictable_make_web_pages_appear_and_operate_in_predictable_ways">MDN Understanding WCAG, Guideline 3.1 explanations</a></li>
3007    ///             <li><a class="external" target="_blank" href="https://www.w3.org/TR/UNDERSTANDING-WCAG20/time-limits-required-behaviors.html">Understanding Success Criterion 2.2.1 | W3C Understanding WCAG 2.0</a></li>
3008    ///             <li><a class="external" href="https://www.w3.org/TR/UNDERSTANDING-WCAG20/time-limits-postponed.html" target="_blank">Understanding Success Criterion 2.2.4 | W3C Understanding WCAG 2.0</a></li>
3009    ///             <li><a class="external" href="https://www.w3.org/TR/UNDERSTANDING-WCAG20/consistent-behavior-no-extreme-changes-context.html" target="_blank">Understanding Success Criterion 3.2.5 | W3C Understanding WCAG 2.0</a></li>
3010    ///           </ul>
3011    ///         </div>
3012    ///       </li>
3013    ///     </ul>
3014    ///   
3015    pub http_equiv: core::option::Option<AttributeValueOwned>,
3016    ///
3017    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
3018    ///   
3019    pub id: core::option::Option<AttributeValueOwned>,
3020    ///
3021    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
3022    ///   
3023    pub inert: core::option::Option<AttributeValueOwned>,
3024    ///
3025    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
3026    ///   
3027    pub inputmode: core::option::Option<AttributeValueOwned>,
3028    ///
3029    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
3030    ///   
3031    pub is: core::option::Option<AttributeValueOwned>,
3032    ///
3033    ///     <p>The unique, global identifier of an item.</p>
3034    ///   
3035    pub itemid: core::option::Option<AttributeValueOwned>,
3036    ///
3037    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
3038    ///   
3039    pub itemprop: core::option::Option<AttributeValueOwned>,
3040    ///
3041    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
3042    ///   
3043    pub itemref: core::option::Option<AttributeValueOwned>,
3044    ///
3045    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
3046    ///   
3047    pub itemscope: core::option::Option<AttributeValueOwned>,
3048    ///
3049    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
3050    ///   
3051    pub itemtype: core::option::Option<AttributeValueOwned>,
3052    ///
3053    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
3054    ///   
3055    pub lang: core::option::Option<AttributeValueOwned>,
3056    ///
3057    ///     <p>The <code>name</code> and <code>content</code> attributes can be used together to provide document metadata in terms of name-value pairs, with the <code>name</code> attribute giving the metadata name, and the <code>content</code> attribute giving the value.</p>
3058    ///     <p>See <a href="/en-US/docs/Web/HTML/Element/meta/name">standard metadata names</a> for details about the set of standard metadata names defined in the HTML specification.</p>
3059    ///   
3060    pub name: core::option::Option<AttributeValueOwned>,
3061    ///
3062    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
3063    ///   
3064    pub nonce: core::option::Option<AttributeValueOwned>,
3065    ///
3066    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
3067    ///   
3068    pub part: core::option::Option<AttributeValueOwned>,
3069    ///
3070    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
3071    ///   
3072    pub popover: core::option::Option<AttributeValueOwned>,
3073    ///
3074    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
3075    ///   
3076    pub role: core::option::Option<AttributeValueOwned>,
3077    ///
3078    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
3079    ///   
3080    pub slot: core::option::Option<AttributeValueOwned>,
3081    ///
3082    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
3083    ///     <ul>
3084    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
3085    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
3086    ///     </ul>
3087    ///   
3088    pub spellcheck: core::option::Option<AttributeValueOwned>,
3089    ///
3090    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
3091    ///   
3092    pub style: core::option::Option<AttributeValueOwned>,
3093    ///
3094    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
3095    ///     <ul>
3096    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
3097    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
3098    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
3099    ///     </ul>
3100    ///   
3101    pub tabindex: core::option::Option<AttributeValueOwned>,
3102    ///
3103    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
3104    ///   
3105    pub title: core::option::Option<AttributeValueOwned>,
3106    ///
3107    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
3108    ///     <ul>
3109    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
3110    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
3111    ///     </ul>
3112    ///   
3113    pub translate: core::option::Option<AttributeValueOwned>,
3114    ///
3115    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
3116    ///     <ul>
3117    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
3118    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
3119    ///     </ul>
3120    ///   
3121    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
3122}
3123#[allow(deprecated)]
3124#[cfg(feature = "alloc")]
3125impl MetaOwned {
3126    /// Get the tag name of the element.
3127    /// This is the same as the name of the struct, in kebab-case.
3128    pub fn tag() -> &'static str {
3129        "meta"
3130    }
3131    /// Sets an attribute of the element.
3132    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
3133    /// If the `alloc` feature is disabled, this function will silently fail.
3134    ///
3135    /// # Note
3136    /// This only works when the attribute is lowercase.
3137    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
3138        match name {
3139            "accesskey" => self.accesskey = Some(value.into()),
3140            "autocapitalize" => self.autocapitalize = Some(value.into()),
3141            "autofocus" => self.autofocus = Some(value.into()),
3142            "charset" => self.charset = Some(value.into()),
3143            "class" => self.class = Some(value.into()),
3144            "content" => self.content = Some(value.into()),
3145            "contenteditable" => self.contenteditable = Some(value.into()),
3146            "contextmenu" => self.contextmenu = Some(value.into()),
3147            "dir" => self.dir = Some(value.into()),
3148            "draggable" => self.draggable = Some(value.into()),
3149            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
3150            "exportparts" => self.exportparts = Some(value.into()),
3151            "hidden" => self.hidden = Some(value.into()),
3152            "http_equiv" => self.http_equiv = Some(value.into()),
3153            "id" => self.id = Some(value.into()),
3154            "inert" => self.inert = Some(value.into()),
3155            "inputmode" => self.inputmode = Some(value.into()),
3156            "is" => self.is = Some(value.into()),
3157            "itemid" => self.itemid = Some(value.into()),
3158            "itemprop" => self.itemprop = Some(value.into()),
3159            "itemref" => self.itemref = Some(value.into()),
3160            "itemscope" => self.itemscope = Some(value.into()),
3161            "itemtype" => self.itemtype = Some(value.into()),
3162            "lang" => self.lang = Some(value.into()),
3163            "name" => self.name = Some(value.into()),
3164            "nonce" => self.nonce = Some(value.into()),
3165            "part" => self.part = Some(value.into()),
3166            "popover" => self.popover = Some(value.into()),
3167            "role" => self.role = Some(value.into()),
3168            "slot" => self.slot = Some(value.into()),
3169            "spellcheck" => self.spellcheck = Some(value.into()),
3170            "style" => self.style = Some(value.into()),
3171            "tabindex" => self.tabindex = Some(value.into()),
3172            "title" => self.title = Some(value.into()),
3173            "translate" => self.translate = Some(value.into()),
3174            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
3175            #[cfg(feature = "alloc")]
3176            _ => {
3177                #[allow(clippy::useless_conversion)]
3178                self.extra.insert(name.into(), value.into());
3179            }
3180            #[cfg(not(feature = "alloc"))]
3181            _ => {}
3182        }
3183    }
3184}
3185/// The <strong><code>&lt;style&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element contains style information for a document, or part of a document. It contains CSS, which is applied to the contents of the document containing the <code>&lt;style&gt;</code> element.
3186///
3187/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/style>
3188
3189#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
3190pub struct Style<'life> {
3191    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
3192    ///   
3193    pub accesskey: core::option::Option<AttributeValue<'life>>,
3194    ///
3195    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
3196    ///     <ul>
3197    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
3198    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
3199    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
3200    ///       <li><code>characters</code>, all letters should default to uppercase</li>
3201    ///     </ul>
3202    ///   
3203    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
3204    ///
3205    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
3206    ///   
3207    pub autofocus: core::option::Option<AttributeValue<'life>>,
3208    ///
3209    ///     <p>This attribute explicitly indicates that certain operations should be blocked on the fetching of critical subresources. <a href="/en-US/docs/Web/CSS/@import"><code>@import</code></a>-ed stylesheets are generally considered as critical subresources, whereas <a href="/en-US/docs/Web/CSS/background-image"><code>background-image</code></a> and fonts are not.</p>
3210    ///     <ul>
3211    ///       <li><code>render</code>: The rendering of content on the screen is blocked.</li>
3212    ///     </ul>
3213    ///   
3214    pub blocking: core::option::Option<AttributeValue<'life>>,
3215    ///
3216    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
3217    ///   
3218    pub class: core::option::Option<AttributeValue<'life>>,
3219    ///
3220    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
3221    ///     <ul>
3222    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
3223    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
3224    ///     </ul>
3225    ///   
3226    pub contenteditable: core::option::Option<AttributeValue<'life>>,
3227    ///
3228    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
3229    ///   
3230    pub contextmenu: core::option::Option<AttributeValue<'life>>,
3231    ///
3232    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
3233    ///   
3234    #[cfg(feature = "alloc")]
3235    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
3236    ///
3237    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
3238    ///     <ul>
3239    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
3240    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
3241    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
3242    ///     </ul>
3243    ///   
3244    pub dir: core::option::Option<AttributeValue<'life>>,
3245    ///
3246    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
3247    ///     <ul>
3248    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
3249    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
3250    ///     </ul>
3251    ///   
3252    pub draggable: core::option::Option<AttributeValue<'life>>,
3253    ///
3254    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
3255    ///   
3256    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
3257    ///
3258    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
3259    ///   
3260    pub exportparts: core::option::Option<AttributeValue<'life>>,
3261    /// /// Extra attributes of the element.
3262
3263    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
3264    #[cfg(feature = "alloc")]
3265    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
3266    ///
3267    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
3268    ///   
3269    pub hidden: core::option::Option<AttributeValue<'life>>,
3270    ///
3271    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
3272    ///   
3273    pub id: core::option::Option<AttributeValue<'life>>,
3274    ///
3275    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
3276    ///   
3277    pub inert: core::option::Option<AttributeValue<'life>>,
3278    ///
3279    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
3280    ///   
3281    pub inputmode: core::option::Option<AttributeValue<'life>>,
3282    ///
3283    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
3284    ///   
3285    pub is: core::option::Option<AttributeValue<'life>>,
3286    ///
3287    ///     <p>The unique, global identifier of an item.</p>
3288    ///   
3289    pub itemid: core::option::Option<AttributeValue<'life>>,
3290    ///
3291    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
3292    ///   
3293    pub itemprop: core::option::Option<AttributeValue<'life>>,
3294    ///
3295    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
3296    ///   
3297    pub itemref: core::option::Option<AttributeValue<'life>>,
3298    ///
3299    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
3300    ///   
3301    pub itemscope: core::option::Option<AttributeValue<'life>>,
3302    ///
3303    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
3304    ///   
3305    pub itemtype: core::option::Option<AttributeValue<'life>>,
3306    ///
3307    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
3308    ///   
3309    pub lang: core::option::Option<AttributeValue<'life>>,
3310    ///
3311    ///     <p>This attribute defines which media the style should be applied to. Its value is a <a href="/en-US/docs/Web/CSS/Media_Queries/Using_media_queries">media query</a>, which defaults to <code>all</code> if the attribute is missing.</p>
3312    ///   
3313    pub media: core::option::Option<AttributeValue<'life>>,
3314    ///
3315    ///     <p>A cryptographic nonce (number used once) used to allow inline styles in a <a href="/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/style-src">style-src Content-Security-Policy</a>. 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.</p>
3316    ///   
3317    pub nonce: core::option::Option<AttributeValue<'life>>,
3318    ///
3319    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
3320    ///   
3321    pub part: core::option::Option<AttributeValue<'life>>,
3322    ///
3323    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
3324    ///   
3325    pub popover: core::option::Option<AttributeValue<'life>>,
3326    ///
3327    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
3328    ///   
3329    pub role: core::option::Option<AttributeValue<'life>>,
3330    ///
3331    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
3332    ///   
3333    pub slot: core::option::Option<AttributeValue<'life>>,
3334    ///
3335    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
3336    ///     <ul>
3337    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
3338    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
3339    ///     </ul>
3340    ///   
3341    pub spellcheck: core::option::Option<AttributeValue<'life>>,
3342    ///
3343    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
3344    ///   
3345    pub style: core::option::Option<AttributeValue<'life>>,
3346    ///
3347    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
3348    ///     <ul>
3349    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
3350    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
3351    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
3352    ///     </ul>
3353    ///   
3354    pub tabindex: core::option::Option<AttributeValue<'life>>,
3355    ///
3356    ///     <p>This attribute specifies <a href="/en-US/docs/Web/CSS/Alternative_style_sheets">alternative style sheet</a> sets.</p>
3357    ///   
3358    pub title: core::option::Option<AttributeValue<'life>>,
3359    ///
3360    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
3361    ///     <ul>
3362    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
3363    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
3364    ///     </ul>
3365    ///   
3366    pub translate: core::option::Option<AttributeValue<'life>>,
3367    ///
3368    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
3369    ///     <ul>
3370    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
3371    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
3372    ///     </ul>
3373    ///   
3374    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
3375}
3376#[allow(deprecated)]
3377
3378impl<'life> Style<'life> {
3379    /// Get the tag name of the element.
3380    /// This is the same as the name of the struct, in kebab-case.
3381    pub fn tag() -> &'static str {
3382        "style"
3383    }
3384    /// Sets an attribute of the element.
3385    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
3386    /// If the `alloc` feature is disabled, this function will silently fail.
3387    ///
3388    /// # Note
3389    /// This only works when the attribute is lowercase.
3390    pub fn set_attr(
3391        &mut self,
3392        name: &'life str,
3393        value: impl core::convert::Into<AttributeValue<'life>>,
3394    ) {
3395        match name {
3396            "accesskey" => self.accesskey = Some(value.into()),
3397            "autocapitalize" => self.autocapitalize = Some(value.into()),
3398            "autofocus" => self.autofocus = Some(value.into()),
3399            "blocking" => self.blocking = Some(value.into()),
3400            "class" => self.class = Some(value.into()),
3401            "contenteditable" => self.contenteditable = Some(value.into()),
3402            "contextmenu" => self.contextmenu = Some(value.into()),
3403            "dir" => self.dir = Some(value.into()),
3404            "draggable" => self.draggable = Some(value.into()),
3405            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
3406            "exportparts" => self.exportparts = Some(value.into()),
3407            "hidden" => self.hidden = Some(value.into()),
3408            "id" => self.id = Some(value.into()),
3409            "inert" => self.inert = Some(value.into()),
3410            "inputmode" => self.inputmode = Some(value.into()),
3411            "is" => self.is = Some(value.into()),
3412            "itemid" => self.itemid = Some(value.into()),
3413            "itemprop" => self.itemprop = Some(value.into()),
3414            "itemref" => self.itemref = Some(value.into()),
3415            "itemscope" => self.itemscope = Some(value.into()),
3416            "itemtype" => self.itemtype = Some(value.into()),
3417            "lang" => self.lang = Some(value.into()),
3418            "media" => self.media = Some(value.into()),
3419            "nonce" => self.nonce = Some(value.into()),
3420            "part" => self.part = Some(value.into()),
3421            "popover" => self.popover = Some(value.into()),
3422            "role" => self.role = Some(value.into()),
3423            "slot" => self.slot = Some(value.into()),
3424            "spellcheck" => self.spellcheck = Some(value.into()),
3425            "style" => self.style = Some(value.into()),
3426            "tabindex" => self.tabindex = Some(value.into()),
3427            "title" => self.title = Some(value.into()),
3428            "translate" => self.translate = Some(value.into()),
3429            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
3430            #[cfg(feature = "alloc")]
3431            _ => {
3432                #[allow(clippy::useless_conversion)]
3433                self.extra.insert(name.into(), value.into());
3434            }
3435            #[cfg(not(feature = "alloc"))]
3436            _ => {}
3437        }
3438    }
3439}
3440/// The <strong><code>&lt;style&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element contains style information for a document, or part of a document. It contains CSS, which is applied to the contents of the document containing the <code>&lt;style&gt;</code> element.
3441///
3442/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/style>
3443
3444#[cfg(feature = "alloc")]
3445#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
3446pub struct StyleOwned {
3447    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
3448    ///   
3449    pub accesskey: core::option::Option<AttributeValueOwned>,
3450    ///
3451    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
3452    ///     <ul>
3453    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
3454    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
3455    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
3456    ///       <li><code>characters</code>, all letters should default to uppercase</li>
3457    ///     </ul>
3458    ///   
3459    pub autocapitalize: core::option::Option<AttributeValueOwned>,
3460    ///
3461    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
3462    ///   
3463    pub autofocus: core::option::Option<AttributeValueOwned>,
3464    ///
3465    ///     <p>This attribute explicitly indicates that certain operations should be blocked on the fetching of critical subresources. <a href="/en-US/docs/Web/CSS/@import"><code>@import</code></a>-ed stylesheets are generally considered as critical subresources, whereas <a href="/en-US/docs/Web/CSS/background-image"><code>background-image</code></a> and fonts are not.</p>
3466    ///     <ul>
3467    ///       <li><code>render</code>: The rendering of content on the screen is blocked.</li>
3468    ///     </ul>
3469    ///   
3470    pub blocking: core::option::Option<AttributeValueOwned>,
3471    ///
3472    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
3473    ///   
3474    pub class: core::option::Option<AttributeValueOwned>,
3475    ///
3476    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
3477    ///     <ul>
3478    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
3479    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
3480    ///     </ul>
3481    ///   
3482    pub contenteditable: core::option::Option<AttributeValueOwned>,
3483    ///
3484    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
3485    ///   
3486    pub contextmenu: core::option::Option<AttributeValueOwned>,
3487    ///
3488    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
3489    ///   
3490    #[cfg(feature = "alloc")]
3491    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
3492    ///
3493    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
3494    ///     <ul>
3495    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
3496    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
3497    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
3498    ///     </ul>
3499    ///   
3500    pub dir: core::option::Option<AttributeValueOwned>,
3501    ///
3502    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
3503    ///     <ul>
3504    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
3505    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
3506    ///     </ul>
3507    ///   
3508    pub draggable: core::option::Option<AttributeValueOwned>,
3509    ///
3510    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
3511    ///   
3512    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
3513    ///
3514    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
3515    ///   
3516    pub exportparts: core::option::Option<AttributeValueOwned>,
3517    /// /// Extra attributes of the element.
3518
3519    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
3520    #[cfg(feature = "alloc")]
3521    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
3522    ///
3523    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
3524    ///   
3525    pub hidden: core::option::Option<AttributeValueOwned>,
3526    ///
3527    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
3528    ///   
3529    pub id: core::option::Option<AttributeValueOwned>,
3530    ///
3531    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
3532    ///   
3533    pub inert: core::option::Option<AttributeValueOwned>,
3534    ///
3535    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
3536    ///   
3537    pub inputmode: core::option::Option<AttributeValueOwned>,
3538    ///
3539    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
3540    ///   
3541    pub is: core::option::Option<AttributeValueOwned>,
3542    ///
3543    ///     <p>The unique, global identifier of an item.</p>
3544    ///   
3545    pub itemid: core::option::Option<AttributeValueOwned>,
3546    ///
3547    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
3548    ///   
3549    pub itemprop: core::option::Option<AttributeValueOwned>,
3550    ///
3551    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
3552    ///   
3553    pub itemref: core::option::Option<AttributeValueOwned>,
3554    ///
3555    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
3556    ///   
3557    pub itemscope: core::option::Option<AttributeValueOwned>,
3558    ///
3559    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
3560    ///   
3561    pub itemtype: core::option::Option<AttributeValueOwned>,
3562    ///
3563    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
3564    ///   
3565    pub lang: core::option::Option<AttributeValueOwned>,
3566    ///
3567    ///     <p>This attribute defines which media the style should be applied to. Its value is a <a href="/en-US/docs/Web/CSS/Media_Queries/Using_media_queries">media query</a>, which defaults to <code>all</code> if the attribute is missing.</p>
3568    ///   
3569    pub media: core::option::Option<AttributeValueOwned>,
3570    ///
3571    ///     <p>A cryptographic nonce (number used once) used to allow inline styles in a <a href="/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/style-src">style-src Content-Security-Policy</a>. 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.</p>
3572    ///   
3573    pub nonce: core::option::Option<AttributeValueOwned>,
3574    ///
3575    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
3576    ///   
3577    pub part: core::option::Option<AttributeValueOwned>,
3578    ///
3579    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
3580    ///   
3581    pub popover: core::option::Option<AttributeValueOwned>,
3582    ///
3583    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
3584    ///   
3585    pub role: core::option::Option<AttributeValueOwned>,
3586    ///
3587    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
3588    ///   
3589    pub slot: core::option::Option<AttributeValueOwned>,
3590    ///
3591    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
3592    ///     <ul>
3593    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
3594    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
3595    ///     </ul>
3596    ///   
3597    pub spellcheck: core::option::Option<AttributeValueOwned>,
3598    ///
3599    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
3600    ///   
3601    pub style: core::option::Option<AttributeValueOwned>,
3602    ///
3603    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
3604    ///     <ul>
3605    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
3606    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
3607    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
3608    ///     </ul>
3609    ///   
3610    pub tabindex: core::option::Option<AttributeValueOwned>,
3611    ///
3612    ///     <p>This attribute specifies <a href="/en-US/docs/Web/CSS/Alternative_style_sheets">alternative style sheet</a> sets.</p>
3613    ///   
3614    pub title: core::option::Option<AttributeValueOwned>,
3615    ///
3616    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
3617    ///     <ul>
3618    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
3619    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
3620    ///     </ul>
3621    ///   
3622    pub translate: core::option::Option<AttributeValueOwned>,
3623    ///
3624    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
3625    ///     <ul>
3626    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
3627    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
3628    ///     </ul>
3629    ///   
3630    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
3631}
3632#[allow(deprecated)]
3633#[cfg(feature = "alloc")]
3634impl StyleOwned {
3635    /// Get the tag name of the element.
3636    /// This is the same as the name of the struct, in kebab-case.
3637    pub fn tag() -> &'static str {
3638        "style"
3639    }
3640    /// Sets an attribute of the element.
3641    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
3642    /// If the `alloc` feature is disabled, this function will silently fail.
3643    ///
3644    /// # Note
3645    /// This only works when the attribute is lowercase.
3646    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
3647        match name {
3648            "accesskey" => self.accesskey = Some(value.into()),
3649            "autocapitalize" => self.autocapitalize = Some(value.into()),
3650            "autofocus" => self.autofocus = Some(value.into()),
3651            "blocking" => self.blocking = Some(value.into()),
3652            "class" => self.class = Some(value.into()),
3653            "contenteditable" => self.contenteditable = Some(value.into()),
3654            "contextmenu" => self.contextmenu = Some(value.into()),
3655            "dir" => self.dir = Some(value.into()),
3656            "draggable" => self.draggable = Some(value.into()),
3657            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
3658            "exportparts" => self.exportparts = Some(value.into()),
3659            "hidden" => self.hidden = Some(value.into()),
3660            "id" => self.id = Some(value.into()),
3661            "inert" => self.inert = Some(value.into()),
3662            "inputmode" => self.inputmode = Some(value.into()),
3663            "is" => self.is = Some(value.into()),
3664            "itemid" => self.itemid = Some(value.into()),
3665            "itemprop" => self.itemprop = Some(value.into()),
3666            "itemref" => self.itemref = Some(value.into()),
3667            "itemscope" => self.itemscope = Some(value.into()),
3668            "itemtype" => self.itemtype = Some(value.into()),
3669            "lang" => self.lang = Some(value.into()),
3670            "media" => self.media = Some(value.into()),
3671            "nonce" => self.nonce = Some(value.into()),
3672            "part" => self.part = Some(value.into()),
3673            "popover" => self.popover = Some(value.into()),
3674            "role" => self.role = Some(value.into()),
3675            "slot" => self.slot = Some(value.into()),
3676            "spellcheck" => self.spellcheck = Some(value.into()),
3677            "style" => self.style = Some(value.into()),
3678            "tabindex" => self.tabindex = Some(value.into()),
3679            "title" => self.title = Some(value.into()),
3680            "translate" => self.translate = Some(value.into()),
3681            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
3682            #[cfg(feature = "alloc")]
3683            _ => {
3684                #[allow(clippy::useless_conversion)]
3685                self.extra.insert(name.into(), value.into());
3686            }
3687            #[cfg(not(feature = "alloc"))]
3688            _ => {}
3689        }
3690    }
3691}
3692/// The <strong><code>&lt;title&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element defines the document's title that is shown in a <a href="/en-US/docs/Glossary/Browser">browser</a>'s title bar or a page's tab. It only contains text; tags within the element are ignored.
3693///
3694/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/title>
3695
3696#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
3697pub struct Title<'life> {
3698    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
3699    ///   
3700    pub accesskey: core::option::Option<AttributeValue<'life>>,
3701    ///
3702    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
3703    ///     <ul>
3704    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
3705    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
3706    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
3707    ///       <li><code>characters</code>, all letters should default to uppercase</li>
3708    ///     </ul>
3709    ///   
3710    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
3711    ///
3712    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
3713    ///   
3714    pub autofocus: core::option::Option<AttributeValue<'life>>,
3715    ///
3716    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
3717    ///   
3718    pub class: core::option::Option<AttributeValue<'life>>,
3719    ///
3720    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
3721    ///     <ul>
3722    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
3723    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
3724    ///     </ul>
3725    ///   
3726    pub contenteditable: core::option::Option<AttributeValue<'life>>,
3727    ///
3728    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
3729    ///   
3730    pub contextmenu: core::option::Option<AttributeValue<'life>>,
3731    ///
3732    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
3733    ///   
3734    #[cfg(feature = "alloc")]
3735    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
3736    ///
3737    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
3738    ///     <ul>
3739    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
3740    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
3741    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
3742    ///     </ul>
3743    ///   
3744    pub dir: core::option::Option<AttributeValue<'life>>,
3745    ///
3746    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
3747    ///     <ul>
3748    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
3749    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
3750    ///     </ul>
3751    ///   
3752    pub draggable: core::option::Option<AttributeValue<'life>>,
3753    ///
3754    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
3755    ///   
3756    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
3757    ///
3758    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
3759    ///   
3760    pub exportparts: core::option::Option<AttributeValue<'life>>,
3761    /// /// Extra attributes of the element.
3762
3763    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
3764    #[cfg(feature = "alloc")]
3765    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
3766    ///
3767    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
3768    ///   
3769    pub hidden: core::option::Option<AttributeValue<'life>>,
3770    ///
3771    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
3772    ///   
3773    pub id: core::option::Option<AttributeValue<'life>>,
3774    ///
3775    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
3776    ///   
3777    pub inert: core::option::Option<AttributeValue<'life>>,
3778    ///
3779    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
3780    ///   
3781    pub inputmode: core::option::Option<AttributeValue<'life>>,
3782    ///
3783    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
3784    ///   
3785    pub is: core::option::Option<AttributeValue<'life>>,
3786    ///
3787    ///     <p>The unique, global identifier of an item.</p>
3788    ///   
3789    pub itemid: core::option::Option<AttributeValue<'life>>,
3790    ///
3791    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
3792    ///   
3793    pub itemprop: core::option::Option<AttributeValue<'life>>,
3794    ///
3795    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
3796    ///   
3797    pub itemref: core::option::Option<AttributeValue<'life>>,
3798    ///
3799    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
3800    ///   
3801    pub itemscope: core::option::Option<AttributeValue<'life>>,
3802    ///
3803    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
3804    ///   
3805    pub itemtype: core::option::Option<AttributeValue<'life>>,
3806    ///
3807    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
3808    ///   
3809    pub lang: core::option::Option<AttributeValue<'life>>,
3810    ///
3811    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
3812    ///   
3813    pub nonce: core::option::Option<AttributeValue<'life>>,
3814    ///
3815    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
3816    ///   
3817    pub part: core::option::Option<AttributeValue<'life>>,
3818    ///
3819    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
3820    ///   
3821    pub popover: core::option::Option<AttributeValue<'life>>,
3822    ///
3823    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
3824    ///   
3825    pub role: core::option::Option<AttributeValue<'life>>,
3826    ///
3827    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
3828    ///   
3829    pub slot: core::option::Option<AttributeValue<'life>>,
3830    ///
3831    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
3832    ///     <ul>
3833    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
3834    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
3835    ///     </ul>
3836    ///   
3837    pub spellcheck: core::option::Option<AttributeValue<'life>>,
3838    ///
3839    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
3840    ///   
3841    pub style: core::option::Option<AttributeValue<'life>>,
3842    ///
3843    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
3844    ///     <ul>
3845    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
3846    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
3847    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
3848    ///     </ul>
3849    ///   
3850    pub tabindex: core::option::Option<AttributeValue<'life>>,
3851    ///
3852    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
3853    ///   
3854    pub title: core::option::Option<AttributeValue<'life>>,
3855    ///
3856    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
3857    ///     <ul>
3858    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
3859    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
3860    ///     </ul>
3861    ///   
3862    pub translate: core::option::Option<AttributeValue<'life>>,
3863    ///
3864    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
3865    ///     <ul>
3866    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
3867    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
3868    ///     </ul>
3869    ///   
3870    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
3871}
3872#[allow(deprecated)]
3873
3874impl<'life> Title<'life> {
3875    /// Get the tag name of the element.
3876    /// This is the same as the name of the struct, in kebab-case.
3877    pub fn tag() -> &'static str {
3878        "title"
3879    }
3880    /// Sets an attribute of the element.
3881    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
3882    /// If the `alloc` feature is disabled, this function will silently fail.
3883    ///
3884    /// # Note
3885    /// This only works when the attribute is lowercase.
3886    pub fn set_attr(
3887        &mut self,
3888        name: &'life str,
3889        value: impl core::convert::Into<AttributeValue<'life>>,
3890    ) {
3891        match name {
3892            "accesskey" => self.accesskey = Some(value.into()),
3893            "autocapitalize" => self.autocapitalize = Some(value.into()),
3894            "autofocus" => self.autofocus = Some(value.into()),
3895            "class" => self.class = Some(value.into()),
3896            "contenteditable" => self.contenteditable = Some(value.into()),
3897            "contextmenu" => self.contextmenu = Some(value.into()),
3898            "dir" => self.dir = Some(value.into()),
3899            "draggable" => self.draggable = Some(value.into()),
3900            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
3901            "exportparts" => self.exportparts = Some(value.into()),
3902            "hidden" => self.hidden = Some(value.into()),
3903            "id" => self.id = Some(value.into()),
3904            "inert" => self.inert = Some(value.into()),
3905            "inputmode" => self.inputmode = Some(value.into()),
3906            "is" => self.is = Some(value.into()),
3907            "itemid" => self.itemid = Some(value.into()),
3908            "itemprop" => self.itemprop = Some(value.into()),
3909            "itemref" => self.itemref = Some(value.into()),
3910            "itemscope" => self.itemscope = Some(value.into()),
3911            "itemtype" => self.itemtype = Some(value.into()),
3912            "lang" => self.lang = Some(value.into()),
3913            "nonce" => self.nonce = Some(value.into()),
3914            "part" => self.part = Some(value.into()),
3915            "popover" => self.popover = Some(value.into()),
3916            "role" => self.role = Some(value.into()),
3917            "slot" => self.slot = Some(value.into()),
3918            "spellcheck" => self.spellcheck = Some(value.into()),
3919            "style" => self.style = Some(value.into()),
3920            "tabindex" => self.tabindex = Some(value.into()),
3921            "title" => self.title = Some(value.into()),
3922            "translate" => self.translate = Some(value.into()),
3923            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
3924            #[cfg(feature = "alloc")]
3925            _ => {
3926                #[allow(clippy::useless_conversion)]
3927                self.extra.insert(name.into(), value.into());
3928            }
3929            #[cfg(not(feature = "alloc"))]
3930            _ => {}
3931        }
3932    }
3933}
3934/// The <strong><code>&lt;title&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element defines the document's title that is shown in a <a href="/en-US/docs/Glossary/Browser">browser</a>'s title bar or a page's tab. It only contains text; tags within the element are ignored.
3935///
3936/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/title>
3937
3938#[cfg(feature = "alloc")]
3939#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
3940pub struct TitleOwned {
3941    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
3942    ///   
3943    pub accesskey: core::option::Option<AttributeValueOwned>,
3944    ///
3945    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
3946    ///     <ul>
3947    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
3948    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
3949    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
3950    ///       <li><code>characters</code>, all letters should default to uppercase</li>
3951    ///     </ul>
3952    ///   
3953    pub autocapitalize: core::option::Option<AttributeValueOwned>,
3954    ///
3955    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
3956    ///   
3957    pub autofocus: core::option::Option<AttributeValueOwned>,
3958    ///
3959    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
3960    ///   
3961    pub class: core::option::Option<AttributeValueOwned>,
3962    ///
3963    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
3964    ///     <ul>
3965    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
3966    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
3967    ///     </ul>
3968    ///   
3969    pub contenteditable: core::option::Option<AttributeValueOwned>,
3970    ///
3971    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
3972    ///   
3973    pub contextmenu: core::option::Option<AttributeValueOwned>,
3974    ///
3975    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
3976    ///   
3977    #[cfg(feature = "alloc")]
3978    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
3979    ///
3980    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
3981    ///     <ul>
3982    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
3983    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
3984    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
3985    ///     </ul>
3986    ///   
3987    pub dir: core::option::Option<AttributeValueOwned>,
3988    ///
3989    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
3990    ///     <ul>
3991    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
3992    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
3993    ///     </ul>
3994    ///   
3995    pub draggable: core::option::Option<AttributeValueOwned>,
3996    ///
3997    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
3998    ///   
3999    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
4000    ///
4001    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
4002    ///   
4003    pub exportparts: core::option::Option<AttributeValueOwned>,
4004    /// /// Extra attributes of the element.
4005
4006    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
4007    #[cfg(feature = "alloc")]
4008    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
4009    ///
4010    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
4011    ///   
4012    pub hidden: core::option::Option<AttributeValueOwned>,
4013    ///
4014    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
4015    ///   
4016    pub id: core::option::Option<AttributeValueOwned>,
4017    ///
4018    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
4019    ///   
4020    pub inert: core::option::Option<AttributeValueOwned>,
4021    ///
4022    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
4023    ///   
4024    pub inputmode: core::option::Option<AttributeValueOwned>,
4025    ///
4026    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
4027    ///   
4028    pub is: core::option::Option<AttributeValueOwned>,
4029    ///
4030    ///     <p>The unique, global identifier of an item.</p>
4031    ///   
4032    pub itemid: core::option::Option<AttributeValueOwned>,
4033    ///
4034    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
4035    ///   
4036    pub itemprop: core::option::Option<AttributeValueOwned>,
4037    ///
4038    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
4039    ///   
4040    pub itemref: core::option::Option<AttributeValueOwned>,
4041    ///
4042    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
4043    ///   
4044    pub itemscope: core::option::Option<AttributeValueOwned>,
4045    ///
4046    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
4047    ///   
4048    pub itemtype: core::option::Option<AttributeValueOwned>,
4049    ///
4050    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
4051    ///   
4052    pub lang: core::option::Option<AttributeValueOwned>,
4053    ///
4054    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
4055    ///   
4056    pub nonce: core::option::Option<AttributeValueOwned>,
4057    ///
4058    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
4059    ///   
4060    pub part: core::option::Option<AttributeValueOwned>,
4061    ///
4062    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
4063    ///   
4064    pub popover: core::option::Option<AttributeValueOwned>,
4065    ///
4066    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
4067    ///   
4068    pub role: core::option::Option<AttributeValueOwned>,
4069    ///
4070    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
4071    ///   
4072    pub slot: core::option::Option<AttributeValueOwned>,
4073    ///
4074    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
4075    ///     <ul>
4076    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
4077    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
4078    ///     </ul>
4079    ///   
4080    pub spellcheck: core::option::Option<AttributeValueOwned>,
4081    ///
4082    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
4083    ///   
4084    pub style: core::option::Option<AttributeValueOwned>,
4085    ///
4086    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
4087    ///     <ul>
4088    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
4089    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
4090    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
4091    ///     </ul>
4092    ///   
4093    pub tabindex: core::option::Option<AttributeValueOwned>,
4094    ///
4095    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
4096    ///   
4097    pub title: core::option::Option<AttributeValueOwned>,
4098    ///
4099    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
4100    ///     <ul>
4101    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
4102    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
4103    ///     </ul>
4104    ///   
4105    pub translate: core::option::Option<AttributeValueOwned>,
4106    ///
4107    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
4108    ///     <ul>
4109    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
4110    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
4111    ///     </ul>
4112    ///   
4113    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
4114}
4115#[allow(deprecated)]
4116#[cfg(feature = "alloc")]
4117impl TitleOwned {
4118    /// Get the tag name of the element.
4119    /// This is the same as the name of the struct, in kebab-case.
4120    pub fn tag() -> &'static str {
4121        "title"
4122    }
4123    /// Sets an attribute of the element.
4124    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
4125    /// If the `alloc` feature is disabled, this function will silently fail.
4126    ///
4127    /// # Note
4128    /// This only works when the attribute is lowercase.
4129    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
4130        match name {
4131            "accesskey" => self.accesskey = Some(value.into()),
4132            "autocapitalize" => self.autocapitalize = Some(value.into()),
4133            "autofocus" => self.autofocus = Some(value.into()),
4134            "class" => self.class = Some(value.into()),
4135            "contenteditable" => self.contenteditable = Some(value.into()),
4136            "contextmenu" => self.contextmenu = Some(value.into()),
4137            "dir" => self.dir = Some(value.into()),
4138            "draggable" => self.draggable = Some(value.into()),
4139            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
4140            "exportparts" => self.exportparts = Some(value.into()),
4141            "hidden" => self.hidden = Some(value.into()),
4142            "id" => self.id = Some(value.into()),
4143            "inert" => self.inert = Some(value.into()),
4144            "inputmode" => self.inputmode = Some(value.into()),
4145            "is" => self.is = Some(value.into()),
4146            "itemid" => self.itemid = Some(value.into()),
4147            "itemprop" => self.itemprop = Some(value.into()),
4148            "itemref" => self.itemref = Some(value.into()),
4149            "itemscope" => self.itemscope = Some(value.into()),
4150            "itemtype" => self.itemtype = Some(value.into()),
4151            "lang" => self.lang = Some(value.into()),
4152            "nonce" => self.nonce = Some(value.into()),
4153            "part" => self.part = Some(value.into()),
4154            "popover" => self.popover = Some(value.into()),
4155            "role" => self.role = Some(value.into()),
4156            "slot" => self.slot = Some(value.into()),
4157            "spellcheck" => self.spellcheck = Some(value.into()),
4158            "style" => self.style = Some(value.into()),
4159            "tabindex" => self.tabindex = Some(value.into()),
4160            "title" => self.title = Some(value.into()),
4161            "translate" => self.translate = Some(value.into()),
4162            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
4163            #[cfg(feature = "alloc")]
4164            _ => {
4165                #[allow(clippy::useless_conversion)]
4166                self.extra.insert(name.into(), value.into());
4167            }
4168            #[cfg(not(feature = "alloc"))]
4169            _ => {}
4170        }
4171    }
4172}
4173/// The <strong><code>&lt;body&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents the content of an HTML document. There can be only one <code>&lt;body&gt;</code> element in a document.
4174///
4175/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/body>
4176
4177#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
4178pub struct Body<'life> {
4179    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
4180    ///   
4181    pub accesskey: core::option::Option<AttributeValue<'life>>,
4182    ///
4183    ///     <p>
4184    ///       Color of text for hyperlinks when selected.
4185    ///       <strong>Do not use this attribute! Use the CSS <a href="/en-US/docs/Web/CSS/color"><code>color</code></a> property in conjunction with the <a href="/en-US/docs/Web/CSS/:active"><code>:active</code></a> pseudo-class instead.</strong>
4186    ///     </p>
4187    ///   
4188    pub alink: core::option::Option<AttributeValue<'life>>,
4189    ///
4190    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
4191    ///     <ul>
4192    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
4193    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
4194    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
4195    ///       <li><code>characters</code>, all letters should default to uppercase</li>
4196    ///     </ul>
4197    ///   
4198    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
4199    ///
4200    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
4201    ///   
4202    pub autofocus: core::option::Option<AttributeValue<'life>>,
4203    ///
4204    ///     <p>
4205    ///       URI of an image to use as a background.
4206    ///       <strong>Do not use this attribute! Use the CSS <a href="/en-US/docs/Web/CSS/background"><code>background</code></a> property on the element instead.</strong>
4207    ///     </p>
4208    ///   
4209    pub background: core::option::Option<AttributeValue<'life>>,
4210    ///
4211    ///     <p>
4212    ///       Background color for the document.
4213    ///       <strong>Do not use this attribute! Use the CSS <a href="/en-US/docs/Web/CSS/background-color"><code>background-color</code></a> property on the element instead.</strong>
4214    ///     </p>
4215    ///   
4216    pub bgcolor: core::option::Option<AttributeValue<'life>>,
4217    ///
4218    ///     <p>
4219    ///       The margin of the bottom of the body.
4220    ///       <strong>Do not use this attribute! Use the CSS <a href="/en-US/docs/Web/CSS/margin-bottom"><code>margin-bottom</code></a> property on the element instead.</strong>
4221    ///     </p>
4222    ///   
4223    pub bottommargin: core::option::Option<AttributeValue<'life>>,
4224    ///
4225    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
4226    ///   
4227    pub class: core::option::Option<AttributeValue<'life>>,
4228    ///
4229    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
4230    ///     <ul>
4231    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
4232    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
4233    ///     </ul>
4234    ///   
4235    pub contenteditable: core::option::Option<AttributeValue<'life>>,
4236    ///
4237    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
4238    ///   
4239    pub contextmenu: core::option::Option<AttributeValue<'life>>,
4240    ///
4241    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
4242    ///   
4243    #[cfg(feature = "alloc")]
4244    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
4245    ///
4246    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
4247    ///     <ul>
4248    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
4249    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
4250    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
4251    ///     </ul>
4252    ///   
4253    pub dir: core::option::Option<AttributeValue<'life>>,
4254    ///
4255    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
4256    ///     <ul>
4257    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
4258    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
4259    ///     </ul>
4260    ///   
4261    pub draggable: core::option::Option<AttributeValue<'life>>,
4262    ///
4263    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
4264    ///   
4265    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
4266    ///
4267    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
4268    ///   
4269    pub exportparts: core::option::Option<AttributeValue<'life>>,
4270    /// /// Extra attributes of the element.
4271
4272    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
4273    #[cfg(feature = "alloc")]
4274    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
4275    ///
4276    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
4277    ///   
4278    pub hidden: core::option::Option<AttributeValue<'life>>,
4279    ///
4280    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
4281    ///   
4282    pub id: core::option::Option<AttributeValue<'life>>,
4283    ///
4284    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
4285    ///   
4286    pub inert: core::option::Option<AttributeValue<'life>>,
4287    ///
4288    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
4289    ///   
4290    pub inputmode: core::option::Option<AttributeValue<'life>>,
4291    ///
4292    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
4293    ///   
4294    pub is: core::option::Option<AttributeValue<'life>>,
4295    ///
4296    ///     <p>The unique, global identifier of an item.</p>
4297    ///   
4298    pub itemid: core::option::Option<AttributeValue<'life>>,
4299    ///
4300    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
4301    ///   
4302    pub itemprop: core::option::Option<AttributeValue<'life>>,
4303    ///
4304    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
4305    ///   
4306    pub itemref: core::option::Option<AttributeValue<'life>>,
4307    ///
4308    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
4309    ///   
4310    pub itemscope: core::option::Option<AttributeValue<'life>>,
4311    ///
4312    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
4313    ///   
4314    pub itemtype: core::option::Option<AttributeValue<'life>>,
4315    ///
4316    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
4317    ///   
4318    pub lang: core::option::Option<AttributeValue<'life>>,
4319    ///
4320    ///     <p>
4321    ///       The margin of the left of the body.
4322    ///       <strong>Do not use this attribute! Use the CSS <a href="/en-US/docs/Web/CSS/margin-left"><code>margin-left</code></a> property on the element instead.</strong>
4323    ///     </p>
4324    ///   
4325    pub leftmargin: core::option::Option<AttributeValue<'life>>,
4326    ///
4327    ///     <p>
4328    ///       Color of text for unvisited hypertext links.
4329    ///       <strong>Do not use this attribute! Use the CSS <a href="/en-US/docs/Web/CSS/color"><code>color</code></a> property in conjunction with the <a href="/en-US/docs/Web/CSS/:link"><code>:link</code></a> pseudo-class instead.</strong>
4330    ///     </p>
4331    ///   
4332    pub link: core::option::Option<AttributeValue<'life>>,
4333    ///
4334    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
4335    ///   
4336    pub nonce: core::option::Option<AttributeValue<'life>>,
4337    ///
4338    ///     <p>Function to call after the user has printed the document.</p>
4339    ///   
4340    pub onafterprint: core::option::Option<AttributeValue<'life>>,
4341    ///
4342    ///     <p>Function to call when the user requests printing of the document.</p>
4343    ///   
4344    pub onbeforeprint: core::option::Option<AttributeValue<'life>>,
4345    ///
4346    ///     <p>Function to call when the document is about to be unloaded.</p>
4347    ///   
4348    pub onbeforeunload: core::option::Option<AttributeValue<'life>>,
4349    ///
4350    ///     <p>Function to call when the document loses focus.</p>
4351    ///   
4352    pub onblur: core::option::Option<AttributeValue<'life>>,
4353    ///
4354    ///     <p>Function to call when the document fails to load properly.</p>
4355    ///   
4356    pub onerror: core::option::Option<AttributeValue<'life>>,
4357    ///
4358    ///     <p>Function to call when the document receives focus.</p>
4359    ///   
4360    pub onfocus: core::option::Option<AttributeValue<'life>>,
4361    ///
4362    ///     <p>Function to call when the fragment identifier part (starting with the hash (<code>'#'</code>) character) of the document's current address has changed.</p>
4363    ///   
4364    pub onhashchange: core::option::Option<AttributeValue<'life>>,
4365    ///
4366    ///     <p>Function to call when the preferred languages changed.</p>
4367    ///   
4368    pub onlanguagechange: core::option::Option<AttributeValue<'life>>,
4369    ///
4370    ///     <p>Function to call when the document has finished loading.</p>
4371    ///   
4372    pub onload: core::option::Option<AttributeValue<'life>>,
4373    ///
4374    ///     <p>Function to call when the document has received a message.</p>
4375    ///   
4376    pub onmessage: core::option::Option<AttributeValue<'life>>,
4377    ///
4378    ///     <p>Function to call when network communication has failed.</p>
4379    ///   
4380    pub onoffline: core::option::Option<AttributeValue<'life>>,
4381    ///
4382    ///     <p>Function to call when network communication has been restored.</p>
4383    ///   
4384    pub ononline: core::option::Option<AttributeValue<'life>>,
4385    ///
4386    ///     <p>Function to call when the user has navigated session history.</p>
4387    ///   
4388    pub onpopstate: core::option::Option<AttributeValue<'life>>,
4389    ///
4390    ///     <p>Function to call when the user has moved forward in undo transaction history.</p>
4391    ///   
4392    pub onredo: core::option::Option<AttributeValue<'life>>,
4393    ///
4394    ///     <p>Function to call when the document has been resized.</p>
4395    ///   
4396    pub onresize: core::option::Option<AttributeValue<'life>>,
4397    ///
4398    ///     <p>Function to call when the storage area has changed.</p>
4399    ///   
4400    pub onstorage: core::option::Option<AttributeValue<'life>>,
4401    ///
4402    ///     <p>Function to call when the user has moved backward in undo transaction history.</p>
4403    ///   
4404    pub onundo: core::option::Option<AttributeValue<'life>>,
4405    ///
4406    ///     <p>Function to call when the document is going away.</p>
4407    ///   
4408    pub onunload: core::option::Option<AttributeValue<'life>>,
4409    ///
4410    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
4411    ///   
4412    pub part: core::option::Option<AttributeValue<'life>>,
4413    ///
4414    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
4415    ///   
4416    pub popover: core::option::Option<AttributeValue<'life>>,
4417    ///
4418    ///     <p>
4419    ///       The margin of the right of the body.
4420    ///       <strong>Do not use this attribute! Use the CSS <a href="/en-US/docs/Web/CSS/margin-right"><code>margin-right</code></a> property on the element instead.</strong>
4421    ///     </p>
4422    ///   
4423    pub rightmargin: core::option::Option<AttributeValue<'life>>,
4424    ///
4425    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
4426    ///   
4427    pub role: core::option::Option<AttributeValue<'life>>,
4428    ///
4429    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
4430    ///   
4431    pub slot: core::option::Option<AttributeValue<'life>>,
4432    ///
4433    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
4434    ///     <ul>
4435    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
4436    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
4437    ///     </ul>
4438    ///   
4439    pub spellcheck: core::option::Option<AttributeValue<'life>>,
4440    ///
4441    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
4442    ///   
4443    pub style: core::option::Option<AttributeValue<'life>>,
4444    ///
4445    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
4446    ///     <ul>
4447    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
4448    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
4449    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
4450    ///     </ul>
4451    ///   
4452    pub tabindex: core::option::Option<AttributeValue<'life>>,
4453    ///
4454    ///     <p>
4455    ///       Foreground color of text.
4456    ///       <strong>Do not use this attribute! Use CSS <a href="/en-US/docs/Web/CSS/color"><code>color</code></a> property on the element instead.</strong>
4457    ///     </p>
4458    ///   
4459    pub text: core::option::Option<AttributeValue<'life>>,
4460    ///
4461    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
4462    ///   
4463    pub title: core::option::Option<AttributeValue<'life>>,
4464    ///
4465    ///     <p>
4466    ///       The margin of the top of the body.
4467    ///       <strong>Do not use this attribute! Use the CSS <a href="/en-US/docs/Web/CSS/margin-top"><code>margin-top</code></a> property on the element instead.</strong>
4468    ///     </p>
4469    ///   
4470    pub topmargin: core::option::Option<AttributeValue<'life>>,
4471    ///
4472    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
4473    ///     <ul>
4474    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
4475    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
4476    ///     </ul>
4477    ///   
4478    pub translate: core::option::Option<AttributeValue<'life>>,
4479    ///
4480    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
4481    ///     <ul>
4482    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
4483    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
4484    ///     </ul>
4485    ///   
4486    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
4487    ///
4488    ///     <p>
4489    ///       Color of text for visited hypertext links.
4490    ///       <strong>Do not use this attribute! Use the CSS <a href="/en-US/docs/Web/CSS/color"><code>color</code></a> property in conjunction with the <a href="/en-US/docs/Web/CSS/:visited"><code>:visited</code></a> pseudo-class instead.</strong>
4491    ///     </p>
4492    ///   
4493    pub vlink: core::option::Option<AttributeValue<'life>>,
4494}
4495#[allow(deprecated)]
4496
4497impl<'life> Body<'life> {
4498    /// Get the tag name of the element.
4499    /// This is the same as the name of the struct, in kebab-case.
4500    pub fn tag() -> &'static str {
4501        "body"
4502    }
4503    /// Sets an attribute of the element.
4504    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
4505    /// If the `alloc` feature is disabled, this function will silently fail.
4506    ///
4507    /// # Note
4508    /// This only works when the attribute is lowercase.
4509    pub fn set_attr(
4510        &mut self,
4511        name: &'life str,
4512        value: impl core::convert::Into<AttributeValue<'life>>,
4513    ) {
4514        match name {
4515            "accesskey" => self.accesskey = Some(value.into()),
4516            "alink" => self.alink = Some(value.into()),
4517            "autocapitalize" => self.autocapitalize = Some(value.into()),
4518            "autofocus" => self.autofocus = Some(value.into()),
4519            "background" => self.background = Some(value.into()),
4520            "bgcolor" => self.bgcolor = Some(value.into()),
4521            "bottommargin" => self.bottommargin = Some(value.into()),
4522            "class" => self.class = Some(value.into()),
4523            "contenteditable" => self.contenteditable = Some(value.into()),
4524            "contextmenu" => self.contextmenu = Some(value.into()),
4525            "dir" => self.dir = Some(value.into()),
4526            "draggable" => self.draggable = Some(value.into()),
4527            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
4528            "exportparts" => self.exportparts = Some(value.into()),
4529            "hidden" => self.hidden = Some(value.into()),
4530            "id" => self.id = Some(value.into()),
4531            "inert" => self.inert = Some(value.into()),
4532            "inputmode" => self.inputmode = Some(value.into()),
4533            "is" => self.is = Some(value.into()),
4534            "itemid" => self.itemid = Some(value.into()),
4535            "itemprop" => self.itemprop = Some(value.into()),
4536            "itemref" => self.itemref = Some(value.into()),
4537            "itemscope" => self.itemscope = Some(value.into()),
4538            "itemtype" => self.itemtype = Some(value.into()),
4539            "lang" => self.lang = Some(value.into()),
4540            "leftmargin" => self.leftmargin = Some(value.into()),
4541            "link" => self.link = Some(value.into()),
4542            "nonce" => self.nonce = Some(value.into()),
4543            "onafterprint" => self.onafterprint = Some(value.into()),
4544            "onbeforeprint" => self.onbeforeprint = Some(value.into()),
4545            "onbeforeunload" => self.onbeforeunload = Some(value.into()),
4546            "onblur" => self.onblur = Some(value.into()),
4547            "onerror" => self.onerror = Some(value.into()),
4548            "onfocus" => self.onfocus = Some(value.into()),
4549            "onhashchange" => self.onhashchange = Some(value.into()),
4550            "onlanguagechange" => self.onlanguagechange = Some(value.into()),
4551            "onload" => self.onload = Some(value.into()),
4552            "onmessage" => self.onmessage = Some(value.into()),
4553            "onoffline" => self.onoffline = Some(value.into()),
4554            "ononline" => self.ononline = Some(value.into()),
4555            "onpopstate" => self.onpopstate = Some(value.into()),
4556            "onredo" => self.onredo = Some(value.into()),
4557            "onresize" => self.onresize = Some(value.into()),
4558            "onstorage" => self.onstorage = Some(value.into()),
4559            "onundo" => self.onundo = Some(value.into()),
4560            "onunload" => self.onunload = Some(value.into()),
4561            "part" => self.part = Some(value.into()),
4562            "popover" => self.popover = Some(value.into()),
4563            "rightmargin" => self.rightmargin = Some(value.into()),
4564            "role" => self.role = Some(value.into()),
4565            "slot" => self.slot = Some(value.into()),
4566            "spellcheck" => self.spellcheck = Some(value.into()),
4567            "style" => self.style = Some(value.into()),
4568            "tabindex" => self.tabindex = Some(value.into()),
4569            "text" => self.text = Some(value.into()),
4570            "title" => self.title = Some(value.into()),
4571            "topmargin" => self.topmargin = Some(value.into()),
4572            "translate" => self.translate = Some(value.into()),
4573            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
4574            "vlink" => self.vlink = Some(value.into()),
4575            #[cfg(feature = "alloc")]
4576            _ => {
4577                #[allow(clippy::useless_conversion)]
4578                self.extra.insert(name.into(), value.into());
4579            }
4580            #[cfg(not(feature = "alloc"))]
4581            _ => {}
4582        }
4583    }
4584}
4585/// The <strong><code>&lt;body&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents the content of an HTML document. There can be only one <code>&lt;body&gt;</code> element in a document.
4586///
4587/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/body>
4588
4589#[cfg(feature = "alloc")]
4590#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
4591pub struct BodyOwned {
4592    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
4593    ///   
4594    pub accesskey: core::option::Option<AttributeValueOwned>,
4595    ///
4596    ///     <p>
4597    ///       Color of text for hyperlinks when selected.
4598    ///       <strong>Do not use this attribute! Use the CSS <a href="/en-US/docs/Web/CSS/color"><code>color</code></a> property in conjunction with the <a href="/en-US/docs/Web/CSS/:active"><code>:active</code></a> pseudo-class instead.</strong>
4599    ///     </p>
4600    ///   
4601    pub alink: core::option::Option<AttributeValueOwned>,
4602    ///
4603    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
4604    ///     <ul>
4605    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
4606    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
4607    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
4608    ///       <li><code>characters</code>, all letters should default to uppercase</li>
4609    ///     </ul>
4610    ///   
4611    pub autocapitalize: core::option::Option<AttributeValueOwned>,
4612    ///
4613    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
4614    ///   
4615    pub autofocus: core::option::Option<AttributeValueOwned>,
4616    ///
4617    ///     <p>
4618    ///       URI of an image to use as a background.
4619    ///       <strong>Do not use this attribute! Use the CSS <a href="/en-US/docs/Web/CSS/background"><code>background</code></a> property on the element instead.</strong>
4620    ///     </p>
4621    ///   
4622    pub background: core::option::Option<AttributeValueOwned>,
4623    ///
4624    ///     <p>
4625    ///       Background color for the document.
4626    ///       <strong>Do not use this attribute! Use the CSS <a href="/en-US/docs/Web/CSS/background-color"><code>background-color</code></a> property on the element instead.</strong>
4627    ///     </p>
4628    ///   
4629    pub bgcolor: core::option::Option<AttributeValueOwned>,
4630    ///
4631    ///     <p>
4632    ///       The margin of the bottom of the body.
4633    ///       <strong>Do not use this attribute! Use the CSS <a href="/en-US/docs/Web/CSS/margin-bottom"><code>margin-bottom</code></a> property on the element instead.</strong>
4634    ///     </p>
4635    ///   
4636    pub bottommargin: core::option::Option<AttributeValueOwned>,
4637    ///
4638    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
4639    ///   
4640    pub class: core::option::Option<AttributeValueOwned>,
4641    ///
4642    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
4643    ///     <ul>
4644    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
4645    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
4646    ///     </ul>
4647    ///   
4648    pub contenteditable: core::option::Option<AttributeValueOwned>,
4649    ///
4650    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
4651    ///   
4652    pub contextmenu: core::option::Option<AttributeValueOwned>,
4653    ///
4654    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
4655    ///   
4656    #[cfg(feature = "alloc")]
4657    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
4658    ///
4659    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
4660    ///     <ul>
4661    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
4662    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
4663    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
4664    ///     </ul>
4665    ///   
4666    pub dir: core::option::Option<AttributeValueOwned>,
4667    ///
4668    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
4669    ///     <ul>
4670    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
4671    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
4672    ///     </ul>
4673    ///   
4674    pub draggable: core::option::Option<AttributeValueOwned>,
4675    ///
4676    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
4677    ///   
4678    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
4679    ///
4680    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
4681    ///   
4682    pub exportparts: core::option::Option<AttributeValueOwned>,
4683    /// /// Extra attributes of the element.
4684
4685    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
4686    #[cfg(feature = "alloc")]
4687    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
4688    ///
4689    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
4690    ///   
4691    pub hidden: core::option::Option<AttributeValueOwned>,
4692    ///
4693    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
4694    ///   
4695    pub id: core::option::Option<AttributeValueOwned>,
4696    ///
4697    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
4698    ///   
4699    pub inert: core::option::Option<AttributeValueOwned>,
4700    ///
4701    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
4702    ///   
4703    pub inputmode: core::option::Option<AttributeValueOwned>,
4704    ///
4705    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
4706    ///   
4707    pub is: core::option::Option<AttributeValueOwned>,
4708    ///
4709    ///     <p>The unique, global identifier of an item.</p>
4710    ///   
4711    pub itemid: core::option::Option<AttributeValueOwned>,
4712    ///
4713    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
4714    ///   
4715    pub itemprop: core::option::Option<AttributeValueOwned>,
4716    ///
4717    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
4718    ///   
4719    pub itemref: core::option::Option<AttributeValueOwned>,
4720    ///
4721    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
4722    ///   
4723    pub itemscope: core::option::Option<AttributeValueOwned>,
4724    ///
4725    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
4726    ///   
4727    pub itemtype: core::option::Option<AttributeValueOwned>,
4728    ///
4729    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
4730    ///   
4731    pub lang: core::option::Option<AttributeValueOwned>,
4732    ///
4733    ///     <p>
4734    ///       The margin of the left of the body.
4735    ///       <strong>Do not use this attribute! Use the CSS <a href="/en-US/docs/Web/CSS/margin-left"><code>margin-left</code></a> property on the element instead.</strong>
4736    ///     </p>
4737    ///   
4738    pub leftmargin: core::option::Option<AttributeValueOwned>,
4739    ///
4740    ///     <p>
4741    ///       Color of text for unvisited hypertext links.
4742    ///       <strong>Do not use this attribute! Use the CSS <a href="/en-US/docs/Web/CSS/color"><code>color</code></a> property in conjunction with the <a href="/en-US/docs/Web/CSS/:link"><code>:link</code></a> pseudo-class instead.</strong>
4743    ///     </p>
4744    ///   
4745    pub link: core::option::Option<AttributeValueOwned>,
4746    ///
4747    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
4748    ///   
4749    pub nonce: core::option::Option<AttributeValueOwned>,
4750    ///
4751    ///     <p>Function to call after the user has printed the document.</p>
4752    ///   
4753    pub onafterprint: core::option::Option<AttributeValueOwned>,
4754    ///
4755    ///     <p>Function to call when the user requests printing of the document.</p>
4756    ///   
4757    pub onbeforeprint: core::option::Option<AttributeValueOwned>,
4758    ///
4759    ///     <p>Function to call when the document is about to be unloaded.</p>
4760    ///   
4761    pub onbeforeunload: core::option::Option<AttributeValueOwned>,
4762    ///
4763    ///     <p>Function to call when the document loses focus.</p>
4764    ///   
4765    pub onblur: core::option::Option<AttributeValueOwned>,
4766    ///
4767    ///     <p>Function to call when the document fails to load properly.</p>
4768    ///   
4769    pub onerror: core::option::Option<AttributeValueOwned>,
4770    ///
4771    ///     <p>Function to call when the document receives focus.</p>
4772    ///   
4773    pub onfocus: core::option::Option<AttributeValueOwned>,
4774    ///
4775    ///     <p>Function to call when the fragment identifier part (starting with the hash (<code>'#'</code>) character) of the document's current address has changed.</p>
4776    ///   
4777    pub onhashchange: core::option::Option<AttributeValueOwned>,
4778    ///
4779    ///     <p>Function to call when the preferred languages changed.</p>
4780    ///   
4781    pub onlanguagechange: core::option::Option<AttributeValueOwned>,
4782    ///
4783    ///     <p>Function to call when the document has finished loading.</p>
4784    ///   
4785    pub onload: core::option::Option<AttributeValueOwned>,
4786    ///
4787    ///     <p>Function to call when the document has received a message.</p>
4788    ///   
4789    pub onmessage: core::option::Option<AttributeValueOwned>,
4790    ///
4791    ///     <p>Function to call when network communication has failed.</p>
4792    ///   
4793    pub onoffline: core::option::Option<AttributeValueOwned>,
4794    ///
4795    ///     <p>Function to call when network communication has been restored.</p>
4796    ///   
4797    pub ononline: core::option::Option<AttributeValueOwned>,
4798    ///
4799    ///     <p>Function to call when the user has navigated session history.</p>
4800    ///   
4801    pub onpopstate: core::option::Option<AttributeValueOwned>,
4802    ///
4803    ///     <p>Function to call when the user has moved forward in undo transaction history.</p>
4804    ///   
4805    pub onredo: core::option::Option<AttributeValueOwned>,
4806    ///
4807    ///     <p>Function to call when the document has been resized.</p>
4808    ///   
4809    pub onresize: core::option::Option<AttributeValueOwned>,
4810    ///
4811    ///     <p>Function to call when the storage area has changed.</p>
4812    ///   
4813    pub onstorage: core::option::Option<AttributeValueOwned>,
4814    ///
4815    ///     <p>Function to call when the user has moved backward in undo transaction history.</p>
4816    ///   
4817    pub onundo: core::option::Option<AttributeValueOwned>,
4818    ///
4819    ///     <p>Function to call when the document is going away.</p>
4820    ///   
4821    pub onunload: core::option::Option<AttributeValueOwned>,
4822    ///
4823    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
4824    ///   
4825    pub part: core::option::Option<AttributeValueOwned>,
4826    ///
4827    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
4828    ///   
4829    pub popover: core::option::Option<AttributeValueOwned>,
4830    ///
4831    ///     <p>
4832    ///       The margin of the right of the body.
4833    ///       <strong>Do not use this attribute! Use the CSS <a href="/en-US/docs/Web/CSS/margin-right"><code>margin-right</code></a> property on the element instead.</strong>
4834    ///     </p>
4835    ///   
4836    pub rightmargin: core::option::Option<AttributeValueOwned>,
4837    ///
4838    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
4839    ///   
4840    pub role: core::option::Option<AttributeValueOwned>,
4841    ///
4842    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
4843    ///   
4844    pub slot: core::option::Option<AttributeValueOwned>,
4845    ///
4846    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
4847    ///     <ul>
4848    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
4849    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
4850    ///     </ul>
4851    ///   
4852    pub spellcheck: core::option::Option<AttributeValueOwned>,
4853    ///
4854    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
4855    ///   
4856    pub style: core::option::Option<AttributeValueOwned>,
4857    ///
4858    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
4859    ///     <ul>
4860    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
4861    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
4862    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
4863    ///     </ul>
4864    ///   
4865    pub tabindex: core::option::Option<AttributeValueOwned>,
4866    ///
4867    ///     <p>
4868    ///       Foreground color of text.
4869    ///       <strong>Do not use this attribute! Use CSS <a href="/en-US/docs/Web/CSS/color"><code>color</code></a> property on the element instead.</strong>
4870    ///     </p>
4871    ///   
4872    pub text: core::option::Option<AttributeValueOwned>,
4873    ///
4874    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
4875    ///   
4876    pub title: core::option::Option<AttributeValueOwned>,
4877    ///
4878    ///     <p>
4879    ///       The margin of the top of the body.
4880    ///       <strong>Do not use this attribute! Use the CSS <a href="/en-US/docs/Web/CSS/margin-top"><code>margin-top</code></a> property on the element instead.</strong>
4881    ///     </p>
4882    ///   
4883    pub topmargin: core::option::Option<AttributeValueOwned>,
4884    ///
4885    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
4886    ///     <ul>
4887    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
4888    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
4889    ///     </ul>
4890    ///   
4891    pub translate: core::option::Option<AttributeValueOwned>,
4892    ///
4893    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
4894    ///     <ul>
4895    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
4896    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
4897    ///     </ul>
4898    ///   
4899    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
4900    ///
4901    ///     <p>
4902    ///       Color of text for visited hypertext links.
4903    ///       <strong>Do not use this attribute! Use the CSS <a href="/en-US/docs/Web/CSS/color"><code>color</code></a> property in conjunction with the <a href="/en-US/docs/Web/CSS/:visited"><code>:visited</code></a> pseudo-class instead.</strong>
4904    ///     </p>
4905    ///   
4906    pub vlink: core::option::Option<AttributeValueOwned>,
4907}
4908#[allow(deprecated)]
4909#[cfg(feature = "alloc")]
4910impl BodyOwned {
4911    /// Get the tag name of the element.
4912    /// This is the same as the name of the struct, in kebab-case.
4913    pub fn tag() -> &'static str {
4914        "body"
4915    }
4916    /// Sets an attribute of the element.
4917    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
4918    /// If the `alloc` feature is disabled, this function will silently fail.
4919    ///
4920    /// # Note
4921    /// This only works when the attribute is lowercase.
4922    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
4923        match name {
4924            "accesskey" => self.accesskey = Some(value.into()),
4925            "alink" => self.alink = Some(value.into()),
4926            "autocapitalize" => self.autocapitalize = Some(value.into()),
4927            "autofocus" => self.autofocus = Some(value.into()),
4928            "background" => self.background = Some(value.into()),
4929            "bgcolor" => self.bgcolor = Some(value.into()),
4930            "bottommargin" => self.bottommargin = Some(value.into()),
4931            "class" => self.class = Some(value.into()),
4932            "contenteditable" => self.contenteditable = Some(value.into()),
4933            "contextmenu" => self.contextmenu = Some(value.into()),
4934            "dir" => self.dir = Some(value.into()),
4935            "draggable" => self.draggable = Some(value.into()),
4936            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
4937            "exportparts" => self.exportparts = Some(value.into()),
4938            "hidden" => self.hidden = Some(value.into()),
4939            "id" => self.id = Some(value.into()),
4940            "inert" => self.inert = Some(value.into()),
4941            "inputmode" => self.inputmode = Some(value.into()),
4942            "is" => self.is = Some(value.into()),
4943            "itemid" => self.itemid = Some(value.into()),
4944            "itemprop" => self.itemprop = Some(value.into()),
4945            "itemref" => self.itemref = Some(value.into()),
4946            "itemscope" => self.itemscope = Some(value.into()),
4947            "itemtype" => self.itemtype = Some(value.into()),
4948            "lang" => self.lang = Some(value.into()),
4949            "leftmargin" => self.leftmargin = Some(value.into()),
4950            "link" => self.link = Some(value.into()),
4951            "nonce" => self.nonce = Some(value.into()),
4952            "onafterprint" => self.onafterprint = Some(value.into()),
4953            "onbeforeprint" => self.onbeforeprint = Some(value.into()),
4954            "onbeforeunload" => self.onbeforeunload = Some(value.into()),
4955            "onblur" => self.onblur = Some(value.into()),
4956            "onerror" => self.onerror = Some(value.into()),
4957            "onfocus" => self.onfocus = Some(value.into()),
4958            "onhashchange" => self.onhashchange = Some(value.into()),
4959            "onlanguagechange" => self.onlanguagechange = Some(value.into()),
4960            "onload" => self.onload = Some(value.into()),
4961            "onmessage" => self.onmessage = Some(value.into()),
4962            "onoffline" => self.onoffline = Some(value.into()),
4963            "ononline" => self.ononline = Some(value.into()),
4964            "onpopstate" => self.onpopstate = Some(value.into()),
4965            "onredo" => self.onredo = Some(value.into()),
4966            "onresize" => self.onresize = Some(value.into()),
4967            "onstorage" => self.onstorage = Some(value.into()),
4968            "onundo" => self.onundo = Some(value.into()),
4969            "onunload" => self.onunload = Some(value.into()),
4970            "part" => self.part = Some(value.into()),
4971            "popover" => self.popover = Some(value.into()),
4972            "rightmargin" => self.rightmargin = Some(value.into()),
4973            "role" => self.role = Some(value.into()),
4974            "slot" => self.slot = Some(value.into()),
4975            "spellcheck" => self.spellcheck = Some(value.into()),
4976            "style" => self.style = Some(value.into()),
4977            "tabindex" => self.tabindex = Some(value.into()),
4978            "text" => self.text = Some(value.into()),
4979            "title" => self.title = Some(value.into()),
4980            "topmargin" => self.topmargin = Some(value.into()),
4981            "translate" => self.translate = Some(value.into()),
4982            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
4983            "vlink" => self.vlink = Some(value.into()),
4984            #[cfg(feature = "alloc")]
4985            _ => {
4986                #[allow(clippy::useless_conversion)]
4987                self.extra.insert(name.into(), value.into());
4988            }
4989            #[cfg(not(feature = "alloc"))]
4990            _ => {}
4991        }
4992    }
4993}
4994/// The <strong><code>&lt;address&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element indicates that the enclosed HTML provides contact information for a person or people, or for an organization.
4995///
4996/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/address>
4997
4998#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
4999pub struct Address<'life> {
5000    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
5001    ///   
5002    pub accesskey: core::option::Option<AttributeValue<'life>>,
5003    ///
5004    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
5005    ///     <ul>
5006    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
5007    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
5008    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
5009    ///       <li><code>characters</code>, all letters should default to uppercase</li>
5010    ///     </ul>
5011    ///   
5012    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
5013    ///
5014    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
5015    ///   
5016    pub autofocus: core::option::Option<AttributeValue<'life>>,
5017    ///
5018    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
5019    ///   
5020    pub class: core::option::Option<AttributeValue<'life>>,
5021    ///
5022    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
5023    ///     <ul>
5024    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
5025    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
5026    ///     </ul>
5027    ///   
5028    pub contenteditable: core::option::Option<AttributeValue<'life>>,
5029    ///
5030    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
5031    ///   
5032    pub contextmenu: core::option::Option<AttributeValue<'life>>,
5033    ///
5034    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
5035    ///   
5036    #[cfg(feature = "alloc")]
5037    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
5038    ///
5039    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
5040    ///     <ul>
5041    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
5042    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
5043    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
5044    ///     </ul>
5045    ///   
5046    pub dir: core::option::Option<AttributeValue<'life>>,
5047    ///
5048    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
5049    ///     <ul>
5050    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
5051    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
5052    ///     </ul>
5053    ///   
5054    pub draggable: core::option::Option<AttributeValue<'life>>,
5055    ///
5056    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
5057    ///   
5058    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
5059    ///
5060    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
5061    ///   
5062    pub exportparts: core::option::Option<AttributeValue<'life>>,
5063    /// /// Extra attributes of the element.
5064
5065    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
5066    #[cfg(feature = "alloc")]
5067    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
5068    ///
5069    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
5070    ///   
5071    pub hidden: core::option::Option<AttributeValue<'life>>,
5072    ///
5073    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
5074    ///   
5075    pub id: core::option::Option<AttributeValue<'life>>,
5076    ///
5077    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
5078    ///   
5079    pub inert: core::option::Option<AttributeValue<'life>>,
5080    ///
5081    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
5082    ///   
5083    pub inputmode: core::option::Option<AttributeValue<'life>>,
5084    ///
5085    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
5086    ///   
5087    pub is: core::option::Option<AttributeValue<'life>>,
5088    ///
5089    ///     <p>The unique, global identifier of an item.</p>
5090    ///   
5091    pub itemid: core::option::Option<AttributeValue<'life>>,
5092    ///
5093    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
5094    ///   
5095    pub itemprop: core::option::Option<AttributeValue<'life>>,
5096    ///
5097    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
5098    ///   
5099    pub itemref: core::option::Option<AttributeValue<'life>>,
5100    ///
5101    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
5102    ///   
5103    pub itemscope: core::option::Option<AttributeValue<'life>>,
5104    ///
5105    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
5106    ///   
5107    pub itemtype: core::option::Option<AttributeValue<'life>>,
5108    ///
5109    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
5110    ///   
5111    pub lang: core::option::Option<AttributeValue<'life>>,
5112    ///
5113    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
5114    ///   
5115    pub nonce: core::option::Option<AttributeValue<'life>>,
5116    ///
5117    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
5118    ///   
5119    pub part: core::option::Option<AttributeValue<'life>>,
5120    ///
5121    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
5122    ///   
5123    pub popover: core::option::Option<AttributeValue<'life>>,
5124    ///
5125    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
5126    ///   
5127    pub role: core::option::Option<AttributeValue<'life>>,
5128    ///
5129    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
5130    ///   
5131    pub slot: core::option::Option<AttributeValue<'life>>,
5132    ///
5133    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
5134    ///     <ul>
5135    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
5136    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
5137    ///     </ul>
5138    ///   
5139    pub spellcheck: core::option::Option<AttributeValue<'life>>,
5140    ///
5141    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
5142    ///   
5143    pub style: core::option::Option<AttributeValue<'life>>,
5144    ///
5145    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
5146    ///     <ul>
5147    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
5148    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
5149    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
5150    ///     </ul>
5151    ///   
5152    pub tabindex: core::option::Option<AttributeValue<'life>>,
5153    ///
5154    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
5155    ///   
5156    pub title: core::option::Option<AttributeValue<'life>>,
5157    ///
5158    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
5159    ///     <ul>
5160    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
5161    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
5162    ///     </ul>
5163    ///   
5164    pub translate: core::option::Option<AttributeValue<'life>>,
5165    ///
5166    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
5167    ///     <ul>
5168    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
5169    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
5170    ///     </ul>
5171    ///   
5172    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
5173}
5174#[allow(deprecated)]
5175
5176impl<'life> Address<'life> {
5177    /// Get the tag name of the element.
5178    /// This is the same as the name of the struct, in kebab-case.
5179    pub fn tag() -> &'static str {
5180        "address"
5181    }
5182    /// Sets an attribute of the element.
5183    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
5184    /// If the `alloc` feature is disabled, this function will silently fail.
5185    ///
5186    /// # Note
5187    /// This only works when the attribute is lowercase.
5188    pub fn set_attr(
5189        &mut self,
5190        name: &'life str,
5191        value: impl core::convert::Into<AttributeValue<'life>>,
5192    ) {
5193        match name {
5194            "accesskey" => self.accesskey = Some(value.into()),
5195            "autocapitalize" => self.autocapitalize = Some(value.into()),
5196            "autofocus" => self.autofocus = Some(value.into()),
5197            "class" => self.class = Some(value.into()),
5198            "contenteditable" => self.contenteditable = Some(value.into()),
5199            "contextmenu" => self.contextmenu = Some(value.into()),
5200            "dir" => self.dir = Some(value.into()),
5201            "draggable" => self.draggable = Some(value.into()),
5202            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
5203            "exportparts" => self.exportparts = Some(value.into()),
5204            "hidden" => self.hidden = Some(value.into()),
5205            "id" => self.id = Some(value.into()),
5206            "inert" => self.inert = Some(value.into()),
5207            "inputmode" => self.inputmode = Some(value.into()),
5208            "is" => self.is = Some(value.into()),
5209            "itemid" => self.itemid = Some(value.into()),
5210            "itemprop" => self.itemprop = Some(value.into()),
5211            "itemref" => self.itemref = Some(value.into()),
5212            "itemscope" => self.itemscope = Some(value.into()),
5213            "itemtype" => self.itemtype = Some(value.into()),
5214            "lang" => self.lang = Some(value.into()),
5215            "nonce" => self.nonce = Some(value.into()),
5216            "part" => self.part = Some(value.into()),
5217            "popover" => self.popover = Some(value.into()),
5218            "role" => self.role = Some(value.into()),
5219            "slot" => self.slot = Some(value.into()),
5220            "spellcheck" => self.spellcheck = Some(value.into()),
5221            "style" => self.style = Some(value.into()),
5222            "tabindex" => self.tabindex = Some(value.into()),
5223            "title" => self.title = Some(value.into()),
5224            "translate" => self.translate = Some(value.into()),
5225            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
5226            #[cfg(feature = "alloc")]
5227            _ => {
5228                #[allow(clippy::useless_conversion)]
5229                self.extra.insert(name.into(), value.into());
5230            }
5231            #[cfg(not(feature = "alloc"))]
5232            _ => {}
5233        }
5234    }
5235}
5236/// The <strong><code>&lt;address&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element indicates that the enclosed HTML provides contact information for a person or people, or for an organization.
5237///
5238/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/address>
5239
5240#[cfg(feature = "alloc")]
5241#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
5242pub struct AddressOwned {
5243    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
5244    ///   
5245    pub accesskey: core::option::Option<AttributeValueOwned>,
5246    ///
5247    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
5248    ///     <ul>
5249    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
5250    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
5251    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
5252    ///       <li><code>characters</code>, all letters should default to uppercase</li>
5253    ///     </ul>
5254    ///   
5255    pub autocapitalize: core::option::Option<AttributeValueOwned>,
5256    ///
5257    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
5258    ///   
5259    pub autofocus: core::option::Option<AttributeValueOwned>,
5260    ///
5261    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
5262    ///   
5263    pub class: core::option::Option<AttributeValueOwned>,
5264    ///
5265    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
5266    ///     <ul>
5267    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
5268    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
5269    ///     </ul>
5270    ///   
5271    pub contenteditable: core::option::Option<AttributeValueOwned>,
5272    ///
5273    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
5274    ///   
5275    pub contextmenu: core::option::Option<AttributeValueOwned>,
5276    ///
5277    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
5278    ///   
5279    #[cfg(feature = "alloc")]
5280    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
5281    ///
5282    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
5283    ///     <ul>
5284    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
5285    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
5286    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
5287    ///     </ul>
5288    ///   
5289    pub dir: core::option::Option<AttributeValueOwned>,
5290    ///
5291    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
5292    ///     <ul>
5293    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
5294    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
5295    ///     </ul>
5296    ///   
5297    pub draggable: core::option::Option<AttributeValueOwned>,
5298    ///
5299    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
5300    ///   
5301    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
5302    ///
5303    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
5304    ///   
5305    pub exportparts: core::option::Option<AttributeValueOwned>,
5306    /// /// Extra attributes of the element.
5307
5308    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
5309    #[cfg(feature = "alloc")]
5310    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
5311    ///
5312    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
5313    ///   
5314    pub hidden: core::option::Option<AttributeValueOwned>,
5315    ///
5316    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
5317    ///   
5318    pub id: core::option::Option<AttributeValueOwned>,
5319    ///
5320    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
5321    ///   
5322    pub inert: core::option::Option<AttributeValueOwned>,
5323    ///
5324    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
5325    ///   
5326    pub inputmode: core::option::Option<AttributeValueOwned>,
5327    ///
5328    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
5329    ///   
5330    pub is: core::option::Option<AttributeValueOwned>,
5331    ///
5332    ///     <p>The unique, global identifier of an item.</p>
5333    ///   
5334    pub itemid: core::option::Option<AttributeValueOwned>,
5335    ///
5336    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
5337    ///   
5338    pub itemprop: core::option::Option<AttributeValueOwned>,
5339    ///
5340    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
5341    ///   
5342    pub itemref: core::option::Option<AttributeValueOwned>,
5343    ///
5344    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
5345    ///   
5346    pub itemscope: core::option::Option<AttributeValueOwned>,
5347    ///
5348    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
5349    ///   
5350    pub itemtype: core::option::Option<AttributeValueOwned>,
5351    ///
5352    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
5353    ///   
5354    pub lang: core::option::Option<AttributeValueOwned>,
5355    ///
5356    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
5357    ///   
5358    pub nonce: core::option::Option<AttributeValueOwned>,
5359    ///
5360    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
5361    ///   
5362    pub part: core::option::Option<AttributeValueOwned>,
5363    ///
5364    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
5365    ///   
5366    pub popover: core::option::Option<AttributeValueOwned>,
5367    ///
5368    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
5369    ///   
5370    pub role: core::option::Option<AttributeValueOwned>,
5371    ///
5372    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
5373    ///   
5374    pub slot: core::option::Option<AttributeValueOwned>,
5375    ///
5376    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
5377    ///     <ul>
5378    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
5379    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
5380    ///     </ul>
5381    ///   
5382    pub spellcheck: core::option::Option<AttributeValueOwned>,
5383    ///
5384    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
5385    ///   
5386    pub style: core::option::Option<AttributeValueOwned>,
5387    ///
5388    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
5389    ///     <ul>
5390    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
5391    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
5392    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
5393    ///     </ul>
5394    ///   
5395    pub tabindex: core::option::Option<AttributeValueOwned>,
5396    ///
5397    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
5398    ///   
5399    pub title: core::option::Option<AttributeValueOwned>,
5400    ///
5401    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
5402    ///     <ul>
5403    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
5404    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
5405    ///     </ul>
5406    ///   
5407    pub translate: core::option::Option<AttributeValueOwned>,
5408    ///
5409    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
5410    ///     <ul>
5411    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
5412    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
5413    ///     </ul>
5414    ///   
5415    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
5416}
5417#[allow(deprecated)]
5418#[cfg(feature = "alloc")]
5419impl AddressOwned {
5420    /// Get the tag name of the element.
5421    /// This is the same as the name of the struct, in kebab-case.
5422    pub fn tag() -> &'static str {
5423        "address"
5424    }
5425    /// Sets an attribute of the element.
5426    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
5427    /// If the `alloc` feature is disabled, this function will silently fail.
5428    ///
5429    /// # Note
5430    /// This only works when the attribute is lowercase.
5431    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
5432        match name {
5433            "accesskey" => self.accesskey = Some(value.into()),
5434            "autocapitalize" => self.autocapitalize = Some(value.into()),
5435            "autofocus" => self.autofocus = Some(value.into()),
5436            "class" => self.class = Some(value.into()),
5437            "contenteditable" => self.contenteditable = Some(value.into()),
5438            "contextmenu" => self.contextmenu = Some(value.into()),
5439            "dir" => self.dir = Some(value.into()),
5440            "draggable" => self.draggable = Some(value.into()),
5441            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
5442            "exportparts" => self.exportparts = Some(value.into()),
5443            "hidden" => self.hidden = Some(value.into()),
5444            "id" => self.id = Some(value.into()),
5445            "inert" => self.inert = Some(value.into()),
5446            "inputmode" => self.inputmode = Some(value.into()),
5447            "is" => self.is = Some(value.into()),
5448            "itemid" => self.itemid = Some(value.into()),
5449            "itemprop" => self.itemprop = Some(value.into()),
5450            "itemref" => self.itemref = Some(value.into()),
5451            "itemscope" => self.itemscope = Some(value.into()),
5452            "itemtype" => self.itemtype = Some(value.into()),
5453            "lang" => self.lang = Some(value.into()),
5454            "nonce" => self.nonce = Some(value.into()),
5455            "part" => self.part = Some(value.into()),
5456            "popover" => self.popover = Some(value.into()),
5457            "role" => self.role = Some(value.into()),
5458            "slot" => self.slot = Some(value.into()),
5459            "spellcheck" => self.spellcheck = Some(value.into()),
5460            "style" => self.style = Some(value.into()),
5461            "tabindex" => self.tabindex = Some(value.into()),
5462            "title" => self.title = Some(value.into()),
5463            "translate" => self.translate = Some(value.into()),
5464            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
5465            #[cfg(feature = "alloc")]
5466            _ => {
5467                #[allow(clippy::useless_conversion)]
5468                self.extra.insert(name.into(), value.into());
5469            }
5470            #[cfg(not(feature = "alloc"))]
5471            _ => {}
5472        }
5473    }
5474}
5475/// The <strong><code>&lt;article&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents a self-contained composition in a document, page, application, or site, which is intended to be independently distributable or reusable (e.g., in syndication). Examples include: a forum post, a magazine or newspaper article, or a blog entry, a product card, a user-submitted comment, an interactive widget or gadget, or any other independent item of content.
5476///
5477/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/article>
5478
5479#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
5480pub struct Article<'life> {
5481    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
5482    ///   
5483    pub accesskey: core::option::Option<AttributeValue<'life>>,
5484    ///
5485    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
5486    ///     <ul>
5487    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
5488    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
5489    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
5490    ///       <li><code>characters</code>, all letters should default to uppercase</li>
5491    ///     </ul>
5492    ///   
5493    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
5494    ///
5495    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
5496    ///   
5497    pub autofocus: core::option::Option<AttributeValue<'life>>,
5498    ///
5499    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
5500    ///   
5501    pub class: core::option::Option<AttributeValue<'life>>,
5502    ///
5503    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
5504    ///     <ul>
5505    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
5506    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
5507    ///     </ul>
5508    ///   
5509    pub contenteditable: core::option::Option<AttributeValue<'life>>,
5510    ///
5511    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
5512    ///   
5513    pub contextmenu: core::option::Option<AttributeValue<'life>>,
5514    ///
5515    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
5516    ///   
5517    #[cfg(feature = "alloc")]
5518    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
5519    ///
5520    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
5521    ///     <ul>
5522    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
5523    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
5524    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
5525    ///     </ul>
5526    ///   
5527    pub dir: core::option::Option<AttributeValue<'life>>,
5528    ///
5529    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
5530    ///     <ul>
5531    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
5532    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
5533    ///     </ul>
5534    ///   
5535    pub draggable: core::option::Option<AttributeValue<'life>>,
5536    ///
5537    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
5538    ///   
5539    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
5540    ///
5541    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
5542    ///   
5543    pub exportparts: core::option::Option<AttributeValue<'life>>,
5544    /// /// Extra attributes of the element.
5545
5546    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
5547    #[cfg(feature = "alloc")]
5548    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
5549    ///
5550    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
5551    ///   
5552    pub hidden: core::option::Option<AttributeValue<'life>>,
5553    ///
5554    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
5555    ///   
5556    pub id: core::option::Option<AttributeValue<'life>>,
5557    ///
5558    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
5559    ///   
5560    pub inert: core::option::Option<AttributeValue<'life>>,
5561    ///
5562    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
5563    ///   
5564    pub inputmode: core::option::Option<AttributeValue<'life>>,
5565    ///
5566    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
5567    ///   
5568    pub is: core::option::Option<AttributeValue<'life>>,
5569    ///
5570    ///     <p>The unique, global identifier of an item.</p>
5571    ///   
5572    pub itemid: core::option::Option<AttributeValue<'life>>,
5573    ///
5574    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
5575    ///   
5576    pub itemprop: core::option::Option<AttributeValue<'life>>,
5577    ///
5578    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
5579    ///   
5580    pub itemref: core::option::Option<AttributeValue<'life>>,
5581    ///
5582    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
5583    ///   
5584    pub itemscope: core::option::Option<AttributeValue<'life>>,
5585    ///
5586    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
5587    ///   
5588    pub itemtype: core::option::Option<AttributeValue<'life>>,
5589    ///
5590    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
5591    ///   
5592    pub lang: core::option::Option<AttributeValue<'life>>,
5593    ///
5594    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
5595    ///   
5596    pub nonce: core::option::Option<AttributeValue<'life>>,
5597    ///
5598    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
5599    ///   
5600    pub part: core::option::Option<AttributeValue<'life>>,
5601    ///
5602    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
5603    ///   
5604    pub popover: core::option::Option<AttributeValue<'life>>,
5605    ///
5606    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
5607    ///   
5608    pub role: core::option::Option<AttributeValue<'life>>,
5609    ///
5610    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
5611    ///   
5612    pub slot: core::option::Option<AttributeValue<'life>>,
5613    ///
5614    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
5615    ///     <ul>
5616    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
5617    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
5618    ///     </ul>
5619    ///   
5620    pub spellcheck: core::option::Option<AttributeValue<'life>>,
5621    ///
5622    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
5623    ///   
5624    pub style: core::option::Option<AttributeValue<'life>>,
5625    ///
5626    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
5627    ///     <ul>
5628    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
5629    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
5630    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
5631    ///     </ul>
5632    ///   
5633    pub tabindex: core::option::Option<AttributeValue<'life>>,
5634    ///
5635    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
5636    ///   
5637    pub title: core::option::Option<AttributeValue<'life>>,
5638    ///
5639    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
5640    ///     <ul>
5641    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
5642    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
5643    ///     </ul>
5644    ///   
5645    pub translate: core::option::Option<AttributeValue<'life>>,
5646    ///
5647    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
5648    ///     <ul>
5649    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
5650    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
5651    ///     </ul>
5652    ///   
5653    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
5654}
5655#[allow(deprecated)]
5656
5657impl<'life> Article<'life> {
5658    /// Get the tag name of the element.
5659    /// This is the same as the name of the struct, in kebab-case.
5660    pub fn tag() -> &'static str {
5661        "article"
5662    }
5663    /// Sets an attribute of the element.
5664    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
5665    /// If the `alloc` feature is disabled, this function will silently fail.
5666    ///
5667    /// # Note
5668    /// This only works when the attribute is lowercase.
5669    pub fn set_attr(
5670        &mut self,
5671        name: &'life str,
5672        value: impl core::convert::Into<AttributeValue<'life>>,
5673    ) {
5674        match name {
5675            "accesskey" => self.accesskey = Some(value.into()),
5676            "autocapitalize" => self.autocapitalize = Some(value.into()),
5677            "autofocus" => self.autofocus = Some(value.into()),
5678            "class" => self.class = Some(value.into()),
5679            "contenteditable" => self.contenteditable = Some(value.into()),
5680            "contextmenu" => self.contextmenu = Some(value.into()),
5681            "dir" => self.dir = Some(value.into()),
5682            "draggable" => self.draggable = Some(value.into()),
5683            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
5684            "exportparts" => self.exportparts = Some(value.into()),
5685            "hidden" => self.hidden = Some(value.into()),
5686            "id" => self.id = Some(value.into()),
5687            "inert" => self.inert = Some(value.into()),
5688            "inputmode" => self.inputmode = Some(value.into()),
5689            "is" => self.is = Some(value.into()),
5690            "itemid" => self.itemid = Some(value.into()),
5691            "itemprop" => self.itemprop = Some(value.into()),
5692            "itemref" => self.itemref = Some(value.into()),
5693            "itemscope" => self.itemscope = Some(value.into()),
5694            "itemtype" => self.itemtype = Some(value.into()),
5695            "lang" => self.lang = Some(value.into()),
5696            "nonce" => self.nonce = Some(value.into()),
5697            "part" => self.part = Some(value.into()),
5698            "popover" => self.popover = Some(value.into()),
5699            "role" => self.role = Some(value.into()),
5700            "slot" => self.slot = Some(value.into()),
5701            "spellcheck" => self.spellcheck = Some(value.into()),
5702            "style" => self.style = Some(value.into()),
5703            "tabindex" => self.tabindex = Some(value.into()),
5704            "title" => self.title = Some(value.into()),
5705            "translate" => self.translate = Some(value.into()),
5706            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
5707            #[cfg(feature = "alloc")]
5708            _ => {
5709                #[allow(clippy::useless_conversion)]
5710                self.extra.insert(name.into(), value.into());
5711            }
5712            #[cfg(not(feature = "alloc"))]
5713            _ => {}
5714        }
5715    }
5716}
5717/// The <strong><code>&lt;article&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents a self-contained composition in a document, page, application, or site, which is intended to be independently distributable or reusable (e.g., in syndication). Examples include: a forum post, a magazine or newspaper article, or a blog entry, a product card, a user-submitted comment, an interactive widget or gadget, or any other independent item of content.
5718///
5719/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/article>
5720
5721#[cfg(feature = "alloc")]
5722#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
5723pub struct ArticleOwned {
5724    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
5725    ///   
5726    pub accesskey: core::option::Option<AttributeValueOwned>,
5727    ///
5728    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
5729    ///     <ul>
5730    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
5731    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
5732    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
5733    ///       <li><code>characters</code>, all letters should default to uppercase</li>
5734    ///     </ul>
5735    ///   
5736    pub autocapitalize: core::option::Option<AttributeValueOwned>,
5737    ///
5738    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
5739    ///   
5740    pub autofocus: core::option::Option<AttributeValueOwned>,
5741    ///
5742    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
5743    ///   
5744    pub class: core::option::Option<AttributeValueOwned>,
5745    ///
5746    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
5747    ///     <ul>
5748    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
5749    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
5750    ///     </ul>
5751    ///   
5752    pub contenteditable: core::option::Option<AttributeValueOwned>,
5753    ///
5754    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
5755    ///   
5756    pub contextmenu: core::option::Option<AttributeValueOwned>,
5757    ///
5758    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
5759    ///   
5760    #[cfg(feature = "alloc")]
5761    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
5762    ///
5763    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
5764    ///     <ul>
5765    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
5766    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
5767    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
5768    ///     </ul>
5769    ///   
5770    pub dir: core::option::Option<AttributeValueOwned>,
5771    ///
5772    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
5773    ///     <ul>
5774    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
5775    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
5776    ///     </ul>
5777    ///   
5778    pub draggable: core::option::Option<AttributeValueOwned>,
5779    ///
5780    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
5781    ///   
5782    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
5783    ///
5784    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
5785    ///   
5786    pub exportparts: core::option::Option<AttributeValueOwned>,
5787    /// /// Extra attributes of the element.
5788
5789    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
5790    #[cfg(feature = "alloc")]
5791    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
5792    ///
5793    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
5794    ///   
5795    pub hidden: core::option::Option<AttributeValueOwned>,
5796    ///
5797    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
5798    ///   
5799    pub id: core::option::Option<AttributeValueOwned>,
5800    ///
5801    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
5802    ///   
5803    pub inert: core::option::Option<AttributeValueOwned>,
5804    ///
5805    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
5806    ///   
5807    pub inputmode: core::option::Option<AttributeValueOwned>,
5808    ///
5809    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
5810    ///   
5811    pub is: core::option::Option<AttributeValueOwned>,
5812    ///
5813    ///     <p>The unique, global identifier of an item.</p>
5814    ///   
5815    pub itemid: core::option::Option<AttributeValueOwned>,
5816    ///
5817    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
5818    ///   
5819    pub itemprop: core::option::Option<AttributeValueOwned>,
5820    ///
5821    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
5822    ///   
5823    pub itemref: core::option::Option<AttributeValueOwned>,
5824    ///
5825    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
5826    ///   
5827    pub itemscope: core::option::Option<AttributeValueOwned>,
5828    ///
5829    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
5830    ///   
5831    pub itemtype: core::option::Option<AttributeValueOwned>,
5832    ///
5833    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
5834    ///   
5835    pub lang: core::option::Option<AttributeValueOwned>,
5836    ///
5837    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
5838    ///   
5839    pub nonce: core::option::Option<AttributeValueOwned>,
5840    ///
5841    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
5842    ///   
5843    pub part: core::option::Option<AttributeValueOwned>,
5844    ///
5845    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
5846    ///   
5847    pub popover: core::option::Option<AttributeValueOwned>,
5848    ///
5849    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
5850    ///   
5851    pub role: core::option::Option<AttributeValueOwned>,
5852    ///
5853    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
5854    ///   
5855    pub slot: core::option::Option<AttributeValueOwned>,
5856    ///
5857    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
5858    ///     <ul>
5859    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
5860    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
5861    ///     </ul>
5862    ///   
5863    pub spellcheck: core::option::Option<AttributeValueOwned>,
5864    ///
5865    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
5866    ///   
5867    pub style: core::option::Option<AttributeValueOwned>,
5868    ///
5869    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
5870    ///     <ul>
5871    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
5872    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
5873    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
5874    ///     </ul>
5875    ///   
5876    pub tabindex: core::option::Option<AttributeValueOwned>,
5877    ///
5878    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
5879    ///   
5880    pub title: core::option::Option<AttributeValueOwned>,
5881    ///
5882    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
5883    ///     <ul>
5884    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
5885    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
5886    ///     </ul>
5887    ///   
5888    pub translate: core::option::Option<AttributeValueOwned>,
5889    ///
5890    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
5891    ///     <ul>
5892    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
5893    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
5894    ///     </ul>
5895    ///   
5896    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
5897}
5898#[allow(deprecated)]
5899#[cfg(feature = "alloc")]
5900impl ArticleOwned {
5901    /// Get the tag name of the element.
5902    /// This is the same as the name of the struct, in kebab-case.
5903    pub fn tag() -> &'static str {
5904        "article"
5905    }
5906    /// Sets an attribute of the element.
5907    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
5908    /// If the `alloc` feature is disabled, this function will silently fail.
5909    ///
5910    /// # Note
5911    /// This only works when the attribute is lowercase.
5912    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
5913        match name {
5914            "accesskey" => self.accesskey = Some(value.into()),
5915            "autocapitalize" => self.autocapitalize = Some(value.into()),
5916            "autofocus" => self.autofocus = Some(value.into()),
5917            "class" => self.class = Some(value.into()),
5918            "contenteditable" => self.contenteditable = Some(value.into()),
5919            "contextmenu" => self.contextmenu = Some(value.into()),
5920            "dir" => self.dir = Some(value.into()),
5921            "draggable" => self.draggable = Some(value.into()),
5922            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
5923            "exportparts" => self.exportparts = Some(value.into()),
5924            "hidden" => self.hidden = Some(value.into()),
5925            "id" => self.id = Some(value.into()),
5926            "inert" => self.inert = Some(value.into()),
5927            "inputmode" => self.inputmode = Some(value.into()),
5928            "is" => self.is = Some(value.into()),
5929            "itemid" => self.itemid = Some(value.into()),
5930            "itemprop" => self.itemprop = Some(value.into()),
5931            "itemref" => self.itemref = Some(value.into()),
5932            "itemscope" => self.itemscope = Some(value.into()),
5933            "itemtype" => self.itemtype = Some(value.into()),
5934            "lang" => self.lang = Some(value.into()),
5935            "nonce" => self.nonce = Some(value.into()),
5936            "part" => self.part = Some(value.into()),
5937            "popover" => self.popover = Some(value.into()),
5938            "role" => self.role = Some(value.into()),
5939            "slot" => self.slot = Some(value.into()),
5940            "spellcheck" => self.spellcheck = Some(value.into()),
5941            "style" => self.style = Some(value.into()),
5942            "tabindex" => self.tabindex = Some(value.into()),
5943            "title" => self.title = Some(value.into()),
5944            "translate" => self.translate = Some(value.into()),
5945            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
5946            #[cfg(feature = "alloc")]
5947            _ => {
5948                #[allow(clippy::useless_conversion)]
5949                self.extra.insert(name.into(), value.into());
5950            }
5951            #[cfg(not(feature = "alloc"))]
5952            _ => {}
5953        }
5954    }
5955}
5956/// The <strong><code>&lt;aside&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents a portion of a document whose content is only indirectly related to the document's main content. Asides are frequently presented as sidebars or call-out boxes.
5957///
5958/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/aside>
5959
5960#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
5961pub struct Aside<'life> {
5962    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
5963    ///   
5964    pub accesskey: core::option::Option<AttributeValue<'life>>,
5965    ///
5966    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
5967    ///     <ul>
5968    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
5969    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
5970    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
5971    ///       <li><code>characters</code>, all letters should default to uppercase</li>
5972    ///     </ul>
5973    ///   
5974    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
5975    ///
5976    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
5977    ///   
5978    pub autofocus: core::option::Option<AttributeValue<'life>>,
5979    ///
5980    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
5981    ///   
5982    pub class: core::option::Option<AttributeValue<'life>>,
5983    ///
5984    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
5985    ///     <ul>
5986    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
5987    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
5988    ///     </ul>
5989    ///   
5990    pub contenteditable: core::option::Option<AttributeValue<'life>>,
5991    ///
5992    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
5993    ///   
5994    pub contextmenu: core::option::Option<AttributeValue<'life>>,
5995    ///
5996    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
5997    ///   
5998    #[cfg(feature = "alloc")]
5999    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
6000    ///
6001    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
6002    ///     <ul>
6003    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
6004    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
6005    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
6006    ///     </ul>
6007    ///   
6008    pub dir: core::option::Option<AttributeValue<'life>>,
6009    ///
6010    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
6011    ///     <ul>
6012    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
6013    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
6014    ///     </ul>
6015    ///   
6016    pub draggable: core::option::Option<AttributeValue<'life>>,
6017    ///
6018    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
6019    ///   
6020    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
6021    ///
6022    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
6023    ///   
6024    pub exportparts: core::option::Option<AttributeValue<'life>>,
6025    /// /// Extra attributes of the element.
6026
6027    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
6028    #[cfg(feature = "alloc")]
6029    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
6030    ///
6031    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
6032    ///   
6033    pub hidden: core::option::Option<AttributeValue<'life>>,
6034    ///
6035    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
6036    ///   
6037    pub id: core::option::Option<AttributeValue<'life>>,
6038    ///
6039    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
6040    ///   
6041    pub inert: core::option::Option<AttributeValue<'life>>,
6042    ///
6043    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
6044    ///   
6045    pub inputmode: core::option::Option<AttributeValue<'life>>,
6046    ///
6047    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
6048    ///   
6049    pub is: core::option::Option<AttributeValue<'life>>,
6050    ///
6051    ///     <p>The unique, global identifier of an item.</p>
6052    ///   
6053    pub itemid: core::option::Option<AttributeValue<'life>>,
6054    ///
6055    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
6056    ///   
6057    pub itemprop: core::option::Option<AttributeValue<'life>>,
6058    ///
6059    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
6060    ///   
6061    pub itemref: core::option::Option<AttributeValue<'life>>,
6062    ///
6063    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
6064    ///   
6065    pub itemscope: core::option::Option<AttributeValue<'life>>,
6066    ///
6067    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
6068    ///   
6069    pub itemtype: core::option::Option<AttributeValue<'life>>,
6070    ///
6071    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
6072    ///   
6073    pub lang: core::option::Option<AttributeValue<'life>>,
6074    ///
6075    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
6076    ///   
6077    pub nonce: core::option::Option<AttributeValue<'life>>,
6078    ///
6079    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
6080    ///   
6081    pub part: core::option::Option<AttributeValue<'life>>,
6082    ///
6083    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
6084    ///   
6085    pub popover: core::option::Option<AttributeValue<'life>>,
6086    ///
6087    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
6088    ///   
6089    pub role: core::option::Option<AttributeValue<'life>>,
6090    ///
6091    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
6092    ///   
6093    pub slot: core::option::Option<AttributeValue<'life>>,
6094    ///
6095    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
6096    ///     <ul>
6097    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
6098    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
6099    ///     </ul>
6100    ///   
6101    pub spellcheck: core::option::Option<AttributeValue<'life>>,
6102    ///
6103    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
6104    ///   
6105    pub style: core::option::Option<AttributeValue<'life>>,
6106    ///
6107    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
6108    ///     <ul>
6109    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
6110    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
6111    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
6112    ///     </ul>
6113    ///   
6114    pub tabindex: core::option::Option<AttributeValue<'life>>,
6115    ///
6116    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
6117    ///   
6118    pub title: core::option::Option<AttributeValue<'life>>,
6119    ///
6120    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
6121    ///     <ul>
6122    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
6123    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
6124    ///     </ul>
6125    ///   
6126    pub translate: core::option::Option<AttributeValue<'life>>,
6127    ///
6128    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
6129    ///     <ul>
6130    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
6131    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
6132    ///     </ul>
6133    ///   
6134    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
6135}
6136#[allow(deprecated)]
6137
6138impl<'life> Aside<'life> {
6139    /// Get the tag name of the element.
6140    /// This is the same as the name of the struct, in kebab-case.
6141    pub fn tag() -> &'static str {
6142        "aside"
6143    }
6144    /// Sets an attribute of the element.
6145    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
6146    /// If the `alloc` feature is disabled, this function will silently fail.
6147    ///
6148    /// # Note
6149    /// This only works when the attribute is lowercase.
6150    pub fn set_attr(
6151        &mut self,
6152        name: &'life str,
6153        value: impl core::convert::Into<AttributeValue<'life>>,
6154    ) {
6155        match name {
6156            "accesskey" => self.accesskey = Some(value.into()),
6157            "autocapitalize" => self.autocapitalize = Some(value.into()),
6158            "autofocus" => self.autofocus = Some(value.into()),
6159            "class" => self.class = Some(value.into()),
6160            "contenteditable" => self.contenteditable = Some(value.into()),
6161            "contextmenu" => self.contextmenu = Some(value.into()),
6162            "dir" => self.dir = Some(value.into()),
6163            "draggable" => self.draggable = Some(value.into()),
6164            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
6165            "exportparts" => self.exportparts = Some(value.into()),
6166            "hidden" => self.hidden = Some(value.into()),
6167            "id" => self.id = Some(value.into()),
6168            "inert" => self.inert = Some(value.into()),
6169            "inputmode" => self.inputmode = Some(value.into()),
6170            "is" => self.is = Some(value.into()),
6171            "itemid" => self.itemid = Some(value.into()),
6172            "itemprop" => self.itemprop = Some(value.into()),
6173            "itemref" => self.itemref = Some(value.into()),
6174            "itemscope" => self.itemscope = Some(value.into()),
6175            "itemtype" => self.itemtype = Some(value.into()),
6176            "lang" => self.lang = Some(value.into()),
6177            "nonce" => self.nonce = Some(value.into()),
6178            "part" => self.part = Some(value.into()),
6179            "popover" => self.popover = Some(value.into()),
6180            "role" => self.role = Some(value.into()),
6181            "slot" => self.slot = Some(value.into()),
6182            "spellcheck" => self.spellcheck = Some(value.into()),
6183            "style" => self.style = Some(value.into()),
6184            "tabindex" => self.tabindex = Some(value.into()),
6185            "title" => self.title = Some(value.into()),
6186            "translate" => self.translate = Some(value.into()),
6187            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
6188            #[cfg(feature = "alloc")]
6189            _ => {
6190                #[allow(clippy::useless_conversion)]
6191                self.extra.insert(name.into(), value.into());
6192            }
6193            #[cfg(not(feature = "alloc"))]
6194            _ => {}
6195        }
6196    }
6197}
6198/// The <strong><code>&lt;aside&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents a portion of a document whose content is only indirectly related to the document's main content. Asides are frequently presented as sidebars or call-out boxes.
6199///
6200/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/aside>
6201
6202#[cfg(feature = "alloc")]
6203#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
6204pub struct AsideOwned {
6205    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
6206    ///   
6207    pub accesskey: core::option::Option<AttributeValueOwned>,
6208    ///
6209    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
6210    ///     <ul>
6211    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
6212    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
6213    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
6214    ///       <li><code>characters</code>, all letters should default to uppercase</li>
6215    ///     </ul>
6216    ///   
6217    pub autocapitalize: core::option::Option<AttributeValueOwned>,
6218    ///
6219    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
6220    ///   
6221    pub autofocus: core::option::Option<AttributeValueOwned>,
6222    ///
6223    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
6224    ///   
6225    pub class: core::option::Option<AttributeValueOwned>,
6226    ///
6227    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
6228    ///     <ul>
6229    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
6230    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
6231    ///     </ul>
6232    ///   
6233    pub contenteditable: core::option::Option<AttributeValueOwned>,
6234    ///
6235    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
6236    ///   
6237    pub contextmenu: core::option::Option<AttributeValueOwned>,
6238    ///
6239    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
6240    ///   
6241    #[cfg(feature = "alloc")]
6242    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
6243    ///
6244    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
6245    ///     <ul>
6246    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
6247    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
6248    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
6249    ///     </ul>
6250    ///   
6251    pub dir: core::option::Option<AttributeValueOwned>,
6252    ///
6253    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
6254    ///     <ul>
6255    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
6256    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
6257    ///     </ul>
6258    ///   
6259    pub draggable: core::option::Option<AttributeValueOwned>,
6260    ///
6261    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
6262    ///   
6263    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
6264    ///
6265    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
6266    ///   
6267    pub exportparts: core::option::Option<AttributeValueOwned>,
6268    /// /// Extra attributes of the element.
6269
6270    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
6271    #[cfg(feature = "alloc")]
6272    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
6273    ///
6274    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
6275    ///   
6276    pub hidden: core::option::Option<AttributeValueOwned>,
6277    ///
6278    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
6279    ///   
6280    pub id: core::option::Option<AttributeValueOwned>,
6281    ///
6282    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
6283    ///   
6284    pub inert: core::option::Option<AttributeValueOwned>,
6285    ///
6286    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
6287    ///   
6288    pub inputmode: core::option::Option<AttributeValueOwned>,
6289    ///
6290    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
6291    ///   
6292    pub is: core::option::Option<AttributeValueOwned>,
6293    ///
6294    ///     <p>The unique, global identifier of an item.</p>
6295    ///   
6296    pub itemid: core::option::Option<AttributeValueOwned>,
6297    ///
6298    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
6299    ///   
6300    pub itemprop: core::option::Option<AttributeValueOwned>,
6301    ///
6302    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
6303    ///   
6304    pub itemref: core::option::Option<AttributeValueOwned>,
6305    ///
6306    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
6307    ///   
6308    pub itemscope: core::option::Option<AttributeValueOwned>,
6309    ///
6310    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
6311    ///   
6312    pub itemtype: core::option::Option<AttributeValueOwned>,
6313    ///
6314    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
6315    ///   
6316    pub lang: core::option::Option<AttributeValueOwned>,
6317    ///
6318    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
6319    ///   
6320    pub nonce: core::option::Option<AttributeValueOwned>,
6321    ///
6322    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
6323    ///   
6324    pub part: core::option::Option<AttributeValueOwned>,
6325    ///
6326    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
6327    ///   
6328    pub popover: core::option::Option<AttributeValueOwned>,
6329    ///
6330    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
6331    ///   
6332    pub role: core::option::Option<AttributeValueOwned>,
6333    ///
6334    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
6335    ///   
6336    pub slot: core::option::Option<AttributeValueOwned>,
6337    ///
6338    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
6339    ///     <ul>
6340    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
6341    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
6342    ///     </ul>
6343    ///   
6344    pub spellcheck: core::option::Option<AttributeValueOwned>,
6345    ///
6346    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
6347    ///   
6348    pub style: core::option::Option<AttributeValueOwned>,
6349    ///
6350    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
6351    ///     <ul>
6352    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
6353    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
6354    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
6355    ///     </ul>
6356    ///   
6357    pub tabindex: core::option::Option<AttributeValueOwned>,
6358    ///
6359    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
6360    ///   
6361    pub title: core::option::Option<AttributeValueOwned>,
6362    ///
6363    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
6364    ///     <ul>
6365    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
6366    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
6367    ///     </ul>
6368    ///   
6369    pub translate: core::option::Option<AttributeValueOwned>,
6370    ///
6371    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
6372    ///     <ul>
6373    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
6374    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
6375    ///     </ul>
6376    ///   
6377    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
6378}
6379#[allow(deprecated)]
6380#[cfg(feature = "alloc")]
6381impl AsideOwned {
6382    /// Get the tag name of the element.
6383    /// This is the same as the name of the struct, in kebab-case.
6384    pub fn tag() -> &'static str {
6385        "aside"
6386    }
6387    /// Sets an attribute of the element.
6388    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
6389    /// If the `alloc` feature is disabled, this function will silently fail.
6390    ///
6391    /// # Note
6392    /// This only works when the attribute is lowercase.
6393    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
6394        match name {
6395            "accesskey" => self.accesskey = Some(value.into()),
6396            "autocapitalize" => self.autocapitalize = Some(value.into()),
6397            "autofocus" => self.autofocus = Some(value.into()),
6398            "class" => self.class = Some(value.into()),
6399            "contenteditable" => self.contenteditable = Some(value.into()),
6400            "contextmenu" => self.contextmenu = Some(value.into()),
6401            "dir" => self.dir = Some(value.into()),
6402            "draggable" => self.draggable = Some(value.into()),
6403            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
6404            "exportparts" => self.exportparts = Some(value.into()),
6405            "hidden" => self.hidden = Some(value.into()),
6406            "id" => self.id = Some(value.into()),
6407            "inert" => self.inert = Some(value.into()),
6408            "inputmode" => self.inputmode = Some(value.into()),
6409            "is" => self.is = Some(value.into()),
6410            "itemid" => self.itemid = Some(value.into()),
6411            "itemprop" => self.itemprop = Some(value.into()),
6412            "itemref" => self.itemref = Some(value.into()),
6413            "itemscope" => self.itemscope = Some(value.into()),
6414            "itemtype" => self.itemtype = Some(value.into()),
6415            "lang" => self.lang = Some(value.into()),
6416            "nonce" => self.nonce = Some(value.into()),
6417            "part" => self.part = Some(value.into()),
6418            "popover" => self.popover = Some(value.into()),
6419            "role" => self.role = Some(value.into()),
6420            "slot" => self.slot = Some(value.into()),
6421            "spellcheck" => self.spellcheck = Some(value.into()),
6422            "style" => self.style = Some(value.into()),
6423            "tabindex" => self.tabindex = Some(value.into()),
6424            "title" => self.title = Some(value.into()),
6425            "translate" => self.translate = Some(value.into()),
6426            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
6427            #[cfg(feature = "alloc")]
6428            _ => {
6429                #[allow(clippy::useless_conversion)]
6430                self.extra.insert(name.into(), value.into());
6431            }
6432            #[cfg(not(feature = "alloc"))]
6433            _ => {}
6434        }
6435    }
6436}
6437/// The <strong><code>&lt;footer&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents a footer for its nearest ancestor <a href="/en-US/docs/Web/HTML/Content_categories#sectioning_content">sectioning content</a> or <a href="/en-US/docs/Web/HTML/Element/Heading_Elements#sectioning_root">sectioning root</a> element. A <code>&lt;footer&gt;</code> typically contains information about the author of the section, copyright data or links to related documents.
6438///
6439/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/footer>
6440
6441#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
6442pub struct Footer<'life> {
6443    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
6444    ///   
6445    pub accesskey: core::option::Option<AttributeValue<'life>>,
6446    ///
6447    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
6448    ///     <ul>
6449    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
6450    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
6451    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
6452    ///       <li><code>characters</code>, all letters should default to uppercase</li>
6453    ///     </ul>
6454    ///   
6455    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
6456    ///
6457    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
6458    ///   
6459    pub autofocus: core::option::Option<AttributeValue<'life>>,
6460    ///
6461    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
6462    ///   
6463    pub class: core::option::Option<AttributeValue<'life>>,
6464    ///
6465    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
6466    ///     <ul>
6467    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
6468    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
6469    ///     </ul>
6470    ///   
6471    pub contenteditable: core::option::Option<AttributeValue<'life>>,
6472    ///
6473    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
6474    ///   
6475    pub contextmenu: core::option::Option<AttributeValue<'life>>,
6476    ///
6477    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
6478    ///   
6479    #[cfg(feature = "alloc")]
6480    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
6481    ///
6482    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
6483    ///     <ul>
6484    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
6485    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
6486    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
6487    ///     </ul>
6488    ///   
6489    pub dir: core::option::Option<AttributeValue<'life>>,
6490    ///
6491    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
6492    ///     <ul>
6493    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
6494    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
6495    ///     </ul>
6496    ///   
6497    pub draggable: core::option::Option<AttributeValue<'life>>,
6498    ///
6499    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
6500    ///   
6501    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
6502    ///
6503    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
6504    ///   
6505    pub exportparts: core::option::Option<AttributeValue<'life>>,
6506    /// /// Extra attributes of the element.
6507
6508    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
6509    #[cfg(feature = "alloc")]
6510    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
6511    ///
6512    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
6513    ///   
6514    pub hidden: core::option::Option<AttributeValue<'life>>,
6515    ///
6516    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
6517    ///   
6518    pub id: core::option::Option<AttributeValue<'life>>,
6519    ///
6520    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
6521    ///   
6522    pub inert: core::option::Option<AttributeValue<'life>>,
6523    ///
6524    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
6525    ///   
6526    pub inputmode: core::option::Option<AttributeValue<'life>>,
6527    ///
6528    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
6529    ///   
6530    pub is: core::option::Option<AttributeValue<'life>>,
6531    ///
6532    ///     <p>The unique, global identifier of an item.</p>
6533    ///   
6534    pub itemid: core::option::Option<AttributeValue<'life>>,
6535    ///
6536    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
6537    ///   
6538    pub itemprop: core::option::Option<AttributeValue<'life>>,
6539    ///
6540    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
6541    ///   
6542    pub itemref: core::option::Option<AttributeValue<'life>>,
6543    ///
6544    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
6545    ///   
6546    pub itemscope: core::option::Option<AttributeValue<'life>>,
6547    ///
6548    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
6549    ///   
6550    pub itemtype: core::option::Option<AttributeValue<'life>>,
6551    ///
6552    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
6553    ///   
6554    pub lang: core::option::Option<AttributeValue<'life>>,
6555    ///
6556    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
6557    ///   
6558    pub nonce: core::option::Option<AttributeValue<'life>>,
6559    ///
6560    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
6561    ///   
6562    pub part: core::option::Option<AttributeValue<'life>>,
6563    ///
6564    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
6565    ///   
6566    pub popover: core::option::Option<AttributeValue<'life>>,
6567    ///
6568    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
6569    ///   
6570    pub role: core::option::Option<AttributeValue<'life>>,
6571    ///
6572    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
6573    ///   
6574    pub slot: core::option::Option<AttributeValue<'life>>,
6575    ///
6576    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
6577    ///     <ul>
6578    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
6579    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
6580    ///     </ul>
6581    ///   
6582    pub spellcheck: core::option::Option<AttributeValue<'life>>,
6583    ///
6584    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
6585    ///   
6586    pub style: core::option::Option<AttributeValue<'life>>,
6587    ///
6588    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
6589    ///     <ul>
6590    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
6591    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
6592    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
6593    ///     </ul>
6594    ///   
6595    pub tabindex: core::option::Option<AttributeValue<'life>>,
6596    ///
6597    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
6598    ///   
6599    pub title: core::option::Option<AttributeValue<'life>>,
6600    ///
6601    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
6602    ///     <ul>
6603    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
6604    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
6605    ///     </ul>
6606    ///   
6607    pub translate: core::option::Option<AttributeValue<'life>>,
6608    ///
6609    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
6610    ///     <ul>
6611    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
6612    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
6613    ///     </ul>
6614    ///   
6615    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
6616}
6617#[allow(deprecated)]
6618
6619impl<'life> Footer<'life> {
6620    /// Get the tag name of the element.
6621    /// This is the same as the name of the struct, in kebab-case.
6622    pub fn tag() -> &'static str {
6623        "footer"
6624    }
6625    /// Sets an attribute of the element.
6626    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
6627    /// If the `alloc` feature is disabled, this function will silently fail.
6628    ///
6629    /// # Note
6630    /// This only works when the attribute is lowercase.
6631    pub fn set_attr(
6632        &mut self,
6633        name: &'life str,
6634        value: impl core::convert::Into<AttributeValue<'life>>,
6635    ) {
6636        match name {
6637            "accesskey" => self.accesskey = Some(value.into()),
6638            "autocapitalize" => self.autocapitalize = Some(value.into()),
6639            "autofocus" => self.autofocus = Some(value.into()),
6640            "class" => self.class = Some(value.into()),
6641            "contenteditable" => self.contenteditable = Some(value.into()),
6642            "contextmenu" => self.contextmenu = Some(value.into()),
6643            "dir" => self.dir = Some(value.into()),
6644            "draggable" => self.draggable = Some(value.into()),
6645            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
6646            "exportparts" => self.exportparts = Some(value.into()),
6647            "hidden" => self.hidden = Some(value.into()),
6648            "id" => self.id = Some(value.into()),
6649            "inert" => self.inert = Some(value.into()),
6650            "inputmode" => self.inputmode = Some(value.into()),
6651            "is" => self.is = Some(value.into()),
6652            "itemid" => self.itemid = Some(value.into()),
6653            "itemprop" => self.itemprop = Some(value.into()),
6654            "itemref" => self.itemref = Some(value.into()),
6655            "itemscope" => self.itemscope = Some(value.into()),
6656            "itemtype" => self.itemtype = Some(value.into()),
6657            "lang" => self.lang = Some(value.into()),
6658            "nonce" => self.nonce = Some(value.into()),
6659            "part" => self.part = Some(value.into()),
6660            "popover" => self.popover = Some(value.into()),
6661            "role" => self.role = Some(value.into()),
6662            "slot" => self.slot = Some(value.into()),
6663            "spellcheck" => self.spellcheck = Some(value.into()),
6664            "style" => self.style = Some(value.into()),
6665            "tabindex" => self.tabindex = Some(value.into()),
6666            "title" => self.title = Some(value.into()),
6667            "translate" => self.translate = Some(value.into()),
6668            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
6669            #[cfg(feature = "alloc")]
6670            _ => {
6671                #[allow(clippy::useless_conversion)]
6672                self.extra.insert(name.into(), value.into());
6673            }
6674            #[cfg(not(feature = "alloc"))]
6675            _ => {}
6676        }
6677    }
6678}
6679/// The <strong><code>&lt;footer&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents a footer for its nearest ancestor <a href="/en-US/docs/Web/HTML/Content_categories#sectioning_content">sectioning content</a> or <a href="/en-US/docs/Web/HTML/Element/Heading_Elements#sectioning_root">sectioning root</a> element. A <code>&lt;footer&gt;</code> typically contains information about the author of the section, copyright data or links to related documents.
6680///
6681/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/footer>
6682
6683#[cfg(feature = "alloc")]
6684#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
6685pub struct FooterOwned {
6686    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
6687    ///   
6688    pub accesskey: core::option::Option<AttributeValueOwned>,
6689    ///
6690    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
6691    ///     <ul>
6692    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
6693    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
6694    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
6695    ///       <li><code>characters</code>, all letters should default to uppercase</li>
6696    ///     </ul>
6697    ///   
6698    pub autocapitalize: core::option::Option<AttributeValueOwned>,
6699    ///
6700    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
6701    ///   
6702    pub autofocus: core::option::Option<AttributeValueOwned>,
6703    ///
6704    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
6705    ///   
6706    pub class: core::option::Option<AttributeValueOwned>,
6707    ///
6708    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
6709    ///     <ul>
6710    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
6711    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
6712    ///     </ul>
6713    ///   
6714    pub contenteditable: core::option::Option<AttributeValueOwned>,
6715    ///
6716    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
6717    ///   
6718    pub contextmenu: core::option::Option<AttributeValueOwned>,
6719    ///
6720    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
6721    ///   
6722    #[cfg(feature = "alloc")]
6723    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
6724    ///
6725    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
6726    ///     <ul>
6727    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
6728    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
6729    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
6730    ///     </ul>
6731    ///   
6732    pub dir: core::option::Option<AttributeValueOwned>,
6733    ///
6734    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
6735    ///     <ul>
6736    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
6737    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
6738    ///     </ul>
6739    ///   
6740    pub draggable: core::option::Option<AttributeValueOwned>,
6741    ///
6742    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
6743    ///   
6744    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
6745    ///
6746    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
6747    ///   
6748    pub exportparts: core::option::Option<AttributeValueOwned>,
6749    /// /// Extra attributes of the element.
6750
6751    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
6752    #[cfg(feature = "alloc")]
6753    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
6754    ///
6755    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
6756    ///   
6757    pub hidden: core::option::Option<AttributeValueOwned>,
6758    ///
6759    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
6760    ///   
6761    pub id: core::option::Option<AttributeValueOwned>,
6762    ///
6763    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
6764    ///   
6765    pub inert: core::option::Option<AttributeValueOwned>,
6766    ///
6767    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
6768    ///   
6769    pub inputmode: core::option::Option<AttributeValueOwned>,
6770    ///
6771    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
6772    ///   
6773    pub is: core::option::Option<AttributeValueOwned>,
6774    ///
6775    ///     <p>The unique, global identifier of an item.</p>
6776    ///   
6777    pub itemid: core::option::Option<AttributeValueOwned>,
6778    ///
6779    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
6780    ///   
6781    pub itemprop: core::option::Option<AttributeValueOwned>,
6782    ///
6783    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
6784    ///   
6785    pub itemref: core::option::Option<AttributeValueOwned>,
6786    ///
6787    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
6788    ///   
6789    pub itemscope: core::option::Option<AttributeValueOwned>,
6790    ///
6791    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
6792    ///   
6793    pub itemtype: core::option::Option<AttributeValueOwned>,
6794    ///
6795    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
6796    ///   
6797    pub lang: core::option::Option<AttributeValueOwned>,
6798    ///
6799    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
6800    ///   
6801    pub nonce: core::option::Option<AttributeValueOwned>,
6802    ///
6803    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
6804    ///   
6805    pub part: core::option::Option<AttributeValueOwned>,
6806    ///
6807    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
6808    ///   
6809    pub popover: core::option::Option<AttributeValueOwned>,
6810    ///
6811    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
6812    ///   
6813    pub role: core::option::Option<AttributeValueOwned>,
6814    ///
6815    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
6816    ///   
6817    pub slot: core::option::Option<AttributeValueOwned>,
6818    ///
6819    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
6820    ///     <ul>
6821    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
6822    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
6823    ///     </ul>
6824    ///   
6825    pub spellcheck: core::option::Option<AttributeValueOwned>,
6826    ///
6827    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
6828    ///   
6829    pub style: core::option::Option<AttributeValueOwned>,
6830    ///
6831    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
6832    ///     <ul>
6833    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
6834    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
6835    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
6836    ///     </ul>
6837    ///   
6838    pub tabindex: core::option::Option<AttributeValueOwned>,
6839    ///
6840    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
6841    ///   
6842    pub title: core::option::Option<AttributeValueOwned>,
6843    ///
6844    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
6845    ///     <ul>
6846    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
6847    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
6848    ///     </ul>
6849    ///   
6850    pub translate: core::option::Option<AttributeValueOwned>,
6851    ///
6852    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
6853    ///     <ul>
6854    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
6855    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
6856    ///     </ul>
6857    ///   
6858    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
6859}
6860#[allow(deprecated)]
6861#[cfg(feature = "alloc")]
6862impl FooterOwned {
6863    /// Get the tag name of the element.
6864    /// This is the same as the name of the struct, in kebab-case.
6865    pub fn tag() -> &'static str {
6866        "footer"
6867    }
6868    /// Sets an attribute of the element.
6869    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
6870    /// If the `alloc` feature is disabled, this function will silently fail.
6871    ///
6872    /// # Note
6873    /// This only works when the attribute is lowercase.
6874    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
6875        match name {
6876            "accesskey" => self.accesskey = Some(value.into()),
6877            "autocapitalize" => self.autocapitalize = Some(value.into()),
6878            "autofocus" => self.autofocus = Some(value.into()),
6879            "class" => self.class = Some(value.into()),
6880            "contenteditable" => self.contenteditable = Some(value.into()),
6881            "contextmenu" => self.contextmenu = Some(value.into()),
6882            "dir" => self.dir = Some(value.into()),
6883            "draggable" => self.draggable = Some(value.into()),
6884            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
6885            "exportparts" => self.exportparts = Some(value.into()),
6886            "hidden" => self.hidden = Some(value.into()),
6887            "id" => self.id = Some(value.into()),
6888            "inert" => self.inert = Some(value.into()),
6889            "inputmode" => self.inputmode = Some(value.into()),
6890            "is" => self.is = Some(value.into()),
6891            "itemid" => self.itemid = Some(value.into()),
6892            "itemprop" => self.itemprop = Some(value.into()),
6893            "itemref" => self.itemref = Some(value.into()),
6894            "itemscope" => self.itemscope = Some(value.into()),
6895            "itemtype" => self.itemtype = Some(value.into()),
6896            "lang" => self.lang = Some(value.into()),
6897            "nonce" => self.nonce = Some(value.into()),
6898            "part" => self.part = Some(value.into()),
6899            "popover" => self.popover = Some(value.into()),
6900            "role" => self.role = Some(value.into()),
6901            "slot" => self.slot = Some(value.into()),
6902            "spellcheck" => self.spellcheck = Some(value.into()),
6903            "style" => self.style = Some(value.into()),
6904            "tabindex" => self.tabindex = Some(value.into()),
6905            "title" => self.title = Some(value.into()),
6906            "translate" => self.translate = Some(value.into()),
6907            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
6908            #[cfg(feature = "alloc")]
6909            _ => {
6910                #[allow(clippy::useless_conversion)]
6911                self.extra.insert(name.into(), value.into());
6912            }
6913            #[cfg(not(feature = "alloc"))]
6914            _ => {}
6915        }
6916    }
6917}
6918/// The <strong><code>&lt;header&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents introductory content, typically a group of introductory or navigational aids. It may contain some heading elements but also a logo, a search form, an author name, and other elements.
6919///
6920/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/header>
6921
6922#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
6923pub struct Header<'life> {
6924    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
6925    ///   
6926    pub accesskey: core::option::Option<AttributeValue<'life>>,
6927    ///
6928    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
6929    ///     <ul>
6930    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
6931    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
6932    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
6933    ///       <li><code>characters</code>, all letters should default to uppercase</li>
6934    ///     </ul>
6935    ///   
6936    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
6937    ///
6938    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
6939    ///   
6940    pub autofocus: core::option::Option<AttributeValue<'life>>,
6941    ///
6942    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
6943    ///   
6944    pub class: core::option::Option<AttributeValue<'life>>,
6945    ///
6946    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
6947    ///     <ul>
6948    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
6949    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
6950    ///     </ul>
6951    ///   
6952    pub contenteditable: core::option::Option<AttributeValue<'life>>,
6953    ///
6954    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
6955    ///   
6956    pub contextmenu: core::option::Option<AttributeValue<'life>>,
6957    ///
6958    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
6959    ///   
6960    #[cfg(feature = "alloc")]
6961    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
6962    ///
6963    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
6964    ///     <ul>
6965    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
6966    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
6967    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
6968    ///     </ul>
6969    ///   
6970    pub dir: core::option::Option<AttributeValue<'life>>,
6971    ///
6972    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
6973    ///     <ul>
6974    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
6975    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
6976    ///     </ul>
6977    ///   
6978    pub draggable: core::option::Option<AttributeValue<'life>>,
6979    ///
6980    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
6981    ///   
6982    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
6983    ///
6984    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
6985    ///   
6986    pub exportparts: core::option::Option<AttributeValue<'life>>,
6987    /// /// Extra attributes of the element.
6988
6989    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
6990    #[cfg(feature = "alloc")]
6991    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
6992    ///
6993    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
6994    ///   
6995    pub hidden: core::option::Option<AttributeValue<'life>>,
6996    ///
6997    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
6998    ///   
6999    pub id: core::option::Option<AttributeValue<'life>>,
7000    ///
7001    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
7002    ///   
7003    pub inert: core::option::Option<AttributeValue<'life>>,
7004    ///
7005    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
7006    ///   
7007    pub inputmode: core::option::Option<AttributeValue<'life>>,
7008    ///
7009    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
7010    ///   
7011    pub is: core::option::Option<AttributeValue<'life>>,
7012    ///
7013    ///     <p>The unique, global identifier of an item.</p>
7014    ///   
7015    pub itemid: core::option::Option<AttributeValue<'life>>,
7016    ///
7017    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
7018    ///   
7019    pub itemprop: core::option::Option<AttributeValue<'life>>,
7020    ///
7021    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
7022    ///   
7023    pub itemref: core::option::Option<AttributeValue<'life>>,
7024    ///
7025    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
7026    ///   
7027    pub itemscope: core::option::Option<AttributeValue<'life>>,
7028    ///
7029    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
7030    ///   
7031    pub itemtype: core::option::Option<AttributeValue<'life>>,
7032    ///
7033    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
7034    ///   
7035    pub lang: core::option::Option<AttributeValue<'life>>,
7036    ///
7037    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
7038    ///   
7039    pub nonce: core::option::Option<AttributeValue<'life>>,
7040    ///
7041    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
7042    ///   
7043    pub part: core::option::Option<AttributeValue<'life>>,
7044    ///
7045    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
7046    ///   
7047    pub popover: core::option::Option<AttributeValue<'life>>,
7048    ///
7049    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
7050    ///   
7051    pub role: core::option::Option<AttributeValue<'life>>,
7052    ///
7053    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
7054    ///   
7055    pub slot: core::option::Option<AttributeValue<'life>>,
7056    ///
7057    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
7058    ///     <ul>
7059    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
7060    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
7061    ///     </ul>
7062    ///   
7063    pub spellcheck: core::option::Option<AttributeValue<'life>>,
7064    ///
7065    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
7066    ///   
7067    pub style: core::option::Option<AttributeValue<'life>>,
7068    ///
7069    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
7070    ///     <ul>
7071    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
7072    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
7073    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
7074    ///     </ul>
7075    ///   
7076    pub tabindex: core::option::Option<AttributeValue<'life>>,
7077    ///
7078    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
7079    ///   
7080    pub title: core::option::Option<AttributeValue<'life>>,
7081    ///
7082    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
7083    ///     <ul>
7084    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
7085    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
7086    ///     </ul>
7087    ///   
7088    pub translate: core::option::Option<AttributeValue<'life>>,
7089    ///
7090    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
7091    ///     <ul>
7092    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
7093    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
7094    ///     </ul>
7095    ///   
7096    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
7097}
7098#[allow(deprecated)]
7099
7100impl<'life> Header<'life> {
7101    /// Get the tag name of the element.
7102    /// This is the same as the name of the struct, in kebab-case.
7103    pub fn tag() -> &'static str {
7104        "header"
7105    }
7106    /// Sets an attribute of the element.
7107    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
7108    /// If the `alloc` feature is disabled, this function will silently fail.
7109    ///
7110    /// # Note
7111    /// This only works when the attribute is lowercase.
7112    pub fn set_attr(
7113        &mut self,
7114        name: &'life str,
7115        value: impl core::convert::Into<AttributeValue<'life>>,
7116    ) {
7117        match name {
7118            "accesskey" => self.accesskey = Some(value.into()),
7119            "autocapitalize" => self.autocapitalize = Some(value.into()),
7120            "autofocus" => self.autofocus = Some(value.into()),
7121            "class" => self.class = Some(value.into()),
7122            "contenteditable" => self.contenteditable = Some(value.into()),
7123            "contextmenu" => self.contextmenu = Some(value.into()),
7124            "dir" => self.dir = Some(value.into()),
7125            "draggable" => self.draggable = Some(value.into()),
7126            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
7127            "exportparts" => self.exportparts = Some(value.into()),
7128            "hidden" => self.hidden = Some(value.into()),
7129            "id" => self.id = Some(value.into()),
7130            "inert" => self.inert = Some(value.into()),
7131            "inputmode" => self.inputmode = Some(value.into()),
7132            "is" => self.is = Some(value.into()),
7133            "itemid" => self.itemid = Some(value.into()),
7134            "itemprop" => self.itemprop = Some(value.into()),
7135            "itemref" => self.itemref = Some(value.into()),
7136            "itemscope" => self.itemscope = Some(value.into()),
7137            "itemtype" => self.itemtype = Some(value.into()),
7138            "lang" => self.lang = Some(value.into()),
7139            "nonce" => self.nonce = Some(value.into()),
7140            "part" => self.part = Some(value.into()),
7141            "popover" => self.popover = Some(value.into()),
7142            "role" => self.role = Some(value.into()),
7143            "slot" => self.slot = Some(value.into()),
7144            "spellcheck" => self.spellcheck = Some(value.into()),
7145            "style" => self.style = Some(value.into()),
7146            "tabindex" => self.tabindex = Some(value.into()),
7147            "title" => self.title = Some(value.into()),
7148            "translate" => self.translate = Some(value.into()),
7149            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
7150            #[cfg(feature = "alloc")]
7151            _ => {
7152                #[allow(clippy::useless_conversion)]
7153                self.extra.insert(name.into(), value.into());
7154            }
7155            #[cfg(not(feature = "alloc"))]
7156            _ => {}
7157        }
7158    }
7159}
7160/// The <strong><code>&lt;header&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents introductory content, typically a group of introductory or navigational aids. It may contain some heading elements but also a logo, a search form, an author name, and other elements.
7161///
7162/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/header>
7163
7164#[cfg(feature = "alloc")]
7165#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
7166pub struct HeaderOwned {
7167    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
7168    ///   
7169    pub accesskey: core::option::Option<AttributeValueOwned>,
7170    ///
7171    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
7172    ///     <ul>
7173    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
7174    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
7175    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
7176    ///       <li><code>characters</code>, all letters should default to uppercase</li>
7177    ///     </ul>
7178    ///   
7179    pub autocapitalize: core::option::Option<AttributeValueOwned>,
7180    ///
7181    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
7182    ///   
7183    pub autofocus: core::option::Option<AttributeValueOwned>,
7184    ///
7185    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
7186    ///   
7187    pub class: core::option::Option<AttributeValueOwned>,
7188    ///
7189    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
7190    ///     <ul>
7191    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
7192    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
7193    ///     </ul>
7194    ///   
7195    pub contenteditable: core::option::Option<AttributeValueOwned>,
7196    ///
7197    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
7198    ///   
7199    pub contextmenu: core::option::Option<AttributeValueOwned>,
7200    ///
7201    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
7202    ///   
7203    #[cfg(feature = "alloc")]
7204    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
7205    ///
7206    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
7207    ///     <ul>
7208    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
7209    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
7210    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
7211    ///     </ul>
7212    ///   
7213    pub dir: core::option::Option<AttributeValueOwned>,
7214    ///
7215    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
7216    ///     <ul>
7217    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
7218    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
7219    ///     </ul>
7220    ///   
7221    pub draggable: core::option::Option<AttributeValueOwned>,
7222    ///
7223    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
7224    ///   
7225    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
7226    ///
7227    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
7228    ///   
7229    pub exportparts: core::option::Option<AttributeValueOwned>,
7230    /// /// Extra attributes of the element.
7231
7232    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
7233    #[cfg(feature = "alloc")]
7234    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
7235    ///
7236    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
7237    ///   
7238    pub hidden: core::option::Option<AttributeValueOwned>,
7239    ///
7240    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
7241    ///   
7242    pub id: core::option::Option<AttributeValueOwned>,
7243    ///
7244    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
7245    ///   
7246    pub inert: core::option::Option<AttributeValueOwned>,
7247    ///
7248    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
7249    ///   
7250    pub inputmode: core::option::Option<AttributeValueOwned>,
7251    ///
7252    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
7253    ///   
7254    pub is: core::option::Option<AttributeValueOwned>,
7255    ///
7256    ///     <p>The unique, global identifier of an item.</p>
7257    ///   
7258    pub itemid: core::option::Option<AttributeValueOwned>,
7259    ///
7260    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
7261    ///   
7262    pub itemprop: core::option::Option<AttributeValueOwned>,
7263    ///
7264    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
7265    ///   
7266    pub itemref: core::option::Option<AttributeValueOwned>,
7267    ///
7268    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
7269    ///   
7270    pub itemscope: core::option::Option<AttributeValueOwned>,
7271    ///
7272    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
7273    ///   
7274    pub itemtype: core::option::Option<AttributeValueOwned>,
7275    ///
7276    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
7277    ///   
7278    pub lang: core::option::Option<AttributeValueOwned>,
7279    ///
7280    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
7281    ///   
7282    pub nonce: core::option::Option<AttributeValueOwned>,
7283    ///
7284    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
7285    ///   
7286    pub part: core::option::Option<AttributeValueOwned>,
7287    ///
7288    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
7289    ///   
7290    pub popover: core::option::Option<AttributeValueOwned>,
7291    ///
7292    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
7293    ///   
7294    pub role: core::option::Option<AttributeValueOwned>,
7295    ///
7296    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
7297    ///   
7298    pub slot: core::option::Option<AttributeValueOwned>,
7299    ///
7300    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
7301    ///     <ul>
7302    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
7303    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
7304    ///     </ul>
7305    ///   
7306    pub spellcheck: core::option::Option<AttributeValueOwned>,
7307    ///
7308    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
7309    ///   
7310    pub style: core::option::Option<AttributeValueOwned>,
7311    ///
7312    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
7313    ///     <ul>
7314    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
7315    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
7316    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
7317    ///     </ul>
7318    ///   
7319    pub tabindex: core::option::Option<AttributeValueOwned>,
7320    ///
7321    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
7322    ///   
7323    pub title: core::option::Option<AttributeValueOwned>,
7324    ///
7325    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
7326    ///     <ul>
7327    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
7328    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
7329    ///     </ul>
7330    ///   
7331    pub translate: core::option::Option<AttributeValueOwned>,
7332    ///
7333    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
7334    ///     <ul>
7335    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
7336    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
7337    ///     </ul>
7338    ///   
7339    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
7340}
7341#[allow(deprecated)]
7342#[cfg(feature = "alloc")]
7343impl HeaderOwned {
7344    /// Get the tag name of the element.
7345    /// This is the same as the name of the struct, in kebab-case.
7346    pub fn tag() -> &'static str {
7347        "header"
7348    }
7349    /// Sets an attribute of the element.
7350    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
7351    /// If the `alloc` feature is disabled, this function will silently fail.
7352    ///
7353    /// # Note
7354    /// This only works when the attribute is lowercase.
7355    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
7356        match name {
7357            "accesskey" => self.accesskey = Some(value.into()),
7358            "autocapitalize" => self.autocapitalize = Some(value.into()),
7359            "autofocus" => self.autofocus = Some(value.into()),
7360            "class" => self.class = Some(value.into()),
7361            "contenteditable" => self.contenteditable = Some(value.into()),
7362            "contextmenu" => self.contextmenu = Some(value.into()),
7363            "dir" => self.dir = Some(value.into()),
7364            "draggable" => self.draggable = Some(value.into()),
7365            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
7366            "exportparts" => self.exportparts = Some(value.into()),
7367            "hidden" => self.hidden = Some(value.into()),
7368            "id" => self.id = Some(value.into()),
7369            "inert" => self.inert = Some(value.into()),
7370            "inputmode" => self.inputmode = Some(value.into()),
7371            "is" => self.is = Some(value.into()),
7372            "itemid" => self.itemid = Some(value.into()),
7373            "itemprop" => self.itemprop = Some(value.into()),
7374            "itemref" => self.itemref = Some(value.into()),
7375            "itemscope" => self.itemscope = Some(value.into()),
7376            "itemtype" => self.itemtype = Some(value.into()),
7377            "lang" => self.lang = Some(value.into()),
7378            "nonce" => self.nonce = Some(value.into()),
7379            "part" => self.part = Some(value.into()),
7380            "popover" => self.popover = Some(value.into()),
7381            "role" => self.role = Some(value.into()),
7382            "slot" => self.slot = Some(value.into()),
7383            "spellcheck" => self.spellcheck = Some(value.into()),
7384            "style" => self.style = Some(value.into()),
7385            "tabindex" => self.tabindex = Some(value.into()),
7386            "title" => self.title = Some(value.into()),
7387            "translate" => self.translate = Some(value.into()),
7388            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
7389            #[cfg(feature = "alloc")]
7390            _ => {
7391                #[allow(clippy::useless_conversion)]
7392                self.extra.insert(name.into(), value.into());
7393            }
7394            #[cfg(not(feature = "alloc"))]
7395            _ => {}
7396        }
7397    }
7398}
7399/// The <strong><code>&lt;hgroup&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents a heading and related content. It groups a single <a href="/en-US/docs/Web/HTML/Element/Heading_Elements"><code>&lt;h1&gt;–&lt;h6&gt;</code></a> element with one or more <a href="/en-US/docs/Web/HTML/Element/p"><code>&lt;p&gt;</code></a>.
7400///
7401/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/hgroup>
7402
7403#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
7404pub struct Hgroup<'life> {
7405    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
7406    ///   
7407    pub accesskey: core::option::Option<AttributeValue<'life>>,
7408    ///
7409    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
7410    ///     <ul>
7411    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
7412    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
7413    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
7414    ///       <li><code>characters</code>, all letters should default to uppercase</li>
7415    ///     </ul>
7416    ///   
7417    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
7418    ///
7419    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
7420    ///   
7421    pub autofocus: core::option::Option<AttributeValue<'life>>,
7422    ///
7423    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
7424    ///   
7425    pub class: core::option::Option<AttributeValue<'life>>,
7426    ///
7427    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
7428    ///     <ul>
7429    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
7430    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
7431    ///     </ul>
7432    ///   
7433    pub contenteditable: core::option::Option<AttributeValue<'life>>,
7434    ///
7435    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
7436    ///   
7437    pub contextmenu: core::option::Option<AttributeValue<'life>>,
7438    ///
7439    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
7440    ///   
7441    #[cfg(feature = "alloc")]
7442    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
7443    ///
7444    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
7445    ///     <ul>
7446    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
7447    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
7448    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
7449    ///     </ul>
7450    ///   
7451    pub dir: core::option::Option<AttributeValue<'life>>,
7452    ///
7453    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
7454    ///     <ul>
7455    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
7456    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
7457    ///     </ul>
7458    ///   
7459    pub draggable: core::option::Option<AttributeValue<'life>>,
7460    ///
7461    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
7462    ///   
7463    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
7464    ///
7465    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
7466    ///   
7467    pub exportparts: core::option::Option<AttributeValue<'life>>,
7468    /// /// Extra attributes of the element.
7469
7470    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
7471    #[cfg(feature = "alloc")]
7472    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
7473    ///
7474    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
7475    ///   
7476    pub hidden: core::option::Option<AttributeValue<'life>>,
7477    ///
7478    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
7479    ///   
7480    pub id: core::option::Option<AttributeValue<'life>>,
7481    ///
7482    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
7483    ///   
7484    pub inert: core::option::Option<AttributeValue<'life>>,
7485    ///
7486    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
7487    ///   
7488    pub inputmode: core::option::Option<AttributeValue<'life>>,
7489    ///
7490    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
7491    ///   
7492    pub is: core::option::Option<AttributeValue<'life>>,
7493    ///
7494    ///     <p>The unique, global identifier of an item.</p>
7495    ///   
7496    pub itemid: core::option::Option<AttributeValue<'life>>,
7497    ///
7498    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
7499    ///   
7500    pub itemprop: core::option::Option<AttributeValue<'life>>,
7501    ///
7502    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
7503    ///   
7504    pub itemref: core::option::Option<AttributeValue<'life>>,
7505    ///
7506    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
7507    ///   
7508    pub itemscope: core::option::Option<AttributeValue<'life>>,
7509    ///
7510    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
7511    ///   
7512    pub itemtype: core::option::Option<AttributeValue<'life>>,
7513    ///
7514    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
7515    ///   
7516    pub lang: core::option::Option<AttributeValue<'life>>,
7517    ///
7518    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
7519    ///   
7520    pub nonce: core::option::Option<AttributeValue<'life>>,
7521    ///
7522    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
7523    ///   
7524    pub part: core::option::Option<AttributeValue<'life>>,
7525    ///
7526    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
7527    ///   
7528    pub popover: core::option::Option<AttributeValue<'life>>,
7529    ///
7530    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
7531    ///   
7532    pub role: core::option::Option<AttributeValue<'life>>,
7533    ///
7534    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
7535    ///   
7536    pub slot: core::option::Option<AttributeValue<'life>>,
7537    ///
7538    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
7539    ///     <ul>
7540    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
7541    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
7542    ///     </ul>
7543    ///   
7544    pub spellcheck: core::option::Option<AttributeValue<'life>>,
7545    ///
7546    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
7547    ///   
7548    pub style: core::option::Option<AttributeValue<'life>>,
7549    ///
7550    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
7551    ///     <ul>
7552    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
7553    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
7554    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
7555    ///     </ul>
7556    ///   
7557    pub tabindex: core::option::Option<AttributeValue<'life>>,
7558    ///
7559    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
7560    ///   
7561    pub title: core::option::Option<AttributeValue<'life>>,
7562    ///
7563    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
7564    ///     <ul>
7565    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
7566    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
7567    ///     </ul>
7568    ///   
7569    pub translate: core::option::Option<AttributeValue<'life>>,
7570    ///
7571    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
7572    ///     <ul>
7573    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
7574    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
7575    ///     </ul>
7576    ///   
7577    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
7578}
7579#[allow(deprecated)]
7580
7581impl<'life> Hgroup<'life> {
7582    /// Get the tag name of the element.
7583    /// This is the same as the name of the struct, in kebab-case.
7584    pub fn tag() -> &'static str {
7585        "hgroup"
7586    }
7587    /// Sets an attribute of the element.
7588    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
7589    /// If the `alloc` feature is disabled, this function will silently fail.
7590    ///
7591    /// # Note
7592    /// This only works when the attribute is lowercase.
7593    pub fn set_attr(
7594        &mut self,
7595        name: &'life str,
7596        value: impl core::convert::Into<AttributeValue<'life>>,
7597    ) {
7598        match name {
7599            "accesskey" => self.accesskey = Some(value.into()),
7600            "autocapitalize" => self.autocapitalize = Some(value.into()),
7601            "autofocus" => self.autofocus = Some(value.into()),
7602            "class" => self.class = Some(value.into()),
7603            "contenteditable" => self.contenteditable = Some(value.into()),
7604            "contextmenu" => self.contextmenu = Some(value.into()),
7605            "dir" => self.dir = Some(value.into()),
7606            "draggable" => self.draggable = Some(value.into()),
7607            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
7608            "exportparts" => self.exportparts = Some(value.into()),
7609            "hidden" => self.hidden = Some(value.into()),
7610            "id" => self.id = Some(value.into()),
7611            "inert" => self.inert = Some(value.into()),
7612            "inputmode" => self.inputmode = Some(value.into()),
7613            "is" => self.is = Some(value.into()),
7614            "itemid" => self.itemid = Some(value.into()),
7615            "itemprop" => self.itemprop = Some(value.into()),
7616            "itemref" => self.itemref = Some(value.into()),
7617            "itemscope" => self.itemscope = Some(value.into()),
7618            "itemtype" => self.itemtype = Some(value.into()),
7619            "lang" => self.lang = Some(value.into()),
7620            "nonce" => self.nonce = Some(value.into()),
7621            "part" => self.part = Some(value.into()),
7622            "popover" => self.popover = Some(value.into()),
7623            "role" => self.role = Some(value.into()),
7624            "slot" => self.slot = Some(value.into()),
7625            "spellcheck" => self.spellcheck = Some(value.into()),
7626            "style" => self.style = Some(value.into()),
7627            "tabindex" => self.tabindex = Some(value.into()),
7628            "title" => self.title = Some(value.into()),
7629            "translate" => self.translate = Some(value.into()),
7630            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
7631            #[cfg(feature = "alloc")]
7632            _ => {
7633                #[allow(clippy::useless_conversion)]
7634                self.extra.insert(name.into(), value.into());
7635            }
7636            #[cfg(not(feature = "alloc"))]
7637            _ => {}
7638        }
7639    }
7640}
7641/// The <strong><code>&lt;hgroup&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents a heading and related content. It groups a single <a href="/en-US/docs/Web/HTML/Element/Heading_Elements"><code>&lt;h1&gt;–&lt;h6&gt;</code></a> element with one or more <a href="/en-US/docs/Web/HTML/Element/p"><code>&lt;p&gt;</code></a>.
7642///
7643/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/hgroup>
7644
7645#[cfg(feature = "alloc")]
7646#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
7647pub struct HgroupOwned {
7648    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
7649    ///   
7650    pub accesskey: core::option::Option<AttributeValueOwned>,
7651    ///
7652    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
7653    ///     <ul>
7654    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
7655    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
7656    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
7657    ///       <li><code>characters</code>, all letters should default to uppercase</li>
7658    ///     </ul>
7659    ///   
7660    pub autocapitalize: core::option::Option<AttributeValueOwned>,
7661    ///
7662    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
7663    ///   
7664    pub autofocus: core::option::Option<AttributeValueOwned>,
7665    ///
7666    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
7667    ///   
7668    pub class: core::option::Option<AttributeValueOwned>,
7669    ///
7670    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
7671    ///     <ul>
7672    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
7673    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
7674    ///     </ul>
7675    ///   
7676    pub contenteditable: core::option::Option<AttributeValueOwned>,
7677    ///
7678    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
7679    ///   
7680    pub contextmenu: core::option::Option<AttributeValueOwned>,
7681    ///
7682    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
7683    ///   
7684    #[cfg(feature = "alloc")]
7685    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
7686    ///
7687    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
7688    ///     <ul>
7689    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
7690    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
7691    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
7692    ///     </ul>
7693    ///   
7694    pub dir: core::option::Option<AttributeValueOwned>,
7695    ///
7696    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
7697    ///     <ul>
7698    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
7699    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
7700    ///     </ul>
7701    ///   
7702    pub draggable: core::option::Option<AttributeValueOwned>,
7703    ///
7704    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
7705    ///   
7706    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
7707    ///
7708    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
7709    ///   
7710    pub exportparts: core::option::Option<AttributeValueOwned>,
7711    /// /// Extra attributes of the element.
7712
7713    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
7714    #[cfg(feature = "alloc")]
7715    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
7716    ///
7717    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
7718    ///   
7719    pub hidden: core::option::Option<AttributeValueOwned>,
7720    ///
7721    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
7722    ///   
7723    pub id: core::option::Option<AttributeValueOwned>,
7724    ///
7725    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
7726    ///   
7727    pub inert: core::option::Option<AttributeValueOwned>,
7728    ///
7729    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
7730    ///   
7731    pub inputmode: core::option::Option<AttributeValueOwned>,
7732    ///
7733    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
7734    ///   
7735    pub is: core::option::Option<AttributeValueOwned>,
7736    ///
7737    ///     <p>The unique, global identifier of an item.</p>
7738    ///   
7739    pub itemid: core::option::Option<AttributeValueOwned>,
7740    ///
7741    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
7742    ///   
7743    pub itemprop: core::option::Option<AttributeValueOwned>,
7744    ///
7745    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
7746    ///   
7747    pub itemref: core::option::Option<AttributeValueOwned>,
7748    ///
7749    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
7750    ///   
7751    pub itemscope: core::option::Option<AttributeValueOwned>,
7752    ///
7753    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
7754    ///   
7755    pub itemtype: core::option::Option<AttributeValueOwned>,
7756    ///
7757    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
7758    ///   
7759    pub lang: core::option::Option<AttributeValueOwned>,
7760    ///
7761    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
7762    ///   
7763    pub nonce: core::option::Option<AttributeValueOwned>,
7764    ///
7765    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
7766    ///   
7767    pub part: core::option::Option<AttributeValueOwned>,
7768    ///
7769    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
7770    ///   
7771    pub popover: core::option::Option<AttributeValueOwned>,
7772    ///
7773    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
7774    ///   
7775    pub role: core::option::Option<AttributeValueOwned>,
7776    ///
7777    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
7778    ///   
7779    pub slot: core::option::Option<AttributeValueOwned>,
7780    ///
7781    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
7782    ///     <ul>
7783    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
7784    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
7785    ///     </ul>
7786    ///   
7787    pub spellcheck: core::option::Option<AttributeValueOwned>,
7788    ///
7789    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
7790    ///   
7791    pub style: core::option::Option<AttributeValueOwned>,
7792    ///
7793    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
7794    ///     <ul>
7795    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
7796    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
7797    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
7798    ///     </ul>
7799    ///   
7800    pub tabindex: core::option::Option<AttributeValueOwned>,
7801    ///
7802    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
7803    ///   
7804    pub title: core::option::Option<AttributeValueOwned>,
7805    ///
7806    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
7807    ///     <ul>
7808    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
7809    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
7810    ///     </ul>
7811    ///   
7812    pub translate: core::option::Option<AttributeValueOwned>,
7813    ///
7814    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
7815    ///     <ul>
7816    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
7817    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
7818    ///     </ul>
7819    ///   
7820    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
7821}
7822#[allow(deprecated)]
7823#[cfg(feature = "alloc")]
7824impl HgroupOwned {
7825    /// Get the tag name of the element.
7826    /// This is the same as the name of the struct, in kebab-case.
7827    pub fn tag() -> &'static str {
7828        "hgroup"
7829    }
7830    /// Sets an attribute of the element.
7831    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
7832    /// If the `alloc` feature is disabled, this function will silently fail.
7833    ///
7834    /// # Note
7835    /// This only works when the attribute is lowercase.
7836    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
7837        match name {
7838            "accesskey" => self.accesskey = Some(value.into()),
7839            "autocapitalize" => self.autocapitalize = Some(value.into()),
7840            "autofocus" => self.autofocus = Some(value.into()),
7841            "class" => self.class = Some(value.into()),
7842            "contenteditable" => self.contenteditable = Some(value.into()),
7843            "contextmenu" => self.contextmenu = Some(value.into()),
7844            "dir" => self.dir = Some(value.into()),
7845            "draggable" => self.draggable = Some(value.into()),
7846            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
7847            "exportparts" => self.exportparts = Some(value.into()),
7848            "hidden" => self.hidden = Some(value.into()),
7849            "id" => self.id = Some(value.into()),
7850            "inert" => self.inert = Some(value.into()),
7851            "inputmode" => self.inputmode = Some(value.into()),
7852            "is" => self.is = Some(value.into()),
7853            "itemid" => self.itemid = Some(value.into()),
7854            "itemprop" => self.itemprop = Some(value.into()),
7855            "itemref" => self.itemref = Some(value.into()),
7856            "itemscope" => self.itemscope = Some(value.into()),
7857            "itemtype" => self.itemtype = Some(value.into()),
7858            "lang" => self.lang = Some(value.into()),
7859            "nonce" => self.nonce = Some(value.into()),
7860            "part" => self.part = Some(value.into()),
7861            "popover" => self.popover = Some(value.into()),
7862            "role" => self.role = Some(value.into()),
7863            "slot" => self.slot = Some(value.into()),
7864            "spellcheck" => self.spellcheck = Some(value.into()),
7865            "style" => self.style = Some(value.into()),
7866            "tabindex" => self.tabindex = Some(value.into()),
7867            "title" => self.title = Some(value.into()),
7868            "translate" => self.translate = Some(value.into()),
7869            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
7870            #[cfg(feature = "alloc")]
7871            _ => {
7872                #[allow(clippy::useless_conversion)]
7873                self.extra.insert(name.into(), value.into());
7874            }
7875            #[cfg(not(feature = "alloc"))]
7876            _ => {}
7877        }
7878    }
7879}
7880/// The <strong><code>&lt;main&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents the dominant content of the <a href="/en-US/docs/Web/HTML/Element/body"><code>&lt;body&gt;</code></a> of a document. The main content area consists of content that is directly related to or expands upon the central topic of a document, or the central functionality of an application.
7881///
7882/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/main>
7883
7884#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
7885pub struct Main<'life> {
7886    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
7887    ///   
7888    pub accesskey: core::option::Option<AttributeValue<'life>>,
7889    ///
7890    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
7891    ///     <ul>
7892    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
7893    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
7894    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
7895    ///       <li><code>characters</code>, all letters should default to uppercase</li>
7896    ///     </ul>
7897    ///   
7898    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
7899    ///
7900    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
7901    ///   
7902    pub autofocus: core::option::Option<AttributeValue<'life>>,
7903    ///
7904    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
7905    ///   
7906    pub class: core::option::Option<AttributeValue<'life>>,
7907    ///
7908    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
7909    ///     <ul>
7910    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
7911    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
7912    ///     </ul>
7913    ///   
7914    pub contenteditable: core::option::Option<AttributeValue<'life>>,
7915    ///
7916    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
7917    ///   
7918    pub contextmenu: core::option::Option<AttributeValue<'life>>,
7919    ///
7920    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
7921    ///   
7922    #[cfg(feature = "alloc")]
7923    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
7924    ///
7925    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
7926    ///     <ul>
7927    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
7928    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
7929    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
7930    ///     </ul>
7931    ///   
7932    pub dir: core::option::Option<AttributeValue<'life>>,
7933    ///
7934    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
7935    ///     <ul>
7936    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
7937    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
7938    ///     </ul>
7939    ///   
7940    pub draggable: core::option::Option<AttributeValue<'life>>,
7941    ///
7942    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
7943    ///   
7944    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
7945    ///
7946    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
7947    ///   
7948    pub exportparts: core::option::Option<AttributeValue<'life>>,
7949    /// /// Extra attributes of the element.
7950
7951    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
7952    #[cfg(feature = "alloc")]
7953    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
7954    ///
7955    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
7956    ///   
7957    pub hidden: core::option::Option<AttributeValue<'life>>,
7958    ///
7959    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
7960    ///   
7961    pub id: core::option::Option<AttributeValue<'life>>,
7962    ///
7963    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
7964    ///   
7965    pub inert: core::option::Option<AttributeValue<'life>>,
7966    ///
7967    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
7968    ///   
7969    pub inputmode: core::option::Option<AttributeValue<'life>>,
7970    ///
7971    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
7972    ///   
7973    pub is: core::option::Option<AttributeValue<'life>>,
7974    ///
7975    ///     <p>The unique, global identifier of an item.</p>
7976    ///   
7977    pub itemid: core::option::Option<AttributeValue<'life>>,
7978    ///
7979    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
7980    ///   
7981    pub itemprop: core::option::Option<AttributeValue<'life>>,
7982    ///
7983    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
7984    ///   
7985    pub itemref: core::option::Option<AttributeValue<'life>>,
7986    ///
7987    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
7988    ///   
7989    pub itemscope: core::option::Option<AttributeValue<'life>>,
7990    ///
7991    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
7992    ///   
7993    pub itemtype: core::option::Option<AttributeValue<'life>>,
7994    ///
7995    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
7996    ///   
7997    pub lang: core::option::Option<AttributeValue<'life>>,
7998    ///
7999    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
8000    ///   
8001    pub nonce: core::option::Option<AttributeValue<'life>>,
8002    ///
8003    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
8004    ///   
8005    pub part: core::option::Option<AttributeValue<'life>>,
8006    ///
8007    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
8008    ///   
8009    pub popover: core::option::Option<AttributeValue<'life>>,
8010    ///
8011    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
8012    ///   
8013    pub role: core::option::Option<AttributeValue<'life>>,
8014    ///
8015    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
8016    ///   
8017    pub slot: core::option::Option<AttributeValue<'life>>,
8018    ///
8019    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
8020    ///     <ul>
8021    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
8022    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
8023    ///     </ul>
8024    ///   
8025    pub spellcheck: core::option::Option<AttributeValue<'life>>,
8026    ///
8027    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
8028    ///   
8029    pub style: core::option::Option<AttributeValue<'life>>,
8030    ///
8031    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
8032    ///     <ul>
8033    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
8034    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
8035    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
8036    ///     </ul>
8037    ///   
8038    pub tabindex: core::option::Option<AttributeValue<'life>>,
8039    ///
8040    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
8041    ///   
8042    pub title: core::option::Option<AttributeValue<'life>>,
8043    ///
8044    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
8045    ///     <ul>
8046    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
8047    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
8048    ///     </ul>
8049    ///   
8050    pub translate: core::option::Option<AttributeValue<'life>>,
8051    ///
8052    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
8053    ///     <ul>
8054    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
8055    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
8056    ///     </ul>
8057    ///   
8058    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
8059}
8060#[allow(deprecated)]
8061
8062impl<'life> Main<'life> {
8063    /// Get the tag name of the element.
8064    /// This is the same as the name of the struct, in kebab-case.
8065    pub fn tag() -> &'static str {
8066        "main"
8067    }
8068    /// Sets an attribute of the element.
8069    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
8070    /// If the `alloc` feature is disabled, this function will silently fail.
8071    ///
8072    /// # Note
8073    /// This only works when the attribute is lowercase.
8074    pub fn set_attr(
8075        &mut self,
8076        name: &'life str,
8077        value: impl core::convert::Into<AttributeValue<'life>>,
8078    ) {
8079        match name {
8080            "accesskey" => self.accesskey = Some(value.into()),
8081            "autocapitalize" => self.autocapitalize = Some(value.into()),
8082            "autofocus" => self.autofocus = Some(value.into()),
8083            "class" => self.class = Some(value.into()),
8084            "contenteditable" => self.contenteditable = Some(value.into()),
8085            "contextmenu" => self.contextmenu = Some(value.into()),
8086            "dir" => self.dir = Some(value.into()),
8087            "draggable" => self.draggable = Some(value.into()),
8088            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
8089            "exportparts" => self.exportparts = Some(value.into()),
8090            "hidden" => self.hidden = Some(value.into()),
8091            "id" => self.id = Some(value.into()),
8092            "inert" => self.inert = Some(value.into()),
8093            "inputmode" => self.inputmode = Some(value.into()),
8094            "is" => self.is = Some(value.into()),
8095            "itemid" => self.itemid = Some(value.into()),
8096            "itemprop" => self.itemprop = Some(value.into()),
8097            "itemref" => self.itemref = Some(value.into()),
8098            "itemscope" => self.itemscope = Some(value.into()),
8099            "itemtype" => self.itemtype = Some(value.into()),
8100            "lang" => self.lang = Some(value.into()),
8101            "nonce" => self.nonce = Some(value.into()),
8102            "part" => self.part = Some(value.into()),
8103            "popover" => self.popover = Some(value.into()),
8104            "role" => self.role = Some(value.into()),
8105            "slot" => self.slot = Some(value.into()),
8106            "spellcheck" => self.spellcheck = Some(value.into()),
8107            "style" => self.style = Some(value.into()),
8108            "tabindex" => self.tabindex = Some(value.into()),
8109            "title" => self.title = Some(value.into()),
8110            "translate" => self.translate = Some(value.into()),
8111            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
8112            #[cfg(feature = "alloc")]
8113            _ => {
8114                #[allow(clippy::useless_conversion)]
8115                self.extra.insert(name.into(), value.into());
8116            }
8117            #[cfg(not(feature = "alloc"))]
8118            _ => {}
8119        }
8120    }
8121}
8122/// The <strong><code>&lt;main&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents the dominant content of the <a href="/en-US/docs/Web/HTML/Element/body"><code>&lt;body&gt;</code></a> of a document. The main content area consists of content that is directly related to or expands upon the central topic of a document, or the central functionality of an application.
8123///
8124/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/main>
8125
8126#[cfg(feature = "alloc")]
8127#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
8128pub struct MainOwned {
8129    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
8130    ///   
8131    pub accesskey: core::option::Option<AttributeValueOwned>,
8132    ///
8133    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
8134    ///     <ul>
8135    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
8136    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
8137    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
8138    ///       <li><code>characters</code>, all letters should default to uppercase</li>
8139    ///     </ul>
8140    ///   
8141    pub autocapitalize: core::option::Option<AttributeValueOwned>,
8142    ///
8143    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
8144    ///   
8145    pub autofocus: core::option::Option<AttributeValueOwned>,
8146    ///
8147    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
8148    ///   
8149    pub class: core::option::Option<AttributeValueOwned>,
8150    ///
8151    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
8152    ///     <ul>
8153    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
8154    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
8155    ///     </ul>
8156    ///   
8157    pub contenteditable: core::option::Option<AttributeValueOwned>,
8158    ///
8159    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
8160    ///   
8161    pub contextmenu: core::option::Option<AttributeValueOwned>,
8162    ///
8163    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
8164    ///   
8165    #[cfg(feature = "alloc")]
8166    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
8167    ///
8168    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
8169    ///     <ul>
8170    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
8171    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
8172    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
8173    ///     </ul>
8174    ///   
8175    pub dir: core::option::Option<AttributeValueOwned>,
8176    ///
8177    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
8178    ///     <ul>
8179    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
8180    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
8181    ///     </ul>
8182    ///   
8183    pub draggable: core::option::Option<AttributeValueOwned>,
8184    ///
8185    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
8186    ///   
8187    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
8188    ///
8189    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
8190    ///   
8191    pub exportparts: core::option::Option<AttributeValueOwned>,
8192    /// /// Extra attributes of the element.
8193
8194    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
8195    #[cfg(feature = "alloc")]
8196    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
8197    ///
8198    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
8199    ///   
8200    pub hidden: core::option::Option<AttributeValueOwned>,
8201    ///
8202    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
8203    ///   
8204    pub id: core::option::Option<AttributeValueOwned>,
8205    ///
8206    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
8207    ///   
8208    pub inert: core::option::Option<AttributeValueOwned>,
8209    ///
8210    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
8211    ///   
8212    pub inputmode: core::option::Option<AttributeValueOwned>,
8213    ///
8214    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
8215    ///   
8216    pub is: core::option::Option<AttributeValueOwned>,
8217    ///
8218    ///     <p>The unique, global identifier of an item.</p>
8219    ///   
8220    pub itemid: core::option::Option<AttributeValueOwned>,
8221    ///
8222    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
8223    ///   
8224    pub itemprop: core::option::Option<AttributeValueOwned>,
8225    ///
8226    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
8227    ///   
8228    pub itemref: core::option::Option<AttributeValueOwned>,
8229    ///
8230    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
8231    ///   
8232    pub itemscope: core::option::Option<AttributeValueOwned>,
8233    ///
8234    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
8235    ///   
8236    pub itemtype: core::option::Option<AttributeValueOwned>,
8237    ///
8238    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
8239    ///   
8240    pub lang: core::option::Option<AttributeValueOwned>,
8241    ///
8242    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
8243    ///   
8244    pub nonce: core::option::Option<AttributeValueOwned>,
8245    ///
8246    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
8247    ///   
8248    pub part: core::option::Option<AttributeValueOwned>,
8249    ///
8250    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
8251    ///   
8252    pub popover: core::option::Option<AttributeValueOwned>,
8253    ///
8254    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
8255    ///   
8256    pub role: core::option::Option<AttributeValueOwned>,
8257    ///
8258    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
8259    ///   
8260    pub slot: core::option::Option<AttributeValueOwned>,
8261    ///
8262    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
8263    ///     <ul>
8264    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
8265    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
8266    ///     </ul>
8267    ///   
8268    pub spellcheck: core::option::Option<AttributeValueOwned>,
8269    ///
8270    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
8271    ///   
8272    pub style: core::option::Option<AttributeValueOwned>,
8273    ///
8274    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
8275    ///     <ul>
8276    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
8277    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
8278    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
8279    ///     </ul>
8280    ///   
8281    pub tabindex: core::option::Option<AttributeValueOwned>,
8282    ///
8283    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
8284    ///   
8285    pub title: core::option::Option<AttributeValueOwned>,
8286    ///
8287    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
8288    ///     <ul>
8289    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
8290    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
8291    ///     </ul>
8292    ///   
8293    pub translate: core::option::Option<AttributeValueOwned>,
8294    ///
8295    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
8296    ///     <ul>
8297    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
8298    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
8299    ///     </ul>
8300    ///   
8301    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
8302}
8303#[allow(deprecated)]
8304#[cfg(feature = "alloc")]
8305impl MainOwned {
8306    /// Get the tag name of the element.
8307    /// This is the same as the name of the struct, in kebab-case.
8308    pub fn tag() -> &'static str {
8309        "main"
8310    }
8311    /// Sets an attribute of the element.
8312    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
8313    /// If the `alloc` feature is disabled, this function will silently fail.
8314    ///
8315    /// # Note
8316    /// This only works when the attribute is lowercase.
8317    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
8318        match name {
8319            "accesskey" => self.accesskey = Some(value.into()),
8320            "autocapitalize" => self.autocapitalize = Some(value.into()),
8321            "autofocus" => self.autofocus = Some(value.into()),
8322            "class" => self.class = Some(value.into()),
8323            "contenteditable" => self.contenteditable = Some(value.into()),
8324            "contextmenu" => self.contextmenu = Some(value.into()),
8325            "dir" => self.dir = Some(value.into()),
8326            "draggable" => self.draggable = Some(value.into()),
8327            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
8328            "exportparts" => self.exportparts = Some(value.into()),
8329            "hidden" => self.hidden = Some(value.into()),
8330            "id" => self.id = Some(value.into()),
8331            "inert" => self.inert = Some(value.into()),
8332            "inputmode" => self.inputmode = Some(value.into()),
8333            "is" => self.is = Some(value.into()),
8334            "itemid" => self.itemid = Some(value.into()),
8335            "itemprop" => self.itemprop = Some(value.into()),
8336            "itemref" => self.itemref = Some(value.into()),
8337            "itemscope" => self.itemscope = Some(value.into()),
8338            "itemtype" => self.itemtype = Some(value.into()),
8339            "lang" => self.lang = Some(value.into()),
8340            "nonce" => self.nonce = Some(value.into()),
8341            "part" => self.part = Some(value.into()),
8342            "popover" => self.popover = Some(value.into()),
8343            "role" => self.role = Some(value.into()),
8344            "slot" => self.slot = Some(value.into()),
8345            "spellcheck" => self.spellcheck = Some(value.into()),
8346            "style" => self.style = Some(value.into()),
8347            "tabindex" => self.tabindex = Some(value.into()),
8348            "title" => self.title = Some(value.into()),
8349            "translate" => self.translate = Some(value.into()),
8350            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
8351            #[cfg(feature = "alloc")]
8352            _ => {
8353                #[allow(clippy::useless_conversion)]
8354                self.extra.insert(name.into(), value.into());
8355            }
8356            #[cfg(not(feature = "alloc"))]
8357            _ => {}
8358        }
8359    }
8360}
8361/// The <strong><code>&lt;nav&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents a section of a page whose purpose is to provide navigation links, either within the current document or to other documents. Common examples of navigation sections are menus, tables of contents, and indexes.
8362///
8363/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/nav>
8364
8365#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
8366pub struct Nav<'life> {
8367    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
8368    ///   
8369    pub accesskey: core::option::Option<AttributeValue<'life>>,
8370    ///
8371    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
8372    ///     <ul>
8373    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
8374    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
8375    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
8376    ///       <li><code>characters</code>, all letters should default to uppercase</li>
8377    ///     </ul>
8378    ///   
8379    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
8380    ///
8381    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
8382    ///   
8383    pub autofocus: core::option::Option<AttributeValue<'life>>,
8384    ///
8385    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
8386    ///   
8387    pub class: core::option::Option<AttributeValue<'life>>,
8388    ///
8389    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
8390    ///     <ul>
8391    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
8392    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
8393    ///     </ul>
8394    ///   
8395    pub contenteditable: core::option::Option<AttributeValue<'life>>,
8396    ///
8397    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
8398    ///   
8399    pub contextmenu: core::option::Option<AttributeValue<'life>>,
8400    ///
8401    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
8402    ///   
8403    #[cfg(feature = "alloc")]
8404    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
8405    ///
8406    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
8407    ///     <ul>
8408    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
8409    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
8410    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
8411    ///     </ul>
8412    ///   
8413    pub dir: core::option::Option<AttributeValue<'life>>,
8414    ///
8415    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
8416    ///     <ul>
8417    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
8418    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
8419    ///     </ul>
8420    ///   
8421    pub draggable: core::option::Option<AttributeValue<'life>>,
8422    ///
8423    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
8424    ///   
8425    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
8426    ///
8427    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
8428    ///   
8429    pub exportparts: core::option::Option<AttributeValue<'life>>,
8430    /// /// Extra attributes of the element.
8431
8432    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
8433    #[cfg(feature = "alloc")]
8434    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
8435    ///
8436    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
8437    ///   
8438    pub hidden: core::option::Option<AttributeValue<'life>>,
8439    ///
8440    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
8441    ///   
8442    pub id: core::option::Option<AttributeValue<'life>>,
8443    ///
8444    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
8445    ///   
8446    pub inert: core::option::Option<AttributeValue<'life>>,
8447    ///
8448    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
8449    ///   
8450    pub inputmode: core::option::Option<AttributeValue<'life>>,
8451    ///
8452    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
8453    ///   
8454    pub is: core::option::Option<AttributeValue<'life>>,
8455    ///
8456    ///     <p>The unique, global identifier of an item.</p>
8457    ///   
8458    pub itemid: core::option::Option<AttributeValue<'life>>,
8459    ///
8460    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
8461    ///   
8462    pub itemprop: core::option::Option<AttributeValue<'life>>,
8463    ///
8464    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
8465    ///   
8466    pub itemref: core::option::Option<AttributeValue<'life>>,
8467    ///
8468    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
8469    ///   
8470    pub itemscope: core::option::Option<AttributeValue<'life>>,
8471    ///
8472    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
8473    ///   
8474    pub itemtype: core::option::Option<AttributeValue<'life>>,
8475    ///
8476    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
8477    ///   
8478    pub lang: core::option::Option<AttributeValue<'life>>,
8479    ///
8480    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
8481    ///   
8482    pub nonce: core::option::Option<AttributeValue<'life>>,
8483    ///
8484    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
8485    ///   
8486    pub part: core::option::Option<AttributeValue<'life>>,
8487    ///
8488    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
8489    ///   
8490    pub popover: core::option::Option<AttributeValue<'life>>,
8491    ///
8492    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
8493    ///   
8494    pub role: core::option::Option<AttributeValue<'life>>,
8495    ///
8496    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
8497    ///   
8498    pub slot: core::option::Option<AttributeValue<'life>>,
8499    ///
8500    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
8501    ///     <ul>
8502    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
8503    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
8504    ///     </ul>
8505    ///   
8506    pub spellcheck: core::option::Option<AttributeValue<'life>>,
8507    ///
8508    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
8509    ///   
8510    pub style: core::option::Option<AttributeValue<'life>>,
8511    ///
8512    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
8513    ///     <ul>
8514    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
8515    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
8516    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
8517    ///     </ul>
8518    ///   
8519    pub tabindex: core::option::Option<AttributeValue<'life>>,
8520    ///
8521    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
8522    ///   
8523    pub title: core::option::Option<AttributeValue<'life>>,
8524    ///
8525    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
8526    ///     <ul>
8527    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
8528    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
8529    ///     </ul>
8530    ///   
8531    pub translate: core::option::Option<AttributeValue<'life>>,
8532    ///
8533    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
8534    ///     <ul>
8535    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
8536    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
8537    ///     </ul>
8538    ///   
8539    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
8540}
8541#[allow(deprecated)]
8542
8543impl<'life> Nav<'life> {
8544    /// Get the tag name of the element.
8545    /// This is the same as the name of the struct, in kebab-case.
8546    pub fn tag() -> &'static str {
8547        "nav"
8548    }
8549    /// Sets an attribute of the element.
8550    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
8551    /// If the `alloc` feature is disabled, this function will silently fail.
8552    ///
8553    /// # Note
8554    /// This only works when the attribute is lowercase.
8555    pub fn set_attr(
8556        &mut self,
8557        name: &'life str,
8558        value: impl core::convert::Into<AttributeValue<'life>>,
8559    ) {
8560        match name {
8561            "accesskey" => self.accesskey = Some(value.into()),
8562            "autocapitalize" => self.autocapitalize = Some(value.into()),
8563            "autofocus" => self.autofocus = Some(value.into()),
8564            "class" => self.class = Some(value.into()),
8565            "contenteditable" => self.contenteditable = Some(value.into()),
8566            "contextmenu" => self.contextmenu = Some(value.into()),
8567            "dir" => self.dir = Some(value.into()),
8568            "draggable" => self.draggable = Some(value.into()),
8569            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
8570            "exportparts" => self.exportparts = Some(value.into()),
8571            "hidden" => self.hidden = Some(value.into()),
8572            "id" => self.id = Some(value.into()),
8573            "inert" => self.inert = Some(value.into()),
8574            "inputmode" => self.inputmode = Some(value.into()),
8575            "is" => self.is = Some(value.into()),
8576            "itemid" => self.itemid = Some(value.into()),
8577            "itemprop" => self.itemprop = Some(value.into()),
8578            "itemref" => self.itemref = Some(value.into()),
8579            "itemscope" => self.itemscope = Some(value.into()),
8580            "itemtype" => self.itemtype = Some(value.into()),
8581            "lang" => self.lang = Some(value.into()),
8582            "nonce" => self.nonce = Some(value.into()),
8583            "part" => self.part = Some(value.into()),
8584            "popover" => self.popover = Some(value.into()),
8585            "role" => self.role = Some(value.into()),
8586            "slot" => self.slot = Some(value.into()),
8587            "spellcheck" => self.spellcheck = Some(value.into()),
8588            "style" => self.style = Some(value.into()),
8589            "tabindex" => self.tabindex = Some(value.into()),
8590            "title" => self.title = Some(value.into()),
8591            "translate" => self.translate = Some(value.into()),
8592            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
8593            #[cfg(feature = "alloc")]
8594            _ => {
8595                #[allow(clippy::useless_conversion)]
8596                self.extra.insert(name.into(), value.into());
8597            }
8598            #[cfg(not(feature = "alloc"))]
8599            _ => {}
8600        }
8601    }
8602}
8603/// The <strong><code>&lt;nav&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents a section of a page whose purpose is to provide navigation links, either within the current document or to other documents. Common examples of navigation sections are menus, tables of contents, and indexes.
8604///
8605/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/nav>
8606
8607#[cfg(feature = "alloc")]
8608#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
8609pub struct NavOwned {
8610    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
8611    ///   
8612    pub accesskey: core::option::Option<AttributeValueOwned>,
8613    ///
8614    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
8615    ///     <ul>
8616    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
8617    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
8618    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
8619    ///       <li><code>characters</code>, all letters should default to uppercase</li>
8620    ///     </ul>
8621    ///   
8622    pub autocapitalize: core::option::Option<AttributeValueOwned>,
8623    ///
8624    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
8625    ///   
8626    pub autofocus: core::option::Option<AttributeValueOwned>,
8627    ///
8628    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
8629    ///   
8630    pub class: core::option::Option<AttributeValueOwned>,
8631    ///
8632    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
8633    ///     <ul>
8634    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
8635    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
8636    ///     </ul>
8637    ///   
8638    pub contenteditable: core::option::Option<AttributeValueOwned>,
8639    ///
8640    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
8641    ///   
8642    pub contextmenu: core::option::Option<AttributeValueOwned>,
8643    ///
8644    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
8645    ///   
8646    #[cfg(feature = "alloc")]
8647    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
8648    ///
8649    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
8650    ///     <ul>
8651    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
8652    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
8653    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
8654    ///     </ul>
8655    ///   
8656    pub dir: core::option::Option<AttributeValueOwned>,
8657    ///
8658    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
8659    ///     <ul>
8660    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
8661    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
8662    ///     </ul>
8663    ///   
8664    pub draggable: core::option::Option<AttributeValueOwned>,
8665    ///
8666    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
8667    ///   
8668    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
8669    ///
8670    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
8671    ///   
8672    pub exportparts: core::option::Option<AttributeValueOwned>,
8673    /// /// Extra attributes of the element.
8674
8675    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
8676    #[cfg(feature = "alloc")]
8677    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
8678    ///
8679    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
8680    ///   
8681    pub hidden: core::option::Option<AttributeValueOwned>,
8682    ///
8683    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
8684    ///   
8685    pub id: core::option::Option<AttributeValueOwned>,
8686    ///
8687    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
8688    ///   
8689    pub inert: core::option::Option<AttributeValueOwned>,
8690    ///
8691    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
8692    ///   
8693    pub inputmode: core::option::Option<AttributeValueOwned>,
8694    ///
8695    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
8696    ///   
8697    pub is: core::option::Option<AttributeValueOwned>,
8698    ///
8699    ///     <p>The unique, global identifier of an item.</p>
8700    ///   
8701    pub itemid: core::option::Option<AttributeValueOwned>,
8702    ///
8703    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
8704    ///   
8705    pub itemprop: core::option::Option<AttributeValueOwned>,
8706    ///
8707    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
8708    ///   
8709    pub itemref: core::option::Option<AttributeValueOwned>,
8710    ///
8711    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
8712    ///   
8713    pub itemscope: core::option::Option<AttributeValueOwned>,
8714    ///
8715    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
8716    ///   
8717    pub itemtype: core::option::Option<AttributeValueOwned>,
8718    ///
8719    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
8720    ///   
8721    pub lang: core::option::Option<AttributeValueOwned>,
8722    ///
8723    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
8724    ///   
8725    pub nonce: core::option::Option<AttributeValueOwned>,
8726    ///
8727    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
8728    ///   
8729    pub part: core::option::Option<AttributeValueOwned>,
8730    ///
8731    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
8732    ///   
8733    pub popover: core::option::Option<AttributeValueOwned>,
8734    ///
8735    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
8736    ///   
8737    pub role: core::option::Option<AttributeValueOwned>,
8738    ///
8739    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
8740    ///   
8741    pub slot: core::option::Option<AttributeValueOwned>,
8742    ///
8743    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
8744    ///     <ul>
8745    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
8746    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
8747    ///     </ul>
8748    ///   
8749    pub spellcheck: core::option::Option<AttributeValueOwned>,
8750    ///
8751    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
8752    ///   
8753    pub style: core::option::Option<AttributeValueOwned>,
8754    ///
8755    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
8756    ///     <ul>
8757    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
8758    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
8759    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
8760    ///     </ul>
8761    ///   
8762    pub tabindex: core::option::Option<AttributeValueOwned>,
8763    ///
8764    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
8765    ///   
8766    pub title: core::option::Option<AttributeValueOwned>,
8767    ///
8768    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
8769    ///     <ul>
8770    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
8771    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
8772    ///     </ul>
8773    ///   
8774    pub translate: core::option::Option<AttributeValueOwned>,
8775    ///
8776    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
8777    ///     <ul>
8778    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
8779    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
8780    ///     </ul>
8781    ///   
8782    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
8783}
8784#[allow(deprecated)]
8785#[cfg(feature = "alloc")]
8786impl NavOwned {
8787    /// Get the tag name of the element.
8788    /// This is the same as the name of the struct, in kebab-case.
8789    pub fn tag() -> &'static str {
8790        "nav"
8791    }
8792    /// Sets an attribute of the element.
8793    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
8794    /// If the `alloc` feature is disabled, this function will silently fail.
8795    ///
8796    /// # Note
8797    /// This only works when the attribute is lowercase.
8798    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
8799        match name {
8800            "accesskey" => self.accesskey = Some(value.into()),
8801            "autocapitalize" => self.autocapitalize = Some(value.into()),
8802            "autofocus" => self.autofocus = Some(value.into()),
8803            "class" => self.class = Some(value.into()),
8804            "contenteditable" => self.contenteditable = Some(value.into()),
8805            "contextmenu" => self.contextmenu = Some(value.into()),
8806            "dir" => self.dir = Some(value.into()),
8807            "draggable" => self.draggable = Some(value.into()),
8808            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
8809            "exportparts" => self.exportparts = Some(value.into()),
8810            "hidden" => self.hidden = Some(value.into()),
8811            "id" => self.id = Some(value.into()),
8812            "inert" => self.inert = Some(value.into()),
8813            "inputmode" => self.inputmode = Some(value.into()),
8814            "is" => self.is = Some(value.into()),
8815            "itemid" => self.itemid = Some(value.into()),
8816            "itemprop" => self.itemprop = Some(value.into()),
8817            "itemref" => self.itemref = Some(value.into()),
8818            "itemscope" => self.itemscope = Some(value.into()),
8819            "itemtype" => self.itemtype = Some(value.into()),
8820            "lang" => self.lang = Some(value.into()),
8821            "nonce" => self.nonce = Some(value.into()),
8822            "part" => self.part = Some(value.into()),
8823            "popover" => self.popover = Some(value.into()),
8824            "role" => self.role = Some(value.into()),
8825            "slot" => self.slot = Some(value.into()),
8826            "spellcheck" => self.spellcheck = Some(value.into()),
8827            "style" => self.style = Some(value.into()),
8828            "tabindex" => self.tabindex = Some(value.into()),
8829            "title" => self.title = Some(value.into()),
8830            "translate" => self.translate = Some(value.into()),
8831            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
8832            #[cfg(feature = "alloc")]
8833            _ => {
8834                #[allow(clippy::useless_conversion)]
8835                self.extra.insert(name.into(), value.into());
8836            }
8837            #[cfg(not(feature = "alloc"))]
8838            _ => {}
8839        }
8840    }
8841}
8842/// The <strong><code>&lt;section&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents a generic standalone section of a document, which doesn't have a more specific semantic element to represent it. Sections should always have a heading, with very few exceptions.
8843///
8844/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/section>
8845
8846#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
8847pub struct Section<'life> {
8848    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
8849    ///   
8850    pub accesskey: core::option::Option<AttributeValue<'life>>,
8851    ///
8852    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
8853    ///     <ul>
8854    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
8855    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
8856    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
8857    ///       <li><code>characters</code>, all letters should default to uppercase</li>
8858    ///     </ul>
8859    ///   
8860    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
8861    ///
8862    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
8863    ///   
8864    pub autofocus: core::option::Option<AttributeValue<'life>>,
8865    ///
8866    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
8867    ///   
8868    pub class: core::option::Option<AttributeValue<'life>>,
8869    ///
8870    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
8871    ///     <ul>
8872    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
8873    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
8874    ///     </ul>
8875    ///   
8876    pub contenteditable: core::option::Option<AttributeValue<'life>>,
8877    ///
8878    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
8879    ///   
8880    pub contextmenu: core::option::Option<AttributeValue<'life>>,
8881    ///
8882    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
8883    ///   
8884    #[cfg(feature = "alloc")]
8885    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
8886    ///
8887    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
8888    ///     <ul>
8889    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
8890    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
8891    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
8892    ///     </ul>
8893    ///   
8894    pub dir: core::option::Option<AttributeValue<'life>>,
8895    ///
8896    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
8897    ///     <ul>
8898    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
8899    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
8900    ///     </ul>
8901    ///   
8902    pub draggable: core::option::Option<AttributeValue<'life>>,
8903    ///
8904    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
8905    ///   
8906    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
8907    ///
8908    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
8909    ///   
8910    pub exportparts: core::option::Option<AttributeValue<'life>>,
8911    /// /// Extra attributes of the element.
8912
8913    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
8914    #[cfg(feature = "alloc")]
8915    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
8916    ///
8917    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
8918    ///   
8919    pub hidden: core::option::Option<AttributeValue<'life>>,
8920    ///
8921    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
8922    ///   
8923    pub id: core::option::Option<AttributeValue<'life>>,
8924    ///
8925    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
8926    ///   
8927    pub inert: core::option::Option<AttributeValue<'life>>,
8928    ///
8929    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
8930    ///   
8931    pub inputmode: core::option::Option<AttributeValue<'life>>,
8932    ///
8933    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
8934    ///   
8935    pub is: core::option::Option<AttributeValue<'life>>,
8936    ///
8937    ///     <p>The unique, global identifier of an item.</p>
8938    ///   
8939    pub itemid: core::option::Option<AttributeValue<'life>>,
8940    ///
8941    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
8942    ///   
8943    pub itemprop: core::option::Option<AttributeValue<'life>>,
8944    ///
8945    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
8946    ///   
8947    pub itemref: core::option::Option<AttributeValue<'life>>,
8948    ///
8949    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
8950    ///   
8951    pub itemscope: core::option::Option<AttributeValue<'life>>,
8952    ///
8953    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
8954    ///   
8955    pub itemtype: core::option::Option<AttributeValue<'life>>,
8956    ///
8957    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
8958    ///   
8959    pub lang: core::option::Option<AttributeValue<'life>>,
8960    ///
8961    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
8962    ///   
8963    pub nonce: core::option::Option<AttributeValue<'life>>,
8964    ///
8965    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
8966    ///   
8967    pub part: core::option::Option<AttributeValue<'life>>,
8968    ///
8969    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
8970    ///   
8971    pub popover: core::option::Option<AttributeValue<'life>>,
8972    ///
8973    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
8974    ///   
8975    pub role: core::option::Option<AttributeValue<'life>>,
8976    ///
8977    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
8978    ///   
8979    pub slot: core::option::Option<AttributeValue<'life>>,
8980    ///
8981    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
8982    ///     <ul>
8983    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
8984    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
8985    ///     </ul>
8986    ///   
8987    pub spellcheck: core::option::Option<AttributeValue<'life>>,
8988    ///
8989    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
8990    ///   
8991    pub style: core::option::Option<AttributeValue<'life>>,
8992    ///
8993    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
8994    ///     <ul>
8995    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
8996    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
8997    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
8998    ///     </ul>
8999    ///   
9000    pub tabindex: core::option::Option<AttributeValue<'life>>,
9001    ///
9002    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
9003    ///   
9004    pub title: core::option::Option<AttributeValue<'life>>,
9005    ///
9006    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
9007    ///     <ul>
9008    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
9009    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
9010    ///     </ul>
9011    ///   
9012    pub translate: core::option::Option<AttributeValue<'life>>,
9013    ///
9014    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
9015    ///     <ul>
9016    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
9017    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
9018    ///     </ul>
9019    ///   
9020    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
9021}
9022#[allow(deprecated)]
9023
9024impl<'life> Section<'life> {
9025    /// Get the tag name of the element.
9026    /// This is the same as the name of the struct, in kebab-case.
9027    pub fn tag() -> &'static str {
9028        "section"
9029    }
9030    /// Sets an attribute of the element.
9031    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
9032    /// If the `alloc` feature is disabled, this function will silently fail.
9033    ///
9034    /// # Note
9035    /// This only works when the attribute is lowercase.
9036    pub fn set_attr(
9037        &mut self,
9038        name: &'life str,
9039        value: impl core::convert::Into<AttributeValue<'life>>,
9040    ) {
9041        match name {
9042            "accesskey" => self.accesskey = Some(value.into()),
9043            "autocapitalize" => self.autocapitalize = Some(value.into()),
9044            "autofocus" => self.autofocus = Some(value.into()),
9045            "class" => self.class = Some(value.into()),
9046            "contenteditable" => self.contenteditable = Some(value.into()),
9047            "contextmenu" => self.contextmenu = Some(value.into()),
9048            "dir" => self.dir = Some(value.into()),
9049            "draggable" => self.draggable = Some(value.into()),
9050            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
9051            "exportparts" => self.exportparts = Some(value.into()),
9052            "hidden" => self.hidden = Some(value.into()),
9053            "id" => self.id = Some(value.into()),
9054            "inert" => self.inert = Some(value.into()),
9055            "inputmode" => self.inputmode = Some(value.into()),
9056            "is" => self.is = Some(value.into()),
9057            "itemid" => self.itemid = Some(value.into()),
9058            "itemprop" => self.itemprop = Some(value.into()),
9059            "itemref" => self.itemref = Some(value.into()),
9060            "itemscope" => self.itemscope = Some(value.into()),
9061            "itemtype" => self.itemtype = Some(value.into()),
9062            "lang" => self.lang = Some(value.into()),
9063            "nonce" => self.nonce = Some(value.into()),
9064            "part" => self.part = Some(value.into()),
9065            "popover" => self.popover = Some(value.into()),
9066            "role" => self.role = Some(value.into()),
9067            "slot" => self.slot = Some(value.into()),
9068            "spellcheck" => self.spellcheck = Some(value.into()),
9069            "style" => self.style = Some(value.into()),
9070            "tabindex" => self.tabindex = Some(value.into()),
9071            "title" => self.title = Some(value.into()),
9072            "translate" => self.translate = Some(value.into()),
9073            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
9074            #[cfg(feature = "alloc")]
9075            _ => {
9076                #[allow(clippy::useless_conversion)]
9077                self.extra.insert(name.into(), value.into());
9078            }
9079            #[cfg(not(feature = "alloc"))]
9080            _ => {}
9081        }
9082    }
9083}
9084/// The <strong><code>&lt;section&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents a generic standalone section of a document, which doesn't have a more specific semantic element to represent it. Sections should always have a heading, with very few exceptions.
9085///
9086/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/section>
9087
9088#[cfg(feature = "alloc")]
9089#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
9090pub struct SectionOwned {
9091    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
9092    ///   
9093    pub accesskey: core::option::Option<AttributeValueOwned>,
9094    ///
9095    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
9096    ///     <ul>
9097    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
9098    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
9099    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
9100    ///       <li><code>characters</code>, all letters should default to uppercase</li>
9101    ///     </ul>
9102    ///   
9103    pub autocapitalize: core::option::Option<AttributeValueOwned>,
9104    ///
9105    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
9106    ///   
9107    pub autofocus: core::option::Option<AttributeValueOwned>,
9108    ///
9109    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
9110    ///   
9111    pub class: core::option::Option<AttributeValueOwned>,
9112    ///
9113    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
9114    ///     <ul>
9115    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
9116    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
9117    ///     </ul>
9118    ///   
9119    pub contenteditable: core::option::Option<AttributeValueOwned>,
9120    ///
9121    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
9122    ///   
9123    pub contextmenu: core::option::Option<AttributeValueOwned>,
9124    ///
9125    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
9126    ///   
9127    #[cfg(feature = "alloc")]
9128    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
9129    ///
9130    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
9131    ///     <ul>
9132    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
9133    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
9134    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
9135    ///     </ul>
9136    ///   
9137    pub dir: core::option::Option<AttributeValueOwned>,
9138    ///
9139    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
9140    ///     <ul>
9141    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
9142    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
9143    ///     </ul>
9144    ///   
9145    pub draggable: core::option::Option<AttributeValueOwned>,
9146    ///
9147    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
9148    ///   
9149    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
9150    ///
9151    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
9152    ///   
9153    pub exportparts: core::option::Option<AttributeValueOwned>,
9154    /// /// Extra attributes of the element.
9155
9156    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
9157    #[cfg(feature = "alloc")]
9158    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
9159    ///
9160    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
9161    ///   
9162    pub hidden: core::option::Option<AttributeValueOwned>,
9163    ///
9164    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
9165    ///   
9166    pub id: core::option::Option<AttributeValueOwned>,
9167    ///
9168    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
9169    ///   
9170    pub inert: core::option::Option<AttributeValueOwned>,
9171    ///
9172    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
9173    ///   
9174    pub inputmode: core::option::Option<AttributeValueOwned>,
9175    ///
9176    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
9177    ///   
9178    pub is: core::option::Option<AttributeValueOwned>,
9179    ///
9180    ///     <p>The unique, global identifier of an item.</p>
9181    ///   
9182    pub itemid: core::option::Option<AttributeValueOwned>,
9183    ///
9184    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
9185    ///   
9186    pub itemprop: core::option::Option<AttributeValueOwned>,
9187    ///
9188    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
9189    ///   
9190    pub itemref: core::option::Option<AttributeValueOwned>,
9191    ///
9192    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
9193    ///   
9194    pub itemscope: core::option::Option<AttributeValueOwned>,
9195    ///
9196    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
9197    ///   
9198    pub itemtype: core::option::Option<AttributeValueOwned>,
9199    ///
9200    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
9201    ///   
9202    pub lang: core::option::Option<AttributeValueOwned>,
9203    ///
9204    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
9205    ///   
9206    pub nonce: core::option::Option<AttributeValueOwned>,
9207    ///
9208    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
9209    ///   
9210    pub part: core::option::Option<AttributeValueOwned>,
9211    ///
9212    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
9213    ///   
9214    pub popover: core::option::Option<AttributeValueOwned>,
9215    ///
9216    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
9217    ///   
9218    pub role: core::option::Option<AttributeValueOwned>,
9219    ///
9220    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
9221    ///   
9222    pub slot: core::option::Option<AttributeValueOwned>,
9223    ///
9224    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
9225    ///     <ul>
9226    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
9227    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
9228    ///     </ul>
9229    ///   
9230    pub spellcheck: core::option::Option<AttributeValueOwned>,
9231    ///
9232    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
9233    ///   
9234    pub style: core::option::Option<AttributeValueOwned>,
9235    ///
9236    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
9237    ///     <ul>
9238    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
9239    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
9240    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
9241    ///     </ul>
9242    ///   
9243    pub tabindex: core::option::Option<AttributeValueOwned>,
9244    ///
9245    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
9246    ///   
9247    pub title: core::option::Option<AttributeValueOwned>,
9248    ///
9249    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
9250    ///     <ul>
9251    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
9252    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
9253    ///     </ul>
9254    ///   
9255    pub translate: core::option::Option<AttributeValueOwned>,
9256    ///
9257    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
9258    ///     <ul>
9259    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
9260    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
9261    ///     </ul>
9262    ///   
9263    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
9264}
9265#[allow(deprecated)]
9266#[cfg(feature = "alloc")]
9267impl SectionOwned {
9268    /// Get the tag name of the element.
9269    /// This is the same as the name of the struct, in kebab-case.
9270    pub fn tag() -> &'static str {
9271        "section"
9272    }
9273    /// Sets an attribute of the element.
9274    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
9275    /// If the `alloc` feature is disabled, this function will silently fail.
9276    ///
9277    /// # Note
9278    /// This only works when the attribute is lowercase.
9279    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
9280        match name {
9281            "accesskey" => self.accesskey = Some(value.into()),
9282            "autocapitalize" => self.autocapitalize = Some(value.into()),
9283            "autofocus" => self.autofocus = Some(value.into()),
9284            "class" => self.class = Some(value.into()),
9285            "contenteditable" => self.contenteditable = Some(value.into()),
9286            "contextmenu" => self.contextmenu = Some(value.into()),
9287            "dir" => self.dir = Some(value.into()),
9288            "draggable" => self.draggable = Some(value.into()),
9289            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
9290            "exportparts" => self.exportparts = Some(value.into()),
9291            "hidden" => self.hidden = Some(value.into()),
9292            "id" => self.id = Some(value.into()),
9293            "inert" => self.inert = Some(value.into()),
9294            "inputmode" => self.inputmode = Some(value.into()),
9295            "is" => self.is = Some(value.into()),
9296            "itemid" => self.itemid = Some(value.into()),
9297            "itemprop" => self.itemprop = Some(value.into()),
9298            "itemref" => self.itemref = Some(value.into()),
9299            "itemscope" => self.itemscope = Some(value.into()),
9300            "itemtype" => self.itemtype = Some(value.into()),
9301            "lang" => self.lang = Some(value.into()),
9302            "nonce" => self.nonce = Some(value.into()),
9303            "part" => self.part = Some(value.into()),
9304            "popover" => self.popover = Some(value.into()),
9305            "role" => self.role = Some(value.into()),
9306            "slot" => self.slot = Some(value.into()),
9307            "spellcheck" => self.spellcheck = Some(value.into()),
9308            "style" => self.style = Some(value.into()),
9309            "tabindex" => self.tabindex = Some(value.into()),
9310            "title" => self.title = Some(value.into()),
9311            "translate" => self.translate = Some(value.into()),
9312            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
9313            #[cfg(feature = "alloc")]
9314            _ => {
9315                #[allow(clippy::useless_conversion)]
9316                self.extra.insert(name.into(), value.into());
9317            }
9318            #[cfg(not(feature = "alloc"))]
9319            _ => {}
9320        }
9321    }
9322}
9323/// The <strong><code>&lt;blockquote&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element indicates that the enclosed text is an extended quotation. Usually, this is rendered visually by indentation (see <a href="#usage_notes">Notes</a> for how to change it). A URL for the source of the quotation may be given using the <code>cite</code> attribute, while a text representation of the source can be given using the <a href="/en-US/docs/Web/HTML/Element/cite"><code>&lt;cite&gt;</code></a> element.
9324///
9325/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/blockquote>
9326
9327#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
9328pub struct Blockquote<'life> {
9329    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
9330    ///   
9331    pub accesskey: core::option::Option<AttributeValue<'life>>,
9332    ///
9333    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
9334    ///     <ul>
9335    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
9336    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
9337    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
9338    ///       <li><code>characters</code>, all letters should default to uppercase</li>
9339    ///     </ul>
9340    ///   
9341    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
9342    ///
9343    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
9344    ///   
9345    pub autofocus: core::option::Option<AttributeValue<'life>>,
9346    ///
9347    ///     <p>A URL that designates a source document or message for the information quoted. This attribute is intended to point to information explaining the context or the reference for the quote.</p>
9348    ///   
9349    pub cite: core::option::Option<AttributeValue<'life>>,
9350    ///
9351    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
9352    ///   
9353    pub class: core::option::Option<AttributeValue<'life>>,
9354    ///
9355    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
9356    ///     <ul>
9357    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
9358    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
9359    ///     </ul>
9360    ///   
9361    pub contenteditable: core::option::Option<AttributeValue<'life>>,
9362    ///
9363    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
9364    ///   
9365    pub contextmenu: core::option::Option<AttributeValue<'life>>,
9366    ///
9367    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
9368    ///   
9369    #[cfg(feature = "alloc")]
9370    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
9371    ///
9372    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
9373    ///     <ul>
9374    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
9375    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
9376    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
9377    ///     </ul>
9378    ///   
9379    pub dir: core::option::Option<AttributeValue<'life>>,
9380    ///
9381    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
9382    ///     <ul>
9383    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
9384    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
9385    ///     </ul>
9386    ///   
9387    pub draggable: core::option::Option<AttributeValue<'life>>,
9388    ///
9389    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
9390    ///   
9391    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
9392    ///
9393    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
9394    ///   
9395    pub exportparts: core::option::Option<AttributeValue<'life>>,
9396    /// /// Extra attributes of the element.
9397
9398    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
9399    #[cfg(feature = "alloc")]
9400    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
9401    ///
9402    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
9403    ///   
9404    pub hidden: core::option::Option<AttributeValue<'life>>,
9405    ///
9406    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
9407    ///   
9408    pub id: core::option::Option<AttributeValue<'life>>,
9409    ///
9410    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
9411    ///   
9412    pub inert: core::option::Option<AttributeValue<'life>>,
9413    ///
9414    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
9415    ///   
9416    pub inputmode: core::option::Option<AttributeValue<'life>>,
9417    ///
9418    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
9419    ///   
9420    pub is: core::option::Option<AttributeValue<'life>>,
9421    ///
9422    ///     <p>The unique, global identifier of an item.</p>
9423    ///   
9424    pub itemid: core::option::Option<AttributeValue<'life>>,
9425    ///
9426    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
9427    ///   
9428    pub itemprop: core::option::Option<AttributeValue<'life>>,
9429    ///
9430    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
9431    ///   
9432    pub itemref: core::option::Option<AttributeValue<'life>>,
9433    ///
9434    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
9435    ///   
9436    pub itemscope: core::option::Option<AttributeValue<'life>>,
9437    ///
9438    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
9439    ///   
9440    pub itemtype: core::option::Option<AttributeValue<'life>>,
9441    ///
9442    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
9443    ///   
9444    pub lang: core::option::Option<AttributeValue<'life>>,
9445    ///
9446    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
9447    ///   
9448    pub nonce: core::option::Option<AttributeValue<'life>>,
9449    ///
9450    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
9451    ///   
9452    pub part: core::option::Option<AttributeValue<'life>>,
9453    ///
9454    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
9455    ///   
9456    pub popover: core::option::Option<AttributeValue<'life>>,
9457    ///
9458    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
9459    ///   
9460    pub role: core::option::Option<AttributeValue<'life>>,
9461    ///
9462    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
9463    ///   
9464    pub slot: core::option::Option<AttributeValue<'life>>,
9465    ///
9466    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
9467    ///     <ul>
9468    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
9469    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
9470    ///     </ul>
9471    ///   
9472    pub spellcheck: core::option::Option<AttributeValue<'life>>,
9473    ///
9474    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
9475    ///   
9476    pub style: core::option::Option<AttributeValue<'life>>,
9477    ///
9478    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
9479    ///     <ul>
9480    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
9481    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
9482    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
9483    ///     </ul>
9484    ///   
9485    pub tabindex: core::option::Option<AttributeValue<'life>>,
9486    ///
9487    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
9488    ///   
9489    pub title: core::option::Option<AttributeValue<'life>>,
9490    ///
9491    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
9492    ///     <ul>
9493    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
9494    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
9495    ///     </ul>
9496    ///   
9497    pub translate: core::option::Option<AttributeValue<'life>>,
9498    ///
9499    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
9500    ///     <ul>
9501    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
9502    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
9503    ///     </ul>
9504    ///   
9505    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
9506}
9507#[allow(deprecated)]
9508
9509impl<'life> Blockquote<'life> {
9510    /// Get the tag name of the element.
9511    /// This is the same as the name of the struct, in kebab-case.
9512    pub fn tag() -> &'static str {
9513        "blockquote"
9514    }
9515    /// Sets an attribute of the element.
9516    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
9517    /// If the `alloc` feature is disabled, this function will silently fail.
9518    ///
9519    /// # Note
9520    /// This only works when the attribute is lowercase.
9521    pub fn set_attr(
9522        &mut self,
9523        name: &'life str,
9524        value: impl core::convert::Into<AttributeValue<'life>>,
9525    ) {
9526        match name {
9527            "accesskey" => self.accesskey = Some(value.into()),
9528            "autocapitalize" => self.autocapitalize = Some(value.into()),
9529            "autofocus" => self.autofocus = Some(value.into()),
9530            "cite" => self.cite = Some(value.into()),
9531            "class" => self.class = Some(value.into()),
9532            "contenteditable" => self.contenteditable = Some(value.into()),
9533            "contextmenu" => self.contextmenu = Some(value.into()),
9534            "dir" => self.dir = Some(value.into()),
9535            "draggable" => self.draggable = Some(value.into()),
9536            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
9537            "exportparts" => self.exportparts = Some(value.into()),
9538            "hidden" => self.hidden = Some(value.into()),
9539            "id" => self.id = Some(value.into()),
9540            "inert" => self.inert = Some(value.into()),
9541            "inputmode" => self.inputmode = Some(value.into()),
9542            "is" => self.is = Some(value.into()),
9543            "itemid" => self.itemid = Some(value.into()),
9544            "itemprop" => self.itemprop = Some(value.into()),
9545            "itemref" => self.itemref = Some(value.into()),
9546            "itemscope" => self.itemscope = Some(value.into()),
9547            "itemtype" => self.itemtype = Some(value.into()),
9548            "lang" => self.lang = Some(value.into()),
9549            "nonce" => self.nonce = Some(value.into()),
9550            "part" => self.part = Some(value.into()),
9551            "popover" => self.popover = Some(value.into()),
9552            "role" => self.role = Some(value.into()),
9553            "slot" => self.slot = Some(value.into()),
9554            "spellcheck" => self.spellcheck = Some(value.into()),
9555            "style" => self.style = Some(value.into()),
9556            "tabindex" => self.tabindex = Some(value.into()),
9557            "title" => self.title = Some(value.into()),
9558            "translate" => self.translate = Some(value.into()),
9559            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
9560            #[cfg(feature = "alloc")]
9561            _ => {
9562                #[allow(clippy::useless_conversion)]
9563                self.extra.insert(name.into(), value.into());
9564            }
9565            #[cfg(not(feature = "alloc"))]
9566            _ => {}
9567        }
9568    }
9569}
9570/// The <strong><code>&lt;blockquote&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element indicates that the enclosed text is an extended quotation. Usually, this is rendered visually by indentation (see <a href="#usage_notes">Notes</a> for how to change it). A URL for the source of the quotation may be given using the <code>cite</code> attribute, while a text representation of the source can be given using the <a href="/en-US/docs/Web/HTML/Element/cite"><code>&lt;cite&gt;</code></a> element.
9571///
9572/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/blockquote>
9573
9574#[cfg(feature = "alloc")]
9575#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
9576pub struct BlockquoteOwned {
9577    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
9578    ///   
9579    pub accesskey: core::option::Option<AttributeValueOwned>,
9580    ///
9581    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
9582    ///     <ul>
9583    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
9584    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
9585    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
9586    ///       <li><code>characters</code>, all letters should default to uppercase</li>
9587    ///     </ul>
9588    ///   
9589    pub autocapitalize: core::option::Option<AttributeValueOwned>,
9590    ///
9591    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
9592    ///   
9593    pub autofocus: core::option::Option<AttributeValueOwned>,
9594    ///
9595    ///     <p>A URL that designates a source document or message for the information quoted. This attribute is intended to point to information explaining the context or the reference for the quote.</p>
9596    ///   
9597    pub cite: core::option::Option<AttributeValueOwned>,
9598    ///
9599    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
9600    ///   
9601    pub class: core::option::Option<AttributeValueOwned>,
9602    ///
9603    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
9604    ///     <ul>
9605    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
9606    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
9607    ///     </ul>
9608    ///   
9609    pub contenteditable: core::option::Option<AttributeValueOwned>,
9610    ///
9611    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
9612    ///   
9613    pub contextmenu: core::option::Option<AttributeValueOwned>,
9614    ///
9615    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
9616    ///   
9617    #[cfg(feature = "alloc")]
9618    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
9619    ///
9620    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
9621    ///     <ul>
9622    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
9623    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
9624    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
9625    ///     </ul>
9626    ///   
9627    pub dir: core::option::Option<AttributeValueOwned>,
9628    ///
9629    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
9630    ///     <ul>
9631    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
9632    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
9633    ///     </ul>
9634    ///   
9635    pub draggable: core::option::Option<AttributeValueOwned>,
9636    ///
9637    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
9638    ///   
9639    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
9640    ///
9641    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
9642    ///   
9643    pub exportparts: core::option::Option<AttributeValueOwned>,
9644    /// /// Extra attributes of the element.
9645
9646    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
9647    #[cfg(feature = "alloc")]
9648    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
9649    ///
9650    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
9651    ///   
9652    pub hidden: core::option::Option<AttributeValueOwned>,
9653    ///
9654    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
9655    ///   
9656    pub id: core::option::Option<AttributeValueOwned>,
9657    ///
9658    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
9659    ///   
9660    pub inert: core::option::Option<AttributeValueOwned>,
9661    ///
9662    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
9663    ///   
9664    pub inputmode: core::option::Option<AttributeValueOwned>,
9665    ///
9666    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
9667    ///   
9668    pub is: core::option::Option<AttributeValueOwned>,
9669    ///
9670    ///     <p>The unique, global identifier of an item.</p>
9671    ///   
9672    pub itemid: core::option::Option<AttributeValueOwned>,
9673    ///
9674    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
9675    ///   
9676    pub itemprop: core::option::Option<AttributeValueOwned>,
9677    ///
9678    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
9679    ///   
9680    pub itemref: core::option::Option<AttributeValueOwned>,
9681    ///
9682    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
9683    ///   
9684    pub itemscope: core::option::Option<AttributeValueOwned>,
9685    ///
9686    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
9687    ///   
9688    pub itemtype: core::option::Option<AttributeValueOwned>,
9689    ///
9690    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
9691    ///   
9692    pub lang: core::option::Option<AttributeValueOwned>,
9693    ///
9694    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
9695    ///   
9696    pub nonce: core::option::Option<AttributeValueOwned>,
9697    ///
9698    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
9699    ///   
9700    pub part: core::option::Option<AttributeValueOwned>,
9701    ///
9702    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
9703    ///   
9704    pub popover: core::option::Option<AttributeValueOwned>,
9705    ///
9706    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
9707    ///   
9708    pub role: core::option::Option<AttributeValueOwned>,
9709    ///
9710    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
9711    ///   
9712    pub slot: core::option::Option<AttributeValueOwned>,
9713    ///
9714    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
9715    ///     <ul>
9716    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
9717    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
9718    ///     </ul>
9719    ///   
9720    pub spellcheck: core::option::Option<AttributeValueOwned>,
9721    ///
9722    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
9723    ///   
9724    pub style: core::option::Option<AttributeValueOwned>,
9725    ///
9726    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
9727    ///     <ul>
9728    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
9729    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
9730    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
9731    ///     </ul>
9732    ///   
9733    pub tabindex: core::option::Option<AttributeValueOwned>,
9734    ///
9735    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
9736    ///   
9737    pub title: core::option::Option<AttributeValueOwned>,
9738    ///
9739    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
9740    ///     <ul>
9741    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
9742    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
9743    ///     </ul>
9744    ///   
9745    pub translate: core::option::Option<AttributeValueOwned>,
9746    ///
9747    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
9748    ///     <ul>
9749    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
9750    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
9751    ///     </ul>
9752    ///   
9753    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
9754}
9755#[allow(deprecated)]
9756#[cfg(feature = "alloc")]
9757impl BlockquoteOwned {
9758    /// Get the tag name of the element.
9759    /// This is the same as the name of the struct, in kebab-case.
9760    pub fn tag() -> &'static str {
9761        "blockquote"
9762    }
9763    /// Sets an attribute of the element.
9764    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
9765    /// If the `alloc` feature is disabled, this function will silently fail.
9766    ///
9767    /// # Note
9768    /// This only works when the attribute is lowercase.
9769    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
9770        match name {
9771            "accesskey" => self.accesskey = Some(value.into()),
9772            "autocapitalize" => self.autocapitalize = Some(value.into()),
9773            "autofocus" => self.autofocus = Some(value.into()),
9774            "cite" => self.cite = Some(value.into()),
9775            "class" => self.class = Some(value.into()),
9776            "contenteditable" => self.contenteditable = Some(value.into()),
9777            "contextmenu" => self.contextmenu = Some(value.into()),
9778            "dir" => self.dir = Some(value.into()),
9779            "draggable" => self.draggable = Some(value.into()),
9780            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
9781            "exportparts" => self.exportparts = Some(value.into()),
9782            "hidden" => self.hidden = Some(value.into()),
9783            "id" => self.id = Some(value.into()),
9784            "inert" => self.inert = Some(value.into()),
9785            "inputmode" => self.inputmode = Some(value.into()),
9786            "is" => self.is = Some(value.into()),
9787            "itemid" => self.itemid = Some(value.into()),
9788            "itemprop" => self.itemprop = Some(value.into()),
9789            "itemref" => self.itemref = Some(value.into()),
9790            "itemscope" => self.itemscope = Some(value.into()),
9791            "itemtype" => self.itemtype = Some(value.into()),
9792            "lang" => self.lang = Some(value.into()),
9793            "nonce" => self.nonce = Some(value.into()),
9794            "part" => self.part = Some(value.into()),
9795            "popover" => self.popover = Some(value.into()),
9796            "role" => self.role = Some(value.into()),
9797            "slot" => self.slot = Some(value.into()),
9798            "spellcheck" => self.spellcheck = Some(value.into()),
9799            "style" => self.style = Some(value.into()),
9800            "tabindex" => self.tabindex = Some(value.into()),
9801            "title" => self.title = Some(value.into()),
9802            "translate" => self.translate = Some(value.into()),
9803            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
9804            #[cfg(feature = "alloc")]
9805            _ => {
9806                #[allow(clippy::useless_conversion)]
9807                self.extra.insert(name.into(), value.into());
9808            }
9809            #[cfg(not(feature = "alloc"))]
9810            _ => {}
9811        }
9812    }
9813}
9814/// The <strong><code>&lt;dd&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element provides the description, definition, or value for the preceding term (<a href="/en-US/docs/Web/HTML/Element/dt"><code>&lt;dt&gt;</code></a>) in a description list (<a href="/en-US/docs/Web/HTML/Element/dl"><code>&lt;dl&gt;</code></a>).
9815///
9816/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dd>
9817
9818#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
9819pub struct Dd<'life> {
9820    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
9821    ///   
9822    pub accesskey: core::option::Option<AttributeValue<'life>>,
9823    ///
9824    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
9825    ///     <ul>
9826    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
9827    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
9828    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
9829    ///       <li><code>characters</code>, all letters should default to uppercase</li>
9830    ///     </ul>
9831    ///   
9832    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
9833    ///
9834    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
9835    ///   
9836    pub autofocus: core::option::Option<AttributeValue<'life>>,
9837    ///
9838    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
9839    ///   
9840    pub class: core::option::Option<AttributeValue<'life>>,
9841    ///
9842    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
9843    ///     <ul>
9844    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
9845    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
9846    ///     </ul>
9847    ///   
9848    pub contenteditable: core::option::Option<AttributeValue<'life>>,
9849    ///
9850    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
9851    ///   
9852    pub contextmenu: core::option::Option<AttributeValue<'life>>,
9853    ///
9854    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
9855    ///   
9856    #[cfg(feature = "alloc")]
9857    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
9858    ///
9859    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
9860    ///     <ul>
9861    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
9862    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
9863    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
9864    ///     </ul>
9865    ///   
9866    pub dir: core::option::Option<AttributeValue<'life>>,
9867    ///
9868    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
9869    ///     <ul>
9870    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
9871    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
9872    ///     </ul>
9873    ///   
9874    pub draggable: core::option::Option<AttributeValue<'life>>,
9875    ///
9876    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
9877    ///   
9878    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
9879    ///
9880    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
9881    ///   
9882    pub exportparts: core::option::Option<AttributeValue<'life>>,
9883    /// /// Extra attributes of the element.
9884
9885    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
9886    #[cfg(feature = "alloc")]
9887    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
9888    ///
9889    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
9890    ///   
9891    pub hidden: core::option::Option<AttributeValue<'life>>,
9892    ///
9893    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
9894    ///   
9895    pub id: core::option::Option<AttributeValue<'life>>,
9896    ///
9897    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
9898    ///   
9899    pub inert: core::option::Option<AttributeValue<'life>>,
9900    ///
9901    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
9902    ///   
9903    pub inputmode: core::option::Option<AttributeValue<'life>>,
9904    ///
9905    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
9906    ///   
9907    pub is: core::option::Option<AttributeValue<'life>>,
9908    ///
9909    ///     <p>The unique, global identifier of an item.</p>
9910    ///   
9911    pub itemid: core::option::Option<AttributeValue<'life>>,
9912    ///
9913    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
9914    ///   
9915    pub itemprop: core::option::Option<AttributeValue<'life>>,
9916    ///
9917    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
9918    ///   
9919    pub itemref: core::option::Option<AttributeValue<'life>>,
9920    ///
9921    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
9922    ///   
9923    pub itemscope: core::option::Option<AttributeValue<'life>>,
9924    ///
9925    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
9926    ///   
9927    pub itemtype: core::option::Option<AttributeValue<'life>>,
9928    ///
9929    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
9930    ///   
9931    pub lang: core::option::Option<AttributeValue<'life>>,
9932    ///
9933    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
9934    ///   
9935    pub nonce: core::option::Option<AttributeValue<'life>>,
9936    ///
9937    ///     <p>If the value of this attribute is set to <code>yes</code>, the definition text will not wrap. The default value is <code>no</code>.</p>
9938    ///   
9939    pub nowrap: core::option::Option<AttributeValue<'life>>,
9940    ///
9941    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
9942    ///   
9943    pub part: core::option::Option<AttributeValue<'life>>,
9944    ///
9945    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
9946    ///   
9947    pub popover: core::option::Option<AttributeValue<'life>>,
9948    ///
9949    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
9950    ///   
9951    pub role: core::option::Option<AttributeValue<'life>>,
9952    ///
9953    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
9954    ///   
9955    pub slot: core::option::Option<AttributeValue<'life>>,
9956    ///
9957    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
9958    ///     <ul>
9959    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
9960    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
9961    ///     </ul>
9962    ///   
9963    pub spellcheck: core::option::Option<AttributeValue<'life>>,
9964    ///
9965    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
9966    ///   
9967    pub style: core::option::Option<AttributeValue<'life>>,
9968    ///
9969    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
9970    ///     <ul>
9971    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
9972    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
9973    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
9974    ///     </ul>
9975    ///   
9976    pub tabindex: core::option::Option<AttributeValue<'life>>,
9977    ///
9978    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
9979    ///   
9980    pub title: core::option::Option<AttributeValue<'life>>,
9981    ///
9982    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
9983    ///     <ul>
9984    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
9985    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
9986    ///     </ul>
9987    ///   
9988    pub translate: core::option::Option<AttributeValue<'life>>,
9989    ///
9990    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
9991    ///     <ul>
9992    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
9993    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
9994    ///     </ul>
9995    ///   
9996    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
9997}
9998#[allow(deprecated)]
9999
10000impl<'life> Dd<'life> {
10001    /// Get the tag name of the element.
10002    /// This is the same as the name of the struct, in kebab-case.
10003    pub fn tag() -> &'static str {
10004        "dd"
10005    }
10006    /// Sets an attribute of the element.
10007    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
10008    /// If the `alloc` feature is disabled, this function will silently fail.
10009    ///
10010    /// # Note
10011    /// This only works when the attribute is lowercase.
10012    pub fn set_attr(
10013        &mut self,
10014        name: &'life str,
10015        value: impl core::convert::Into<AttributeValue<'life>>,
10016    ) {
10017        match name {
10018            "accesskey" => self.accesskey = Some(value.into()),
10019            "autocapitalize" => self.autocapitalize = Some(value.into()),
10020            "autofocus" => self.autofocus = Some(value.into()),
10021            "class" => self.class = Some(value.into()),
10022            "contenteditable" => self.contenteditable = Some(value.into()),
10023            "contextmenu" => self.contextmenu = Some(value.into()),
10024            "dir" => self.dir = Some(value.into()),
10025            "draggable" => self.draggable = Some(value.into()),
10026            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
10027            "exportparts" => self.exportparts = Some(value.into()),
10028            "hidden" => self.hidden = Some(value.into()),
10029            "id" => self.id = Some(value.into()),
10030            "inert" => self.inert = Some(value.into()),
10031            "inputmode" => self.inputmode = Some(value.into()),
10032            "is" => self.is = Some(value.into()),
10033            "itemid" => self.itemid = Some(value.into()),
10034            "itemprop" => self.itemprop = Some(value.into()),
10035            "itemref" => self.itemref = Some(value.into()),
10036            "itemscope" => self.itemscope = Some(value.into()),
10037            "itemtype" => self.itemtype = Some(value.into()),
10038            "lang" => self.lang = Some(value.into()),
10039            "nonce" => self.nonce = Some(value.into()),
10040            "nowrap" => self.nowrap = Some(value.into()),
10041            "part" => self.part = Some(value.into()),
10042            "popover" => self.popover = Some(value.into()),
10043            "role" => self.role = Some(value.into()),
10044            "slot" => self.slot = Some(value.into()),
10045            "spellcheck" => self.spellcheck = Some(value.into()),
10046            "style" => self.style = Some(value.into()),
10047            "tabindex" => self.tabindex = Some(value.into()),
10048            "title" => self.title = Some(value.into()),
10049            "translate" => self.translate = Some(value.into()),
10050            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
10051            #[cfg(feature = "alloc")]
10052            _ => {
10053                #[allow(clippy::useless_conversion)]
10054                self.extra.insert(name.into(), value.into());
10055            }
10056            #[cfg(not(feature = "alloc"))]
10057            _ => {}
10058        }
10059    }
10060}
10061/// The <strong><code>&lt;dd&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element provides the description, definition, or value for the preceding term (<a href="/en-US/docs/Web/HTML/Element/dt"><code>&lt;dt&gt;</code></a>) in a description list (<a href="/en-US/docs/Web/HTML/Element/dl"><code>&lt;dl&gt;</code></a>).
10062///
10063/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dd>
10064
10065#[cfg(feature = "alloc")]
10066#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
10067pub struct DdOwned {
10068    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
10069    ///   
10070    pub accesskey: core::option::Option<AttributeValueOwned>,
10071    ///
10072    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
10073    ///     <ul>
10074    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
10075    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
10076    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
10077    ///       <li><code>characters</code>, all letters should default to uppercase</li>
10078    ///     </ul>
10079    ///   
10080    pub autocapitalize: core::option::Option<AttributeValueOwned>,
10081    ///
10082    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
10083    ///   
10084    pub autofocus: core::option::Option<AttributeValueOwned>,
10085    ///
10086    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
10087    ///   
10088    pub class: core::option::Option<AttributeValueOwned>,
10089    ///
10090    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
10091    ///     <ul>
10092    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
10093    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
10094    ///     </ul>
10095    ///   
10096    pub contenteditable: core::option::Option<AttributeValueOwned>,
10097    ///
10098    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
10099    ///   
10100    pub contextmenu: core::option::Option<AttributeValueOwned>,
10101    ///
10102    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
10103    ///   
10104    #[cfg(feature = "alloc")]
10105    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
10106    ///
10107    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
10108    ///     <ul>
10109    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
10110    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
10111    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
10112    ///     </ul>
10113    ///   
10114    pub dir: core::option::Option<AttributeValueOwned>,
10115    ///
10116    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
10117    ///     <ul>
10118    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
10119    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
10120    ///     </ul>
10121    ///   
10122    pub draggable: core::option::Option<AttributeValueOwned>,
10123    ///
10124    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
10125    ///   
10126    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
10127    ///
10128    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
10129    ///   
10130    pub exportparts: core::option::Option<AttributeValueOwned>,
10131    /// /// Extra attributes of the element.
10132
10133    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
10134    #[cfg(feature = "alloc")]
10135    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
10136    ///
10137    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
10138    ///   
10139    pub hidden: core::option::Option<AttributeValueOwned>,
10140    ///
10141    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
10142    ///   
10143    pub id: core::option::Option<AttributeValueOwned>,
10144    ///
10145    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
10146    ///   
10147    pub inert: core::option::Option<AttributeValueOwned>,
10148    ///
10149    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
10150    ///   
10151    pub inputmode: core::option::Option<AttributeValueOwned>,
10152    ///
10153    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
10154    ///   
10155    pub is: core::option::Option<AttributeValueOwned>,
10156    ///
10157    ///     <p>The unique, global identifier of an item.</p>
10158    ///   
10159    pub itemid: core::option::Option<AttributeValueOwned>,
10160    ///
10161    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
10162    ///   
10163    pub itemprop: core::option::Option<AttributeValueOwned>,
10164    ///
10165    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
10166    ///   
10167    pub itemref: core::option::Option<AttributeValueOwned>,
10168    ///
10169    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
10170    ///   
10171    pub itemscope: core::option::Option<AttributeValueOwned>,
10172    ///
10173    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
10174    ///   
10175    pub itemtype: core::option::Option<AttributeValueOwned>,
10176    ///
10177    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
10178    ///   
10179    pub lang: core::option::Option<AttributeValueOwned>,
10180    ///
10181    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
10182    ///   
10183    pub nonce: core::option::Option<AttributeValueOwned>,
10184    ///
10185    ///     <p>If the value of this attribute is set to <code>yes</code>, the definition text will not wrap. The default value is <code>no</code>.</p>
10186    ///   
10187    pub nowrap: core::option::Option<AttributeValueOwned>,
10188    ///
10189    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
10190    ///   
10191    pub part: core::option::Option<AttributeValueOwned>,
10192    ///
10193    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
10194    ///   
10195    pub popover: core::option::Option<AttributeValueOwned>,
10196    ///
10197    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
10198    ///   
10199    pub role: core::option::Option<AttributeValueOwned>,
10200    ///
10201    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
10202    ///   
10203    pub slot: core::option::Option<AttributeValueOwned>,
10204    ///
10205    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
10206    ///     <ul>
10207    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
10208    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
10209    ///     </ul>
10210    ///   
10211    pub spellcheck: core::option::Option<AttributeValueOwned>,
10212    ///
10213    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
10214    ///   
10215    pub style: core::option::Option<AttributeValueOwned>,
10216    ///
10217    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
10218    ///     <ul>
10219    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
10220    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
10221    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
10222    ///     </ul>
10223    ///   
10224    pub tabindex: core::option::Option<AttributeValueOwned>,
10225    ///
10226    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
10227    ///   
10228    pub title: core::option::Option<AttributeValueOwned>,
10229    ///
10230    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
10231    ///     <ul>
10232    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
10233    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
10234    ///     </ul>
10235    ///   
10236    pub translate: core::option::Option<AttributeValueOwned>,
10237    ///
10238    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
10239    ///     <ul>
10240    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
10241    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
10242    ///     </ul>
10243    ///   
10244    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
10245}
10246#[allow(deprecated)]
10247#[cfg(feature = "alloc")]
10248impl DdOwned {
10249    /// Get the tag name of the element.
10250    /// This is the same as the name of the struct, in kebab-case.
10251    pub fn tag() -> &'static str {
10252        "dd"
10253    }
10254    /// Sets an attribute of the element.
10255    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
10256    /// If the `alloc` feature is disabled, this function will silently fail.
10257    ///
10258    /// # Note
10259    /// This only works when the attribute is lowercase.
10260    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
10261        match name {
10262            "accesskey" => self.accesskey = Some(value.into()),
10263            "autocapitalize" => self.autocapitalize = Some(value.into()),
10264            "autofocus" => self.autofocus = Some(value.into()),
10265            "class" => self.class = Some(value.into()),
10266            "contenteditable" => self.contenteditable = Some(value.into()),
10267            "contextmenu" => self.contextmenu = Some(value.into()),
10268            "dir" => self.dir = Some(value.into()),
10269            "draggable" => self.draggable = Some(value.into()),
10270            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
10271            "exportparts" => self.exportparts = Some(value.into()),
10272            "hidden" => self.hidden = Some(value.into()),
10273            "id" => self.id = Some(value.into()),
10274            "inert" => self.inert = Some(value.into()),
10275            "inputmode" => self.inputmode = Some(value.into()),
10276            "is" => self.is = Some(value.into()),
10277            "itemid" => self.itemid = Some(value.into()),
10278            "itemprop" => self.itemprop = Some(value.into()),
10279            "itemref" => self.itemref = Some(value.into()),
10280            "itemscope" => self.itemscope = Some(value.into()),
10281            "itemtype" => self.itemtype = Some(value.into()),
10282            "lang" => self.lang = Some(value.into()),
10283            "nonce" => self.nonce = Some(value.into()),
10284            "nowrap" => self.nowrap = Some(value.into()),
10285            "part" => self.part = Some(value.into()),
10286            "popover" => self.popover = Some(value.into()),
10287            "role" => self.role = Some(value.into()),
10288            "slot" => self.slot = Some(value.into()),
10289            "spellcheck" => self.spellcheck = Some(value.into()),
10290            "style" => self.style = Some(value.into()),
10291            "tabindex" => self.tabindex = Some(value.into()),
10292            "title" => self.title = Some(value.into()),
10293            "translate" => self.translate = Some(value.into()),
10294            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
10295            #[cfg(feature = "alloc")]
10296            _ => {
10297                #[allow(clippy::useless_conversion)]
10298                self.extra.insert(name.into(), value.into());
10299            }
10300            #[cfg(not(feature = "alloc"))]
10301            _ => {}
10302        }
10303    }
10304}
10305/// The <strong><code>&lt;div&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element is the generic container for flow content. It has no effect on the content or layout until styled in some way using <a href="/en-US/docs/Glossary/CSS">CSS</a> (e.g. styling is directly applied to it, or some kind of layout model like <a href="/en-US/docs/Web/CSS/CSS_Flexible_Box_Layout">Flexbox</a> is applied to its parent element).
10306///
10307/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/div>
10308
10309#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
10310pub struct Div<'life> {
10311    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
10312    ///   
10313    pub accesskey: core::option::Option<AttributeValue<'life>>,
10314    ///
10315    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
10316    ///     <ul>
10317    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
10318    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
10319    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
10320    ///       <li><code>characters</code>, all letters should default to uppercase</li>
10321    ///     </ul>
10322    ///   
10323    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
10324    ///
10325    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
10326    ///   
10327    pub autofocus: core::option::Option<AttributeValue<'life>>,
10328    ///
10329    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
10330    ///   
10331    pub class: core::option::Option<AttributeValue<'life>>,
10332    ///
10333    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
10334    ///     <ul>
10335    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
10336    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
10337    ///     </ul>
10338    ///   
10339    pub contenteditable: core::option::Option<AttributeValue<'life>>,
10340    ///
10341    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
10342    ///   
10343    pub contextmenu: core::option::Option<AttributeValue<'life>>,
10344    ///
10345    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
10346    ///   
10347    #[cfg(feature = "alloc")]
10348    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
10349    ///
10350    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
10351    ///     <ul>
10352    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
10353    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
10354    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
10355    ///     </ul>
10356    ///   
10357    pub dir: core::option::Option<AttributeValue<'life>>,
10358    ///
10359    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
10360    ///     <ul>
10361    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
10362    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
10363    ///     </ul>
10364    ///   
10365    pub draggable: core::option::Option<AttributeValue<'life>>,
10366    ///
10367    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
10368    ///   
10369    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
10370    ///
10371    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
10372    ///   
10373    pub exportparts: core::option::Option<AttributeValue<'life>>,
10374    /// /// Extra attributes of the element.
10375
10376    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
10377    #[cfg(feature = "alloc")]
10378    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
10379    ///
10380    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
10381    ///   
10382    pub hidden: core::option::Option<AttributeValue<'life>>,
10383    ///
10384    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
10385    ///   
10386    pub id: core::option::Option<AttributeValue<'life>>,
10387    ///
10388    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
10389    ///   
10390    pub inert: core::option::Option<AttributeValue<'life>>,
10391    ///
10392    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
10393    ///   
10394    pub inputmode: core::option::Option<AttributeValue<'life>>,
10395    ///
10396    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
10397    ///   
10398    pub is: core::option::Option<AttributeValue<'life>>,
10399    ///
10400    ///     <p>The unique, global identifier of an item.</p>
10401    ///   
10402    pub itemid: core::option::Option<AttributeValue<'life>>,
10403    ///
10404    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
10405    ///   
10406    pub itemprop: core::option::Option<AttributeValue<'life>>,
10407    ///
10408    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
10409    ///   
10410    pub itemref: core::option::Option<AttributeValue<'life>>,
10411    ///
10412    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
10413    ///   
10414    pub itemscope: core::option::Option<AttributeValue<'life>>,
10415    ///
10416    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
10417    ///   
10418    pub itemtype: core::option::Option<AttributeValue<'life>>,
10419    ///
10420    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
10421    ///   
10422    pub lang: core::option::Option<AttributeValue<'life>>,
10423    ///
10424    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
10425    ///   
10426    pub nonce: core::option::Option<AttributeValue<'life>>,
10427    ///
10428    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
10429    ///   
10430    pub part: core::option::Option<AttributeValue<'life>>,
10431    ///
10432    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
10433    ///   
10434    pub popover: core::option::Option<AttributeValue<'life>>,
10435    ///
10436    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
10437    ///   
10438    pub role: core::option::Option<AttributeValue<'life>>,
10439    ///
10440    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
10441    ///   
10442    pub slot: core::option::Option<AttributeValue<'life>>,
10443    ///
10444    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
10445    ///     <ul>
10446    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
10447    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
10448    ///     </ul>
10449    ///   
10450    pub spellcheck: core::option::Option<AttributeValue<'life>>,
10451    ///
10452    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
10453    ///   
10454    pub style: core::option::Option<AttributeValue<'life>>,
10455    ///
10456    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
10457    ///     <ul>
10458    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
10459    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
10460    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
10461    ///     </ul>
10462    ///   
10463    pub tabindex: core::option::Option<AttributeValue<'life>>,
10464    ///
10465    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
10466    ///   
10467    pub title: core::option::Option<AttributeValue<'life>>,
10468    ///
10469    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
10470    ///     <ul>
10471    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
10472    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
10473    ///     </ul>
10474    ///   
10475    pub translate: core::option::Option<AttributeValue<'life>>,
10476    ///
10477    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
10478    ///     <ul>
10479    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
10480    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
10481    ///     </ul>
10482    ///   
10483    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
10484}
10485#[allow(deprecated)]
10486
10487impl<'life> Div<'life> {
10488    /// Get the tag name of the element.
10489    /// This is the same as the name of the struct, in kebab-case.
10490    pub fn tag() -> &'static str {
10491        "div"
10492    }
10493    /// Sets an attribute of the element.
10494    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
10495    /// If the `alloc` feature is disabled, this function will silently fail.
10496    ///
10497    /// # Note
10498    /// This only works when the attribute is lowercase.
10499    pub fn set_attr(
10500        &mut self,
10501        name: &'life str,
10502        value: impl core::convert::Into<AttributeValue<'life>>,
10503    ) {
10504        match name {
10505            "accesskey" => self.accesskey = Some(value.into()),
10506            "autocapitalize" => self.autocapitalize = Some(value.into()),
10507            "autofocus" => self.autofocus = Some(value.into()),
10508            "class" => self.class = Some(value.into()),
10509            "contenteditable" => self.contenteditable = Some(value.into()),
10510            "contextmenu" => self.contextmenu = Some(value.into()),
10511            "dir" => self.dir = Some(value.into()),
10512            "draggable" => self.draggable = Some(value.into()),
10513            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
10514            "exportparts" => self.exportparts = Some(value.into()),
10515            "hidden" => self.hidden = Some(value.into()),
10516            "id" => self.id = Some(value.into()),
10517            "inert" => self.inert = Some(value.into()),
10518            "inputmode" => self.inputmode = Some(value.into()),
10519            "is" => self.is = Some(value.into()),
10520            "itemid" => self.itemid = Some(value.into()),
10521            "itemprop" => self.itemprop = Some(value.into()),
10522            "itemref" => self.itemref = Some(value.into()),
10523            "itemscope" => self.itemscope = Some(value.into()),
10524            "itemtype" => self.itemtype = Some(value.into()),
10525            "lang" => self.lang = Some(value.into()),
10526            "nonce" => self.nonce = Some(value.into()),
10527            "part" => self.part = Some(value.into()),
10528            "popover" => self.popover = Some(value.into()),
10529            "role" => self.role = Some(value.into()),
10530            "slot" => self.slot = Some(value.into()),
10531            "spellcheck" => self.spellcheck = Some(value.into()),
10532            "style" => self.style = Some(value.into()),
10533            "tabindex" => self.tabindex = Some(value.into()),
10534            "title" => self.title = Some(value.into()),
10535            "translate" => self.translate = Some(value.into()),
10536            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
10537            #[cfg(feature = "alloc")]
10538            _ => {
10539                #[allow(clippy::useless_conversion)]
10540                self.extra.insert(name.into(), value.into());
10541            }
10542            #[cfg(not(feature = "alloc"))]
10543            _ => {}
10544        }
10545    }
10546}
10547/// The <strong><code>&lt;div&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element is the generic container for flow content. It has no effect on the content or layout until styled in some way using <a href="/en-US/docs/Glossary/CSS">CSS</a> (e.g. styling is directly applied to it, or some kind of layout model like <a href="/en-US/docs/Web/CSS/CSS_Flexible_Box_Layout">Flexbox</a> is applied to its parent element).
10548///
10549/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/div>
10550
10551#[cfg(feature = "alloc")]
10552#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
10553pub struct DivOwned {
10554    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
10555    ///   
10556    pub accesskey: core::option::Option<AttributeValueOwned>,
10557    ///
10558    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
10559    ///     <ul>
10560    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
10561    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
10562    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
10563    ///       <li><code>characters</code>, all letters should default to uppercase</li>
10564    ///     </ul>
10565    ///   
10566    pub autocapitalize: core::option::Option<AttributeValueOwned>,
10567    ///
10568    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
10569    ///   
10570    pub autofocus: core::option::Option<AttributeValueOwned>,
10571    ///
10572    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
10573    ///   
10574    pub class: core::option::Option<AttributeValueOwned>,
10575    ///
10576    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
10577    ///     <ul>
10578    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
10579    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
10580    ///     </ul>
10581    ///   
10582    pub contenteditable: core::option::Option<AttributeValueOwned>,
10583    ///
10584    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
10585    ///   
10586    pub contextmenu: core::option::Option<AttributeValueOwned>,
10587    ///
10588    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
10589    ///   
10590    #[cfg(feature = "alloc")]
10591    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
10592    ///
10593    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
10594    ///     <ul>
10595    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
10596    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
10597    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
10598    ///     </ul>
10599    ///   
10600    pub dir: core::option::Option<AttributeValueOwned>,
10601    ///
10602    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
10603    ///     <ul>
10604    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
10605    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
10606    ///     </ul>
10607    ///   
10608    pub draggable: core::option::Option<AttributeValueOwned>,
10609    ///
10610    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
10611    ///   
10612    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
10613    ///
10614    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
10615    ///   
10616    pub exportparts: core::option::Option<AttributeValueOwned>,
10617    /// /// Extra attributes of the element.
10618
10619    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
10620    #[cfg(feature = "alloc")]
10621    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
10622    ///
10623    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
10624    ///   
10625    pub hidden: core::option::Option<AttributeValueOwned>,
10626    ///
10627    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
10628    ///   
10629    pub id: core::option::Option<AttributeValueOwned>,
10630    ///
10631    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
10632    ///   
10633    pub inert: core::option::Option<AttributeValueOwned>,
10634    ///
10635    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
10636    ///   
10637    pub inputmode: core::option::Option<AttributeValueOwned>,
10638    ///
10639    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
10640    ///   
10641    pub is: core::option::Option<AttributeValueOwned>,
10642    ///
10643    ///     <p>The unique, global identifier of an item.</p>
10644    ///   
10645    pub itemid: core::option::Option<AttributeValueOwned>,
10646    ///
10647    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
10648    ///   
10649    pub itemprop: core::option::Option<AttributeValueOwned>,
10650    ///
10651    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
10652    ///   
10653    pub itemref: core::option::Option<AttributeValueOwned>,
10654    ///
10655    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
10656    ///   
10657    pub itemscope: core::option::Option<AttributeValueOwned>,
10658    ///
10659    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
10660    ///   
10661    pub itemtype: core::option::Option<AttributeValueOwned>,
10662    ///
10663    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
10664    ///   
10665    pub lang: core::option::Option<AttributeValueOwned>,
10666    ///
10667    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
10668    ///   
10669    pub nonce: core::option::Option<AttributeValueOwned>,
10670    ///
10671    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
10672    ///   
10673    pub part: core::option::Option<AttributeValueOwned>,
10674    ///
10675    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
10676    ///   
10677    pub popover: core::option::Option<AttributeValueOwned>,
10678    ///
10679    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
10680    ///   
10681    pub role: core::option::Option<AttributeValueOwned>,
10682    ///
10683    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
10684    ///   
10685    pub slot: core::option::Option<AttributeValueOwned>,
10686    ///
10687    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
10688    ///     <ul>
10689    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
10690    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
10691    ///     </ul>
10692    ///   
10693    pub spellcheck: core::option::Option<AttributeValueOwned>,
10694    ///
10695    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
10696    ///   
10697    pub style: core::option::Option<AttributeValueOwned>,
10698    ///
10699    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
10700    ///     <ul>
10701    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
10702    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
10703    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
10704    ///     </ul>
10705    ///   
10706    pub tabindex: core::option::Option<AttributeValueOwned>,
10707    ///
10708    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
10709    ///   
10710    pub title: core::option::Option<AttributeValueOwned>,
10711    ///
10712    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
10713    ///     <ul>
10714    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
10715    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
10716    ///     </ul>
10717    ///   
10718    pub translate: core::option::Option<AttributeValueOwned>,
10719    ///
10720    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
10721    ///     <ul>
10722    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
10723    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
10724    ///     </ul>
10725    ///   
10726    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
10727}
10728#[allow(deprecated)]
10729#[cfg(feature = "alloc")]
10730impl DivOwned {
10731    /// Get the tag name of the element.
10732    /// This is the same as the name of the struct, in kebab-case.
10733    pub fn tag() -> &'static str {
10734        "div"
10735    }
10736    /// Sets an attribute of the element.
10737    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
10738    /// If the `alloc` feature is disabled, this function will silently fail.
10739    ///
10740    /// # Note
10741    /// This only works when the attribute is lowercase.
10742    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
10743        match name {
10744            "accesskey" => self.accesskey = Some(value.into()),
10745            "autocapitalize" => self.autocapitalize = Some(value.into()),
10746            "autofocus" => self.autofocus = Some(value.into()),
10747            "class" => self.class = Some(value.into()),
10748            "contenteditable" => self.contenteditable = Some(value.into()),
10749            "contextmenu" => self.contextmenu = Some(value.into()),
10750            "dir" => self.dir = Some(value.into()),
10751            "draggable" => self.draggable = Some(value.into()),
10752            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
10753            "exportparts" => self.exportparts = Some(value.into()),
10754            "hidden" => self.hidden = Some(value.into()),
10755            "id" => self.id = Some(value.into()),
10756            "inert" => self.inert = Some(value.into()),
10757            "inputmode" => self.inputmode = Some(value.into()),
10758            "is" => self.is = Some(value.into()),
10759            "itemid" => self.itemid = Some(value.into()),
10760            "itemprop" => self.itemprop = Some(value.into()),
10761            "itemref" => self.itemref = Some(value.into()),
10762            "itemscope" => self.itemscope = Some(value.into()),
10763            "itemtype" => self.itemtype = Some(value.into()),
10764            "lang" => self.lang = Some(value.into()),
10765            "nonce" => self.nonce = Some(value.into()),
10766            "part" => self.part = Some(value.into()),
10767            "popover" => self.popover = Some(value.into()),
10768            "role" => self.role = Some(value.into()),
10769            "slot" => self.slot = Some(value.into()),
10770            "spellcheck" => self.spellcheck = Some(value.into()),
10771            "style" => self.style = Some(value.into()),
10772            "tabindex" => self.tabindex = Some(value.into()),
10773            "title" => self.title = Some(value.into()),
10774            "translate" => self.translate = Some(value.into()),
10775            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
10776            #[cfg(feature = "alloc")]
10777            _ => {
10778                #[allow(clippy::useless_conversion)]
10779                self.extra.insert(name.into(), value.into());
10780            }
10781            #[cfg(not(feature = "alloc"))]
10782            _ => {}
10783        }
10784    }
10785}
10786/// The <strong><code>&lt;dl&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents a description list. The element encloses a list of groups of terms (specified using the <a href="/en-US/docs/Web/HTML/Element/dt"><code>&lt;dt&gt;</code></a> element) and descriptions (provided by <a href="/en-US/docs/Web/HTML/Element/dd"><code>&lt;dd&gt;</code></a> elements). Common uses for this element are to implement a glossary or to display metadata (a list of key-value pairs).
10787///
10788/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dl>
10789
10790#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
10791pub struct Dl<'life> {
10792    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
10793    ///   
10794    pub accesskey: core::option::Option<AttributeValue<'life>>,
10795    ///
10796    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
10797    ///     <ul>
10798    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
10799    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
10800    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
10801    ///       <li><code>characters</code>, all letters should default to uppercase</li>
10802    ///     </ul>
10803    ///   
10804    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
10805    ///
10806    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
10807    ///   
10808    pub autofocus: core::option::Option<AttributeValue<'life>>,
10809    ///
10810    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
10811    ///   
10812    pub class: core::option::Option<AttributeValue<'life>>,
10813    ///
10814    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
10815    ///     <ul>
10816    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
10817    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
10818    ///     </ul>
10819    ///   
10820    pub contenteditable: core::option::Option<AttributeValue<'life>>,
10821    ///
10822    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
10823    ///   
10824    pub contextmenu: core::option::Option<AttributeValue<'life>>,
10825    ///
10826    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
10827    ///   
10828    #[cfg(feature = "alloc")]
10829    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
10830    ///
10831    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
10832    ///     <ul>
10833    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
10834    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
10835    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
10836    ///     </ul>
10837    ///   
10838    pub dir: core::option::Option<AttributeValue<'life>>,
10839    ///
10840    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
10841    ///     <ul>
10842    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
10843    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
10844    ///     </ul>
10845    ///   
10846    pub draggable: core::option::Option<AttributeValue<'life>>,
10847    ///
10848    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
10849    ///   
10850    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
10851    ///
10852    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
10853    ///   
10854    pub exportparts: core::option::Option<AttributeValue<'life>>,
10855    /// /// Extra attributes of the element.
10856
10857    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
10858    #[cfg(feature = "alloc")]
10859    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
10860    ///
10861    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
10862    ///   
10863    pub hidden: core::option::Option<AttributeValue<'life>>,
10864    ///
10865    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
10866    ///   
10867    pub id: core::option::Option<AttributeValue<'life>>,
10868    ///
10869    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
10870    ///   
10871    pub inert: core::option::Option<AttributeValue<'life>>,
10872    ///
10873    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
10874    ///   
10875    pub inputmode: core::option::Option<AttributeValue<'life>>,
10876    ///
10877    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
10878    ///   
10879    pub is: core::option::Option<AttributeValue<'life>>,
10880    ///
10881    ///     <p>The unique, global identifier of an item.</p>
10882    ///   
10883    pub itemid: core::option::Option<AttributeValue<'life>>,
10884    ///
10885    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
10886    ///   
10887    pub itemprop: core::option::Option<AttributeValue<'life>>,
10888    ///
10889    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
10890    ///   
10891    pub itemref: core::option::Option<AttributeValue<'life>>,
10892    ///
10893    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
10894    ///   
10895    pub itemscope: core::option::Option<AttributeValue<'life>>,
10896    ///
10897    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
10898    ///   
10899    pub itemtype: core::option::Option<AttributeValue<'life>>,
10900    ///
10901    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
10902    ///   
10903    pub lang: core::option::Option<AttributeValue<'life>>,
10904    ///
10905    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
10906    ///   
10907    pub nonce: core::option::Option<AttributeValue<'life>>,
10908    ///
10909    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
10910    ///   
10911    pub part: core::option::Option<AttributeValue<'life>>,
10912    ///
10913    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
10914    ///   
10915    pub popover: core::option::Option<AttributeValue<'life>>,
10916    ///
10917    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
10918    ///   
10919    pub role: core::option::Option<AttributeValue<'life>>,
10920    ///
10921    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
10922    ///   
10923    pub slot: core::option::Option<AttributeValue<'life>>,
10924    ///
10925    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
10926    ///     <ul>
10927    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
10928    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
10929    ///     </ul>
10930    ///   
10931    pub spellcheck: core::option::Option<AttributeValue<'life>>,
10932    ///
10933    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
10934    ///   
10935    pub style: core::option::Option<AttributeValue<'life>>,
10936    ///
10937    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
10938    ///     <ul>
10939    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
10940    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
10941    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
10942    ///     </ul>
10943    ///   
10944    pub tabindex: core::option::Option<AttributeValue<'life>>,
10945    ///
10946    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
10947    ///   
10948    pub title: core::option::Option<AttributeValue<'life>>,
10949    ///
10950    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
10951    ///     <ul>
10952    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
10953    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
10954    ///     </ul>
10955    ///   
10956    pub translate: core::option::Option<AttributeValue<'life>>,
10957    ///
10958    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
10959    ///     <ul>
10960    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
10961    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
10962    ///     </ul>
10963    ///   
10964    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
10965}
10966#[allow(deprecated)]
10967
10968impl<'life> Dl<'life> {
10969    /// Get the tag name of the element.
10970    /// This is the same as the name of the struct, in kebab-case.
10971    pub fn tag() -> &'static str {
10972        "dl"
10973    }
10974    /// Sets an attribute of the element.
10975    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
10976    /// If the `alloc` feature is disabled, this function will silently fail.
10977    ///
10978    /// # Note
10979    /// This only works when the attribute is lowercase.
10980    pub fn set_attr(
10981        &mut self,
10982        name: &'life str,
10983        value: impl core::convert::Into<AttributeValue<'life>>,
10984    ) {
10985        match name {
10986            "accesskey" => self.accesskey = Some(value.into()),
10987            "autocapitalize" => self.autocapitalize = Some(value.into()),
10988            "autofocus" => self.autofocus = Some(value.into()),
10989            "class" => self.class = Some(value.into()),
10990            "contenteditable" => self.contenteditable = Some(value.into()),
10991            "contextmenu" => self.contextmenu = Some(value.into()),
10992            "dir" => self.dir = Some(value.into()),
10993            "draggable" => self.draggable = Some(value.into()),
10994            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
10995            "exportparts" => self.exportparts = Some(value.into()),
10996            "hidden" => self.hidden = Some(value.into()),
10997            "id" => self.id = Some(value.into()),
10998            "inert" => self.inert = Some(value.into()),
10999            "inputmode" => self.inputmode = Some(value.into()),
11000            "is" => self.is = Some(value.into()),
11001            "itemid" => self.itemid = Some(value.into()),
11002            "itemprop" => self.itemprop = Some(value.into()),
11003            "itemref" => self.itemref = Some(value.into()),
11004            "itemscope" => self.itemscope = Some(value.into()),
11005            "itemtype" => self.itemtype = Some(value.into()),
11006            "lang" => self.lang = Some(value.into()),
11007            "nonce" => self.nonce = Some(value.into()),
11008            "part" => self.part = Some(value.into()),
11009            "popover" => self.popover = Some(value.into()),
11010            "role" => self.role = Some(value.into()),
11011            "slot" => self.slot = Some(value.into()),
11012            "spellcheck" => self.spellcheck = Some(value.into()),
11013            "style" => self.style = Some(value.into()),
11014            "tabindex" => self.tabindex = Some(value.into()),
11015            "title" => self.title = Some(value.into()),
11016            "translate" => self.translate = Some(value.into()),
11017            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
11018            #[cfg(feature = "alloc")]
11019            _ => {
11020                #[allow(clippy::useless_conversion)]
11021                self.extra.insert(name.into(), value.into());
11022            }
11023            #[cfg(not(feature = "alloc"))]
11024            _ => {}
11025        }
11026    }
11027}
11028/// The <strong><code>&lt;dl&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents a description list. The element encloses a list of groups of terms (specified using the <a href="/en-US/docs/Web/HTML/Element/dt"><code>&lt;dt&gt;</code></a> element) and descriptions (provided by <a href="/en-US/docs/Web/HTML/Element/dd"><code>&lt;dd&gt;</code></a> elements). Common uses for this element are to implement a glossary or to display metadata (a list of key-value pairs).
11029///
11030/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dl>
11031
11032#[cfg(feature = "alloc")]
11033#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
11034pub struct DlOwned {
11035    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
11036    ///   
11037    pub accesskey: core::option::Option<AttributeValueOwned>,
11038    ///
11039    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
11040    ///     <ul>
11041    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
11042    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
11043    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
11044    ///       <li><code>characters</code>, all letters should default to uppercase</li>
11045    ///     </ul>
11046    ///   
11047    pub autocapitalize: core::option::Option<AttributeValueOwned>,
11048    ///
11049    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
11050    ///   
11051    pub autofocus: core::option::Option<AttributeValueOwned>,
11052    ///
11053    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
11054    ///   
11055    pub class: core::option::Option<AttributeValueOwned>,
11056    ///
11057    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
11058    ///     <ul>
11059    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
11060    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
11061    ///     </ul>
11062    ///   
11063    pub contenteditable: core::option::Option<AttributeValueOwned>,
11064    ///
11065    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
11066    ///   
11067    pub contextmenu: core::option::Option<AttributeValueOwned>,
11068    ///
11069    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
11070    ///   
11071    #[cfg(feature = "alloc")]
11072    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
11073    ///
11074    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
11075    ///     <ul>
11076    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
11077    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
11078    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
11079    ///     </ul>
11080    ///   
11081    pub dir: core::option::Option<AttributeValueOwned>,
11082    ///
11083    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
11084    ///     <ul>
11085    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
11086    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
11087    ///     </ul>
11088    ///   
11089    pub draggable: core::option::Option<AttributeValueOwned>,
11090    ///
11091    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
11092    ///   
11093    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
11094    ///
11095    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
11096    ///   
11097    pub exportparts: core::option::Option<AttributeValueOwned>,
11098    /// /// Extra attributes of the element.
11099
11100    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
11101    #[cfg(feature = "alloc")]
11102    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
11103    ///
11104    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
11105    ///   
11106    pub hidden: core::option::Option<AttributeValueOwned>,
11107    ///
11108    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
11109    ///   
11110    pub id: core::option::Option<AttributeValueOwned>,
11111    ///
11112    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
11113    ///   
11114    pub inert: core::option::Option<AttributeValueOwned>,
11115    ///
11116    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
11117    ///   
11118    pub inputmode: core::option::Option<AttributeValueOwned>,
11119    ///
11120    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
11121    ///   
11122    pub is: core::option::Option<AttributeValueOwned>,
11123    ///
11124    ///     <p>The unique, global identifier of an item.</p>
11125    ///   
11126    pub itemid: core::option::Option<AttributeValueOwned>,
11127    ///
11128    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
11129    ///   
11130    pub itemprop: core::option::Option<AttributeValueOwned>,
11131    ///
11132    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
11133    ///   
11134    pub itemref: core::option::Option<AttributeValueOwned>,
11135    ///
11136    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
11137    ///   
11138    pub itemscope: core::option::Option<AttributeValueOwned>,
11139    ///
11140    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
11141    ///   
11142    pub itemtype: core::option::Option<AttributeValueOwned>,
11143    ///
11144    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
11145    ///   
11146    pub lang: core::option::Option<AttributeValueOwned>,
11147    ///
11148    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
11149    ///   
11150    pub nonce: core::option::Option<AttributeValueOwned>,
11151    ///
11152    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
11153    ///   
11154    pub part: core::option::Option<AttributeValueOwned>,
11155    ///
11156    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
11157    ///   
11158    pub popover: core::option::Option<AttributeValueOwned>,
11159    ///
11160    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
11161    ///   
11162    pub role: core::option::Option<AttributeValueOwned>,
11163    ///
11164    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
11165    ///   
11166    pub slot: core::option::Option<AttributeValueOwned>,
11167    ///
11168    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
11169    ///     <ul>
11170    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
11171    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
11172    ///     </ul>
11173    ///   
11174    pub spellcheck: core::option::Option<AttributeValueOwned>,
11175    ///
11176    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
11177    ///   
11178    pub style: core::option::Option<AttributeValueOwned>,
11179    ///
11180    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
11181    ///     <ul>
11182    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
11183    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
11184    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
11185    ///     </ul>
11186    ///   
11187    pub tabindex: core::option::Option<AttributeValueOwned>,
11188    ///
11189    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
11190    ///   
11191    pub title: core::option::Option<AttributeValueOwned>,
11192    ///
11193    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
11194    ///     <ul>
11195    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
11196    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
11197    ///     </ul>
11198    ///   
11199    pub translate: core::option::Option<AttributeValueOwned>,
11200    ///
11201    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
11202    ///     <ul>
11203    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
11204    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
11205    ///     </ul>
11206    ///   
11207    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
11208}
11209#[allow(deprecated)]
11210#[cfg(feature = "alloc")]
11211impl DlOwned {
11212    /// Get the tag name of the element.
11213    /// This is the same as the name of the struct, in kebab-case.
11214    pub fn tag() -> &'static str {
11215        "dl"
11216    }
11217    /// Sets an attribute of the element.
11218    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
11219    /// If the `alloc` feature is disabled, this function will silently fail.
11220    ///
11221    /// # Note
11222    /// This only works when the attribute is lowercase.
11223    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
11224        match name {
11225            "accesskey" => self.accesskey = Some(value.into()),
11226            "autocapitalize" => self.autocapitalize = Some(value.into()),
11227            "autofocus" => self.autofocus = Some(value.into()),
11228            "class" => self.class = Some(value.into()),
11229            "contenteditable" => self.contenteditable = Some(value.into()),
11230            "contextmenu" => self.contextmenu = Some(value.into()),
11231            "dir" => self.dir = Some(value.into()),
11232            "draggable" => self.draggable = Some(value.into()),
11233            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
11234            "exportparts" => self.exportparts = Some(value.into()),
11235            "hidden" => self.hidden = Some(value.into()),
11236            "id" => self.id = Some(value.into()),
11237            "inert" => self.inert = Some(value.into()),
11238            "inputmode" => self.inputmode = Some(value.into()),
11239            "is" => self.is = Some(value.into()),
11240            "itemid" => self.itemid = Some(value.into()),
11241            "itemprop" => self.itemprop = Some(value.into()),
11242            "itemref" => self.itemref = Some(value.into()),
11243            "itemscope" => self.itemscope = Some(value.into()),
11244            "itemtype" => self.itemtype = Some(value.into()),
11245            "lang" => self.lang = Some(value.into()),
11246            "nonce" => self.nonce = Some(value.into()),
11247            "part" => self.part = Some(value.into()),
11248            "popover" => self.popover = Some(value.into()),
11249            "role" => self.role = Some(value.into()),
11250            "slot" => self.slot = Some(value.into()),
11251            "spellcheck" => self.spellcheck = Some(value.into()),
11252            "style" => self.style = Some(value.into()),
11253            "tabindex" => self.tabindex = Some(value.into()),
11254            "title" => self.title = Some(value.into()),
11255            "translate" => self.translate = Some(value.into()),
11256            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
11257            #[cfg(feature = "alloc")]
11258            _ => {
11259                #[allow(clippy::useless_conversion)]
11260                self.extra.insert(name.into(), value.into());
11261            }
11262            #[cfg(not(feature = "alloc"))]
11263            _ => {}
11264        }
11265    }
11266}
11267/// The <strong><code>&lt;dt&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element specifies a term in a description or definition list, and as such must be used inside a <a href="/en-US/docs/Web/HTML/Element/dl"><code>&lt;dl&gt;</code></a> element. It is usually followed by a <a href="/en-US/docs/Web/HTML/Element/dd"><code>&lt;dd&gt;</code></a> element; however, multiple <code>&lt;dt&gt;</code> elements in a row indicate several terms that are all defined by the immediate next <a href="/en-US/docs/Web/HTML/Element/dd"><code>&lt;dd&gt;</code></a> element.
11268///
11269/// The subsequent <a href="/en-US/docs/Web/HTML/Element/dd"><code>&lt;dd&gt;</code></a> (<strong>Description Details</strong>) element provides the definition or other related text associated with the term specified using <code>&lt;dt&gt;</code>.
11270///
11271/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dt>
11272
11273#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
11274pub struct Dt<'life> {
11275    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
11276    ///   
11277    pub accesskey: core::option::Option<AttributeValue<'life>>,
11278    ///
11279    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
11280    ///     <ul>
11281    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
11282    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
11283    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
11284    ///       <li><code>characters</code>, all letters should default to uppercase</li>
11285    ///     </ul>
11286    ///   
11287    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
11288    ///
11289    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
11290    ///   
11291    pub autofocus: core::option::Option<AttributeValue<'life>>,
11292    ///
11293    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
11294    ///   
11295    pub class: core::option::Option<AttributeValue<'life>>,
11296    ///
11297    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
11298    ///     <ul>
11299    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
11300    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
11301    ///     </ul>
11302    ///   
11303    pub contenteditable: core::option::Option<AttributeValue<'life>>,
11304    ///
11305    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
11306    ///   
11307    pub contextmenu: core::option::Option<AttributeValue<'life>>,
11308    ///
11309    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
11310    ///   
11311    #[cfg(feature = "alloc")]
11312    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
11313    ///
11314    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
11315    ///     <ul>
11316    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
11317    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
11318    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
11319    ///     </ul>
11320    ///   
11321    pub dir: core::option::Option<AttributeValue<'life>>,
11322    ///
11323    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
11324    ///     <ul>
11325    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
11326    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
11327    ///     </ul>
11328    ///   
11329    pub draggable: core::option::Option<AttributeValue<'life>>,
11330    ///
11331    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
11332    ///   
11333    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
11334    ///
11335    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
11336    ///   
11337    pub exportparts: core::option::Option<AttributeValue<'life>>,
11338    /// /// Extra attributes of the element.
11339
11340    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
11341    #[cfg(feature = "alloc")]
11342    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
11343    ///
11344    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
11345    ///   
11346    pub hidden: core::option::Option<AttributeValue<'life>>,
11347    ///
11348    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
11349    ///   
11350    pub id: core::option::Option<AttributeValue<'life>>,
11351    ///
11352    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
11353    ///   
11354    pub inert: core::option::Option<AttributeValue<'life>>,
11355    ///
11356    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
11357    ///   
11358    pub inputmode: core::option::Option<AttributeValue<'life>>,
11359    ///
11360    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
11361    ///   
11362    pub is: core::option::Option<AttributeValue<'life>>,
11363    ///
11364    ///     <p>The unique, global identifier of an item.</p>
11365    ///   
11366    pub itemid: core::option::Option<AttributeValue<'life>>,
11367    ///
11368    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
11369    ///   
11370    pub itemprop: core::option::Option<AttributeValue<'life>>,
11371    ///
11372    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
11373    ///   
11374    pub itemref: core::option::Option<AttributeValue<'life>>,
11375    ///
11376    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
11377    ///   
11378    pub itemscope: core::option::Option<AttributeValue<'life>>,
11379    ///
11380    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
11381    ///   
11382    pub itemtype: core::option::Option<AttributeValue<'life>>,
11383    ///
11384    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
11385    ///   
11386    pub lang: core::option::Option<AttributeValue<'life>>,
11387    ///
11388    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
11389    ///   
11390    pub nonce: core::option::Option<AttributeValue<'life>>,
11391    ///
11392    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
11393    ///   
11394    pub part: core::option::Option<AttributeValue<'life>>,
11395    ///
11396    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
11397    ///   
11398    pub popover: core::option::Option<AttributeValue<'life>>,
11399    ///
11400    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
11401    ///   
11402    pub role: core::option::Option<AttributeValue<'life>>,
11403    ///
11404    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
11405    ///   
11406    pub slot: core::option::Option<AttributeValue<'life>>,
11407    ///
11408    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
11409    ///     <ul>
11410    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
11411    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
11412    ///     </ul>
11413    ///   
11414    pub spellcheck: core::option::Option<AttributeValue<'life>>,
11415    ///
11416    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
11417    ///   
11418    pub style: core::option::Option<AttributeValue<'life>>,
11419    ///
11420    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
11421    ///     <ul>
11422    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
11423    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
11424    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
11425    ///     </ul>
11426    ///   
11427    pub tabindex: core::option::Option<AttributeValue<'life>>,
11428    ///
11429    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
11430    ///   
11431    pub title: core::option::Option<AttributeValue<'life>>,
11432    ///
11433    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
11434    ///     <ul>
11435    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
11436    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
11437    ///     </ul>
11438    ///   
11439    pub translate: core::option::Option<AttributeValue<'life>>,
11440    ///
11441    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
11442    ///     <ul>
11443    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
11444    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
11445    ///     </ul>
11446    ///   
11447    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
11448}
11449#[allow(deprecated)]
11450
11451impl<'life> Dt<'life> {
11452    /// Get the tag name of the element.
11453    /// This is the same as the name of the struct, in kebab-case.
11454    pub fn tag() -> &'static str {
11455        "dt"
11456    }
11457    /// Sets an attribute of the element.
11458    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
11459    /// If the `alloc` feature is disabled, this function will silently fail.
11460    ///
11461    /// # Note
11462    /// This only works when the attribute is lowercase.
11463    pub fn set_attr(
11464        &mut self,
11465        name: &'life str,
11466        value: impl core::convert::Into<AttributeValue<'life>>,
11467    ) {
11468        match name {
11469            "accesskey" => self.accesskey = Some(value.into()),
11470            "autocapitalize" => self.autocapitalize = Some(value.into()),
11471            "autofocus" => self.autofocus = Some(value.into()),
11472            "class" => self.class = Some(value.into()),
11473            "contenteditable" => self.contenteditable = Some(value.into()),
11474            "contextmenu" => self.contextmenu = Some(value.into()),
11475            "dir" => self.dir = Some(value.into()),
11476            "draggable" => self.draggable = Some(value.into()),
11477            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
11478            "exportparts" => self.exportparts = Some(value.into()),
11479            "hidden" => self.hidden = Some(value.into()),
11480            "id" => self.id = Some(value.into()),
11481            "inert" => self.inert = Some(value.into()),
11482            "inputmode" => self.inputmode = Some(value.into()),
11483            "is" => self.is = Some(value.into()),
11484            "itemid" => self.itemid = Some(value.into()),
11485            "itemprop" => self.itemprop = Some(value.into()),
11486            "itemref" => self.itemref = Some(value.into()),
11487            "itemscope" => self.itemscope = Some(value.into()),
11488            "itemtype" => self.itemtype = Some(value.into()),
11489            "lang" => self.lang = Some(value.into()),
11490            "nonce" => self.nonce = Some(value.into()),
11491            "part" => self.part = Some(value.into()),
11492            "popover" => self.popover = Some(value.into()),
11493            "role" => self.role = Some(value.into()),
11494            "slot" => self.slot = Some(value.into()),
11495            "spellcheck" => self.spellcheck = Some(value.into()),
11496            "style" => self.style = Some(value.into()),
11497            "tabindex" => self.tabindex = Some(value.into()),
11498            "title" => self.title = Some(value.into()),
11499            "translate" => self.translate = Some(value.into()),
11500            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
11501            #[cfg(feature = "alloc")]
11502            _ => {
11503                #[allow(clippy::useless_conversion)]
11504                self.extra.insert(name.into(), value.into());
11505            }
11506            #[cfg(not(feature = "alloc"))]
11507            _ => {}
11508        }
11509    }
11510}
11511/// The <strong><code>&lt;dt&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element specifies a term in a description or definition list, and as such must be used inside a <a href="/en-US/docs/Web/HTML/Element/dl"><code>&lt;dl&gt;</code></a> element. It is usually followed by a <a href="/en-US/docs/Web/HTML/Element/dd"><code>&lt;dd&gt;</code></a> element; however, multiple <code>&lt;dt&gt;</code> elements in a row indicate several terms that are all defined by the immediate next <a href="/en-US/docs/Web/HTML/Element/dd"><code>&lt;dd&gt;</code></a> element.
11512///
11513/// The subsequent <a href="/en-US/docs/Web/HTML/Element/dd"><code>&lt;dd&gt;</code></a> (<strong>Description Details</strong>) element provides the definition or other related text associated with the term specified using <code>&lt;dt&gt;</code>.
11514///
11515/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dt>
11516
11517#[cfg(feature = "alloc")]
11518#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
11519pub struct DtOwned {
11520    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
11521    ///   
11522    pub accesskey: core::option::Option<AttributeValueOwned>,
11523    ///
11524    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
11525    ///     <ul>
11526    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
11527    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
11528    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
11529    ///       <li><code>characters</code>, all letters should default to uppercase</li>
11530    ///     </ul>
11531    ///   
11532    pub autocapitalize: core::option::Option<AttributeValueOwned>,
11533    ///
11534    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
11535    ///   
11536    pub autofocus: core::option::Option<AttributeValueOwned>,
11537    ///
11538    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
11539    ///   
11540    pub class: core::option::Option<AttributeValueOwned>,
11541    ///
11542    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
11543    ///     <ul>
11544    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
11545    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
11546    ///     </ul>
11547    ///   
11548    pub contenteditable: core::option::Option<AttributeValueOwned>,
11549    ///
11550    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
11551    ///   
11552    pub contextmenu: core::option::Option<AttributeValueOwned>,
11553    ///
11554    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
11555    ///   
11556    #[cfg(feature = "alloc")]
11557    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
11558    ///
11559    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
11560    ///     <ul>
11561    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
11562    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
11563    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
11564    ///     </ul>
11565    ///   
11566    pub dir: core::option::Option<AttributeValueOwned>,
11567    ///
11568    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
11569    ///     <ul>
11570    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
11571    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
11572    ///     </ul>
11573    ///   
11574    pub draggable: core::option::Option<AttributeValueOwned>,
11575    ///
11576    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
11577    ///   
11578    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
11579    ///
11580    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
11581    ///   
11582    pub exportparts: core::option::Option<AttributeValueOwned>,
11583    /// /// Extra attributes of the element.
11584
11585    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
11586    #[cfg(feature = "alloc")]
11587    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
11588    ///
11589    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
11590    ///   
11591    pub hidden: core::option::Option<AttributeValueOwned>,
11592    ///
11593    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
11594    ///   
11595    pub id: core::option::Option<AttributeValueOwned>,
11596    ///
11597    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
11598    ///   
11599    pub inert: core::option::Option<AttributeValueOwned>,
11600    ///
11601    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
11602    ///   
11603    pub inputmode: core::option::Option<AttributeValueOwned>,
11604    ///
11605    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
11606    ///   
11607    pub is: core::option::Option<AttributeValueOwned>,
11608    ///
11609    ///     <p>The unique, global identifier of an item.</p>
11610    ///   
11611    pub itemid: core::option::Option<AttributeValueOwned>,
11612    ///
11613    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
11614    ///   
11615    pub itemprop: core::option::Option<AttributeValueOwned>,
11616    ///
11617    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
11618    ///   
11619    pub itemref: core::option::Option<AttributeValueOwned>,
11620    ///
11621    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
11622    ///   
11623    pub itemscope: core::option::Option<AttributeValueOwned>,
11624    ///
11625    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
11626    ///   
11627    pub itemtype: core::option::Option<AttributeValueOwned>,
11628    ///
11629    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
11630    ///   
11631    pub lang: core::option::Option<AttributeValueOwned>,
11632    ///
11633    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
11634    ///   
11635    pub nonce: core::option::Option<AttributeValueOwned>,
11636    ///
11637    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
11638    ///   
11639    pub part: core::option::Option<AttributeValueOwned>,
11640    ///
11641    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
11642    ///   
11643    pub popover: core::option::Option<AttributeValueOwned>,
11644    ///
11645    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
11646    ///   
11647    pub role: core::option::Option<AttributeValueOwned>,
11648    ///
11649    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
11650    ///   
11651    pub slot: core::option::Option<AttributeValueOwned>,
11652    ///
11653    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
11654    ///     <ul>
11655    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
11656    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
11657    ///     </ul>
11658    ///   
11659    pub spellcheck: core::option::Option<AttributeValueOwned>,
11660    ///
11661    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
11662    ///   
11663    pub style: core::option::Option<AttributeValueOwned>,
11664    ///
11665    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
11666    ///     <ul>
11667    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
11668    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
11669    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
11670    ///     </ul>
11671    ///   
11672    pub tabindex: core::option::Option<AttributeValueOwned>,
11673    ///
11674    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
11675    ///   
11676    pub title: core::option::Option<AttributeValueOwned>,
11677    ///
11678    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
11679    ///     <ul>
11680    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
11681    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
11682    ///     </ul>
11683    ///   
11684    pub translate: core::option::Option<AttributeValueOwned>,
11685    ///
11686    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
11687    ///     <ul>
11688    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
11689    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
11690    ///     </ul>
11691    ///   
11692    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
11693}
11694#[allow(deprecated)]
11695#[cfg(feature = "alloc")]
11696impl DtOwned {
11697    /// Get the tag name of the element.
11698    /// This is the same as the name of the struct, in kebab-case.
11699    pub fn tag() -> &'static str {
11700        "dt"
11701    }
11702    /// Sets an attribute of the element.
11703    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
11704    /// If the `alloc` feature is disabled, this function will silently fail.
11705    ///
11706    /// # Note
11707    /// This only works when the attribute is lowercase.
11708    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
11709        match name {
11710            "accesskey" => self.accesskey = Some(value.into()),
11711            "autocapitalize" => self.autocapitalize = Some(value.into()),
11712            "autofocus" => self.autofocus = Some(value.into()),
11713            "class" => self.class = Some(value.into()),
11714            "contenteditable" => self.contenteditable = Some(value.into()),
11715            "contextmenu" => self.contextmenu = Some(value.into()),
11716            "dir" => self.dir = Some(value.into()),
11717            "draggable" => self.draggable = Some(value.into()),
11718            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
11719            "exportparts" => self.exportparts = Some(value.into()),
11720            "hidden" => self.hidden = Some(value.into()),
11721            "id" => self.id = Some(value.into()),
11722            "inert" => self.inert = Some(value.into()),
11723            "inputmode" => self.inputmode = Some(value.into()),
11724            "is" => self.is = Some(value.into()),
11725            "itemid" => self.itemid = Some(value.into()),
11726            "itemprop" => self.itemprop = Some(value.into()),
11727            "itemref" => self.itemref = Some(value.into()),
11728            "itemscope" => self.itemscope = Some(value.into()),
11729            "itemtype" => self.itemtype = Some(value.into()),
11730            "lang" => self.lang = Some(value.into()),
11731            "nonce" => self.nonce = Some(value.into()),
11732            "part" => self.part = Some(value.into()),
11733            "popover" => self.popover = Some(value.into()),
11734            "role" => self.role = Some(value.into()),
11735            "slot" => self.slot = Some(value.into()),
11736            "spellcheck" => self.spellcheck = Some(value.into()),
11737            "style" => self.style = Some(value.into()),
11738            "tabindex" => self.tabindex = Some(value.into()),
11739            "title" => self.title = Some(value.into()),
11740            "translate" => self.translate = Some(value.into()),
11741            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
11742            #[cfg(feature = "alloc")]
11743            _ => {
11744                #[allow(clippy::useless_conversion)]
11745                self.extra.insert(name.into(), value.into());
11746            }
11747            #[cfg(not(feature = "alloc"))]
11748            _ => {}
11749        }
11750    }
11751}
11752/// The <strong><code>&lt;figcaption&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents a caption or legend describing the rest of the contents of its parent <a href="/en-US/docs/Web/HTML/Element/figure"><code>&lt;figure&gt;</code></a> element.
11753///
11754/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/figcaption>
11755
11756#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
11757pub struct Figcaption<'life> {
11758    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
11759    ///   
11760    pub accesskey: core::option::Option<AttributeValue<'life>>,
11761    ///
11762    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
11763    ///     <ul>
11764    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
11765    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
11766    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
11767    ///       <li><code>characters</code>, all letters should default to uppercase</li>
11768    ///     </ul>
11769    ///   
11770    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
11771    ///
11772    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
11773    ///   
11774    pub autofocus: core::option::Option<AttributeValue<'life>>,
11775    ///
11776    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
11777    ///   
11778    pub class: core::option::Option<AttributeValue<'life>>,
11779    ///
11780    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
11781    ///     <ul>
11782    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
11783    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
11784    ///     </ul>
11785    ///   
11786    pub contenteditable: core::option::Option<AttributeValue<'life>>,
11787    ///
11788    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
11789    ///   
11790    pub contextmenu: core::option::Option<AttributeValue<'life>>,
11791    ///
11792    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
11793    ///   
11794    #[cfg(feature = "alloc")]
11795    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
11796    ///
11797    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
11798    ///     <ul>
11799    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
11800    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
11801    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
11802    ///     </ul>
11803    ///   
11804    pub dir: core::option::Option<AttributeValue<'life>>,
11805    ///
11806    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
11807    ///     <ul>
11808    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
11809    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
11810    ///     </ul>
11811    ///   
11812    pub draggable: core::option::Option<AttributeValue<'life>>,
11813    ///
11814    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
11815    ///   
11816    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
11817    ///
11818    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
11819    ///   
11820    pub exportparts: core::option::Option<AttributeValue<'life>>,
11821    /// /// Extra attributes of the element.
11822
11823    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
11824    #[cfg(feature = "alloc")]
11825    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
11826    ///
11827    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
11828    ///   
11829    pub hidden: core::option::Option<AttributeValue<'life>>,
11830    ///
11831    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
11832    ///   
11833    pub id: core::option::Option<AttributeValue<'life>>,
11834    ///
11835    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
11836    ///   
11837    pub inert: core::option::Option<AttributeValue<'life>>,
11838    ///
11839    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
11840    ///   
11841    pub inputmode: core::option::Option<AttributeValue<'life>>,
11842    ///
11843    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
11844    ///   
11845    pub is: core::option::Option<AttributeValue<'life>>,
11846    ///
11847    ///     <p>The unique, global identifier of an item.</p>
11848    ///   
11849    pub itemid: core::option::Option<AttributeValue<'life>>,
11850    ///
11851    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
11852    ///   
11853    pub itemprop: core::option::Option<AttributeValue<'life>>,
11854    ///
11855    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
11856    ///   
11857    pub itemref: core::option::Option<AttributeValue<'life>>,
11858    ///
11859    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
11860    ///   
11861    pub itemscope: core::option::Option<AttributeValue<'life>>,
11862    ///
11863    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
11864    ///   
11865    pub itemtype: core::option::Option<AttributeValue<'life>>,
11866    ///
11867    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
11868    ///   
11869    pub lang: core::option::Option<AttributeValue<'life>>,
11870    ///
11871    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
11872    ///   
11873    pub nonce: core::option::Option<AttributeValue<'life>>,
11874    ///
11875    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
11876    ///   
11877    pub part: core::option::Option<AttributeValue<'life>>,
11878    ///
11879    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
11880    ///   
11881    pub popover: core::option::Option<AttributeValue<'life>>,
11882    ///
11883    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
11884    ///   
11885    pub role: core::option::Option<AttributeValue<'life>>,
11886    ///
11887    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
11888    ///   
11889    pub slot: core::option::Option<AttributeValue<'life>>,
11890    ///
11891    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
11892    ///     <ul>
11893    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
11894    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
11895    ///     </ul>
11896    ///   
11897    pub spellcheck: core::option::Option<AttributeValue<'life>>,
11898    ///
11899    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
11900    ///   
11901    pub style: core::option::Option<AttributeValue<'life>>,
11902    ///
11903    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
11904    ///     <ul>
11905    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
11906    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
11907    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
11908    ///     </ul>
11909    ///   
11910    pub tabindex: core::option::Option<AttributeValue<'life>>,
11911    ///
11912    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
11913    ///   
11914    pub title: core::option::Option<AttributeValue<'life>>,
11915    ///
11916    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
11917    ///     <ul>
11918    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
11919    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
11920    ///     </ul>
11921    ///   
11922    pub translate: core::option::Option<AttributeValue<'life>>,
11923    ///
11924    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
11925    ///     <ul>
11926    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
11927    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
11928    ///     </ul>
11929    ///   
11930    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
11931}
11932#[allow(deprecated)]
11933
11934impl<'life> Figcaption<'life> {
11935    /// Get the tag name of the element.
11936    /// This is the same as the name of the struct, in kebab-case.
11937    pub fn tag() -> &'static str {
11938        "figcaption"
11939    }
11940    /// Sets an attribute of the element.
11941    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
11942    /// If the `alloc` feature is disabled, this function will silently fail.
11943    ///
11944    /// # Note
11945    /// This only works when the attribute is lowercase.
11946    pub fn set_attr(
11947        &mut self,
11948        name: &'life str,
11949        value: impl core::convert::Into<AttributeValue<'life>>,
11950    ) {
11951        match name {
11952            "accesskey" => self.accesskey = Some(value.into()),
11953            "autocapitalize" => self.autocapitalize = Some(value.into()),
11954            "autofocus" => self.autofocus = Some(value.into()),
11955            "class" => self.class = Some(value.into()),
11956            "contenteditable" => self.contenteditable = Some(value.into()),
11957            "contextmenu" => self.contextmenu = Some(value.into()),
11958            "dir" => self.dir = Some(value.into()),
11959            "draggable" => self.draggable = Some(value.into()),
11960            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
11961            "exportparts" => self.exportparts = Some(value.into()),
11962            "hidden" => self.hidden = Some(value.into()),
11963            "id" => self.id = Some(value.into()),
11964            "inert" => self.inert = Some(value.into()),
11965            "inputmode" => self.inputmode = Some(value.into()),
11966            "is" => self.is = Some(value.into()),
11967            "itemid" => self.itemid = Some(value.into()),
11968            "itemprop" => self.itemprop = Some(value.into()),
11969            "itemref" => self.itemref = Some(value.into()),
11970            "itemscope" => self.itemscope = Some(value.into()),
11971            "itemtype" => self.itemtype = Some(value.into()),
11972            "lang" => self.lang = Some(value.into()),
11973            "nonce" => self.nonce = Some(value.into()),
11974            "part" => self.part = Some(value.into()),
11975            "popover" => self.popover = Some(value.into()),
11976            "role" => self.role = Some(value.into()),
11977            "slot" => self.slot = Some(value.into()),
11978            "spellcheck" => self.spellcheck = Some(value.into()),
11979            "style" => self.style = Some(value.into()),
11980            "tabindex" => self.tabindex = Some(value.into()),
11981            "title" => self.title = Some(value.into()),
11982            "translate" => self.translate = Some(value.into()),
11983            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
11984            #[cfg(feature = "alloc")]
11985            _ => {
11986                #[allow(clippy::useless_conversion)]
11987                self.extra.insert(name.into(), value.into());
11988            }
11989            #[cfg(not(feature = "alloc"))]
11990            _ => {}
11991        }
11992    }
11993}
11994/// The <strong><code>&lt;figcaption&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents a caption or legend describing the rest of the contents of its parent <a href="/en-US/docs/Web/HTML/Element/figure"><code>&lt;figure&gt;</code></a> element.
11995///
11996/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/figcaption>
11997
11998#[cfg(feature = "alloc")]
11999#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
12000pub struct FigcaptionOwned {
12001    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
12002    ///   
12003    pub accesskey: core::option::Option<AttributeValueOwned>,
12004    ///
12005    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
12006    ///     <ul>
12007    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
12008    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
12009    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
12010    ///       <li><code>characters</code>, all letters should default to uppercase</li>
12011    ///     </ul>
12012    ///   
12013    pub autocapitalize: core::option::Option<AttributeValueOwned>,
12014    ///
12015    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
12016    ///   
12017    pub autofocus: core::option::Option<AttributeValueOwned>,
12018    ///
12019    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
12020    ///   
12021    pub class: core::option::Option<AttributeValueOwned>,
12022    ///
12023    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
12024    ///     <ul>
12025    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
12026    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
12027    ///     </ul>
12028    ///   
12029    pub contenteditable: core::option::Option<AttributeValueOwned>,
12030    ///
12031    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
12032    ///   
12033    pub contextmenu: core::option::Option<AttributeValueOwned>,
12034    ///
12035    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
12036    ///   
12037    #[cfg(feature = "alloc")]
12038    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
12039    ///
12040    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
12041    ///     <ul>
12042    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
12043    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
12044    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
12045    ///     </ul>
12046    ///   
12047    pub dir: core::option::Option<AttributeValueOwned>,
12048    ///
12049    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
12050    ///     <ul>
12051    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
12052    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
12053    ///     </ul>
12054    ///   
12055    pub draggable: core::option::Option<AttributeValueOwned>,
12056    ///
12057    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
12058    ///   
12059    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
12060    ///
12061    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
12062    ///   
12063    pub exportparts: core::option::Option<AttributeValueOwned>,
12064    /// /// Extra attributes of the element.
12065
12066    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
12067    #[cfg(feature = "alloc")]
12068    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
12069    ///
12070    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
12071    ///   
12072    pub hidden: core::option::Option<AttributeValueOwned>,
12073    ///
12074    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
12075    ///   
12076    pub id: core::option::Option<AttributeValueOwned>,
12077    ///
12078    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
12079    ///   
12080    pub inert: core::option::Option<AttributeValueOwned>,
12081    ///
12082    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
12083    ///   
12084    pub inputmode: core::option::Option<AttributeValueOwned>,
12085    ///
12086    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
12087    ///   
12088    pub is: core::option::Option<AttributeValueOwned>,
12089    ///
12090    ///     <p>The unique, global identifier of an item.</p>
12091    ///   
12092    pub itemid: core::option::Option<AttributeValueOwned>,
12093    ///
12094    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
12095    ///   
12096    pub itemprop: core::option::Option<AttributeValueOwned>,
12097    ///
12098    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
12099    ///   
12100    pub itemref: core::option::Option<AttributeValueOwned>,
12101    ///
12102    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
12103    ///   
12104    pub itemscope: core::option::Option<AttributeValueOwned>,
12105    ///
12106    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
12107    ///   
12108    pub itemtype: core::option::Option<AttributeValueOwned>,
12109    ///
12110    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
12111    ///   
12112    pub lang: core::option::Option<AttributeValueOwned>,
12113    ///
12114    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
12115    ///   
12116    pub nonce: core::option::Option<AttributeValueOwned>,
12117    ///
12118    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
12119    ///   
12120    pub part: core::option::Option<AttributeValueOwned>,
12121    ///
12122    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
12123    ///   
12124    pub popover: core::option::Option<AttributeValueOwned>,
12125    ///
12126    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
12127    ///   
12128    pub role: core::option::Option<AttributeValueOwned>,
12129    ///
12130    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
12131    ///   
12132    pub slot: core::option::Option<AttributeValueOwned>,
12133    ///
12134    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
12135    ///     <ul>
12136    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
12137    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
12138    ///     </ul>
12139    ///   
12140    pub spellcheck: core::option::Option<AttributeValueOwned>,
12141    ///
12142    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
12143    ///   
12144    pub style: core::option::Option<AttributeValueOwned>,
12145    ///
12146    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
12147    ///     <ul>
12148    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
12149    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
12150    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
12151    ///     </ul>
12152    ///   
12153    pub tabindex: core::option::Option<AttributeValueOwned>,
12154    ///
12155    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
12156    ///   
12157    pub title: core::option::Option<AttributeValueOwned>,
12158    ///
12159    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
12160    ///     <ul>
12161    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
12162    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
12163    ///     </ul>
12164    ///   
12165    pub translate: core::option::Option<AttributeValueOwned>,
12166    ///
12167    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
12168    ///     <ul>
12169    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
12170    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
12171    ///     </ul>
12172    ///   
12173    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
12174}
12175#[allow(deprecated)]
12176#[cfg(feature = "alloc")]
12177impl FigcaptionOwned {
12178    /// Get the tag name of the element.
12179    /// This is the same as the name of the struct, in kebab-case.
12180    pub fn tag() -> &'static str {
12181        "figcaption"
12182    }
12183    /// Sets an attribute of the element.
12184    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
12185    /// If the `alloc` feature is disabled, this function will silently fail.
12186    ///
12187    /// # Note
12188    /// This only works when the attribute is lowercase.
12189    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
12190        match name {
12191            "accesskey" => self.accesskey = Some(value.into()),
12192            "autocapitalize" => self.autocapitalize = Some(value.into()),
12193            "autofocus" => self.autofocus = Some(value.into()),
12194            "class" => self.class = Some(value.into()),
12195            "contenteditable" => self.contenteditable = Some(value.into()),
12196            "contextmenu" => self.contextmenu = Some(value.into()),
12197            "dir" => self.dir = Some(value.into()),
12198            "draggable" => self.draggable = Some(value.into()),
12199            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
12200            "exportparts" => self.exportparts = Some(value.into()),
12201            "hidden" => self.hidden = Some(value.into()),
12202            "id" => self.id = Some(value.into()),
12203            "inert" => self.inert = Some(value.into()),
12204            "inputmode" => self.inputmode = Some(value.into()),
12205            "is" => self.is = Some(value.into()),
12206            "itemid" => self.itemid = Some(value.into()),
12207            "itemprop" => self.itemprop = Some(value.into()),
12208            "itemref" => self.itemref = Some(value.into()),
12209            "itemscope" => self.itemscope = Some(value.into()),
12210            "itemtype" => self.itemtype = Some(value.into()),
12211            "lang" => self.lang = Some(value.into()),
12212            "nonce" => self.nonce = Some(value.into()),
12213            "part" => self.part = Some(value.into()),
12214            "popover" => self.popover = Some(value.into()),
12215            "role" => self.role = Some(value.into()),
12216            "slot" => self.slot = Some(value.into()),
12217            "spellcheck" => self.spellcheck = Some(value.into()),
12218            "style" => self.style = Some(value.into()),
12219            "tabindex" => self.tabindex = Some(value.into()),
12220            "title" => self.title = Some(value.into()),
12221            "translate" => self.translate = Some(value.into()),
12222            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
12223            #[cfg(feature = "alloc")]
12224            _ => {
12225                #[allow(clippy::useless_conversion)]
12226                self.extra.insert(name.into(), value.into());
12227            }
12228            #[cfg(not(feature = "alloc"))]
12229            _ => {}
12230        }
12231    }
12232}
12233/// The <strong><code>&lt;figure&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents self-contained content, potentially with an optional caption, which is specified using the <a href="/en-US/docs/Web/HTML/Element/figcaption"><code>&lt;figcaption&gt;</code></a> element. The figure, its caption, and its contents are referenced as a single unit.
12234///
12235/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/figure>
12236
12237#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
12238pub struct Figure<'life> {
12239    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
12240    ///   
12241    pub accesskey: core::option::Option<AttributeValue<'life>>,
12242    ///
12243    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
12244    ///     <ul>
12245    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
12246    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
12247    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
12248    ///       <li><code>characters</code>, all letters should default to uppercase</li>
12249    ///     </ul>
12250    ///   
12251    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
12252    ///
12253    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
12254    ///   
12255    pub autofocus: core::option::Option<AttributeValue<'life>>,
12256    ///
12257    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
12258    ///   
12259    pub class: core::option::Option<AttributeValue<'life>>,
12260    ///
12261    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
12262    ///     <ul>
12263    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
12264    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
12265    ///     </ul>
12266    ///   
12267    pub contenteditable: core::option::Option<AttributeValue<'life>>,
12268    ///
12269    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
12270    ///   
12271    pub contextmenu: core::option::Option<AttributeValue<'life>>,
12272    ///
12273    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
12274    ///   
12275    #[cfg(feature = "alloc")]
12276    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
12277    ///
12278    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
12279    ///     <ul>
12280    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
12281    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
12282    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
12283    ///     </ul>
12284    ///   
12285    pub dir: core::option::Option<AttributeValue<'life>>,
12286    ///
12287    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
12288    ///     <ul>
12289    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
12290    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
12291    ///     </ul>
12292    ///   
12293    pub draggable: core::option::Option<AttributeValue<'life>>,
12294    ///
12295    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
12296    ///   
12297    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
12298    ///
12299    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
12300    ///   
12301    pub exportparts: core::option::Option<AttributeValue<'life>>,
12302    /// /// Extra attributes of the element.
12303
12304    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
12305    #[cfg(feature = "alloc")]
12306    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
12307    ///
12308    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
12309    ///   
12310    pub hidden: core::option::Option<AttributeValue<'life>>,
12311    ///
12312    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
12313    ///   
12314    pub id: core::option::Option<AttributeValue<'life>>,
12315    ///
12316    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
12317    ///   
12318    pub inert: core::option::Option<AttributeValue<'life>>,
12319    ///
12320    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
12321    ///   
12322    pub inputmode: core::option::Option<AttributeValue<'life>>,
12323    ///
12324    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
12325    ///   
12326    pub is: core::option::Option<AttributeValue<'life>>,
12327    ///
12328    ///     <p>The unique, global identifier of an item.</p>
12329    ///   
12330    pub itemid: core::option::Option<AttributeValue<'life>>,
12331    ///
12332    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
12333    ///   
12334    pub itemprop: core::option::Option<AttributeValue<'life>>,
12335    ///
12336    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
12337    ///   
12338    pub itemref: core::option::Option<AttributeValue<'life>>,
12339    ///
12340    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
12341    ///   
12342    pub itemscope: core::option::Option<AttributeValue<'life>>,
12343    ///
12344    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
12345    ///   
12346    pub itemtype: core::option::Option<AttributeValue<'life>>,
12347    ///
12348    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
12349    ///   
12350    pub lang: core::option::Option<AttributeValue<'life>>,
12351    ///
12352    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
12353    ///   
12354    pub nonce: core::option::Option<AttributeValue<'life>>,
12355    ///
12356    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
12357    ///   
12358    pub part: core::option::Option<AttributeValue<'life>>,
12359    ///
12360    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
12361    ///   
12362    pub popover: core::option::Option<AttributeValue<'life>>,
12363    ///
12364    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
12365    ///   
12366    pub role: core::option::Option<AttributeValue<'life>>,
12367    ///
12368    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
12369    ///   
12370    pub slot: core::option::Option<AttributeValue<'life>>,
12371    ///
12372    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
12373    ///     <ul>
12374    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
12375    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
12376    ///     </ul>
12377    ///   
12378    pub spellcheck: core::option::Option<AttributeValue<'life>>,
12379    ///
12380    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
12381    ///   
12382    pub style: core::option::Option<AttributeValue<'life>>,
12383    ///
12384    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
12385    ///     <ul>
12386    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
12387    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
12388    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
12389    ///     </ul>
12390    ///   
12391    pub tabindex: core::option::Option<AttributeValue<'life>>,
12392    ///
12393    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
12394    ///   
12395    pub title: core::option::Option<AttributeValue<'life>>,
12396    ///
12397    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
12398    ///     <ul>
12399    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
12400    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
12401    ///     </ul>
12402    ///   
12403    pub translate: core::option::Option<AttributeValue<'life>>,
12404    ///
12405    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
12406    ///     <ul>
12407    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
12408    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
12409    ///     </ul>
12410    ///   
12411    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
12412}
12413#[allow(deprecated)]
12414
12415impl<'life> Figure<'life> {
12416    /// Get the tag name of the element.
12417    /// This is the same as the name of the struct, in kebab-case.
12418    pub fn tag() -> &'static str {
12419        "figure"
12420    }
12421    /// Sets an attribute of the element.
12422    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
12423    /// If the `alloc` feature is disabled, this function will silently fail.
12424    ///
12425    /// # Note
12426    /// This only works when the attribute is lowercase.
12427    pub fn set_attr(
12428        &mut self,
12429        name: &'life str,
12430        value: impl core::convert::Into<AttributeValue<'life>>,
12431    ) {
12432        match name {
12433            "accesskey" => self.accesskey = Some(value.into()),
12434            "autocapitalize" => self.autocapitalize = Some(value.into()),
12435            "autofocus" => self.autofocus = Some(value.into()),
12436            "class" => self.class = Some(value.into()),
12437            "contenteditable" => self.contenteditable = Some(value.into()),
12438            "contextmenu" => self.contextmenu = Some(value.into()),
12439            "dir" => self.dir = Some(value.into()),
12440            "draggable" => self.draggable = Some(value.into()),
12441            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
12442            "exportparts" => self.exportparts = Some(value.into()),
12443            "hidden" => self.hidden = Some(value.into()),
12444            "id" => self.id = Some(value.into()),
12445            "inert" => self.inert = Some(value.into()),
12446            "inputmode" => self.inputmode = Some(value.into()),
12447            "is" => self.is = Some(value.into()),
12448            "itemid" => self.itemid = Some(value.into()),
12449            "itemprop" => self.itemprop = Some(value.into()),
12450            "itemref" => self.itemref = Some(value.into()),
12451            "itemscope" => self.itemscope = Some(value.into()),
12452            "itemtype" => self.itemtype = Some(value.into()),
12453            "lang" => self.lang = Some(value.into()),
12454            "nonce" => self.nonce = Some(value.into()),
12455            "part" => self.part = Some(value.into()),
12456            "popover" => self.popover = Some(value.into()),
12457            "role" => self.role = Some(value.into()),
12458            "slot" => self.slot = Some(value.into()),
12459            "spellcheck" => self.spellcheck = Some(value.into()),
12460            "style" => self.style = Some(value.into()),
12461            "tabindex" => self.tabindex = Some(value.into()),
12462            "title" => self.title = Some(value.into()),
12463            "translate" => self.translate = Some(value.into()),
12464            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
12465            #[cfg(feature = "alloc")]
12466            _ => {
12467                #[allow(clippy::useless_conversion)]
12468                self.extra.insert(name.into(), value.into());
12469            }
12470            #[cfg(not(feature = "alloc"))]
12471            _ => {}
12472        }
12473    }
12474}
12475/// The <strong><code>&lt;figure&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents self-contained content, potentially with an optional caption, which is specified using the <a href="/en-US/docs/Web/HTML/Element/figcaption"><code>&lt;figcaption&gt;</code></a> element. The figure, its caption, and its contents are referenced as a single unit.
12476///
12477/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/figure>
12478
12479#[cfg(feature = "alloc")]
12480#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
12481pub struct FigureOwned {
12482    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
12483    ///   
12484    pub accesskey: core::option::Option<AttributeValueOwned>,
12485    ///
12486    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
12487    ///     <ul>
12488    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
12489    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
12490    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
12491    ///       <li><code>characters</code>, all letters should default to uppercase</li>
12492    ///     </ul>
12493    ///   
12494    pub autocapitalize: core::option::Option<AttributeValueOwned>,
12495    ///
12496    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
12497    ///   
12498    pub autofocus: core::option::Option<AttributeValueOwned>,
12499    ///
12500    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
12501    ///   
12502    pub class: core::option::Option<AttributeValueOwned>,
12503    ///
12504    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
12505    ///     <ul>
12506    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
12507    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
12508    ///     </ul>
12509    ///   
12510    pub contenteditable: core::option::Option<AttributeValueOwned>,
12511    ///
12512    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
12513    ///   
12514    pub contextmenu: core::option::Option<AttributeValueOwned>,
12515    ///
12516    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
12517    ///   
12518    #[cfg(feature = "alloc")]
12519    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
12520    ///
12521    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
12522    ///     <ul>
12523    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
12524    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
12525    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
12526    ///     </ul>
12527    ///   
12528    pub dir: core::option::Option<AttributeValueOwned>,
12529    ///
12530    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
12531    ///     <ul>
12532    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
12533    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
12534    ///     </ul>
12535    ///   
12536    pub draggable: core::option::Option<AttributeValueOwned>,
12537    ///
12538    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
12539    ///   
12540    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
12541    ///
12542    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
12543    ///   
12544    pub exportparts: core::option::Option<AttributeValueOwned>,
12545    /// /// Extra attributes of the element.
12546
12547    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
12548    #[cfg(feature = "alloc")]
12549    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
12550    ///
12551    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
12552    ///   
12553    pub hidden: core::option::Option<AttributeValueOwned>,
12554    ///
12555    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
12556    ///   
12557    pub id: core::option::Option<AttributeValueOwned>,
12558    ///
12559    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
12560    ///   
12561    pub inert: core::option::Option<AttributeValueOwned>,
12562    ///
12563    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
12564    ///   
12565    pub inputmode: core::option::Option<AttributeValueOwned>,
12566    ///
12567    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
12568    ///   
12569    pub is: core::option::Option<AttributeValueOwned>,
12570    ///
12571    ///     <p>The unique, global identifier of an item.</p>
12572    ///   
12573    pub itemid: core::option::Option<AttributeValueOwned>,
12574    ///
12575    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
12576    ///   
12577    pub itemprop: core::option::Option<AttributeValueOwned>,
12578    ///
12579    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
12580    ///   
12581    pub itemref: core::option::Option<AttributeValueOwned>,
12582    ///
12583    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
12584    ///   
12585    pub itemscope: core::option::Option<AttributeValueOwned>,
12586    ///
12587    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
12588    ///   
12589    pub itemtype: core::option::Option<AttributeValueOwned>,
12590    ///
12591    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
12592    ///   
12593    pub lang: core::option::Option<AttributeValueOwned>,
12594    ///
12595    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
12596    ///   
12597    pub nonce: core::option::Option<AttributeValueOwned>,
12598    ///
12599    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
12600    ///   
12601    pub part: core::option::Option<AttributeValueOwned>,
12602    ///
12603    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
12604    ///   
12605    pub popover: core::option::Option<AttributeValueOwned>,
12606    ///
12607    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
12608    ///   
12609    pub role: core::option::Option<AttributeValueOwned>,
12610    ///
12611    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
12612    ///   
12613    pub slot: core::option::Option<AttributeValueOwned>,
12614    ///
12615    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
12616    ///     <ul>
12617    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
12618    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
12619    ///     </ul>
12620    ///   
12621    pub spellcheck: core::option::Option<AttributeValueOwned>,
12622    ///
12623    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
12624    ///   
12625    pub style: core::option::Option<AttributeValueOwned>,
12626    ///
12627    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
12628    ///     <ul>
12629    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
12630    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
12631    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
12632    ///     </ul>
12633    ///   
12634    pub tabindex: core::option::Option<AttributeValueOwned>,
12635    ///
12636    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
12637    ///   
12638    pub title: core::option::Option<AttributeValueOwned>,
12639    ///
12640    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
12641    ///     <ul>
12642    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
12643    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
12644    ///     </ul>
12645    ///   
12646    pub translate: core::option::Option<AttributeValueOwned>,
12647    ///
12648    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
12649    ///     <ul>
12650    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
12651    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
12652    ///     </ul>
12653    ///   
12654    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
12655}
12656#[allow(deprecated)]
12657#[cfg(feature = "alloc")]
12658impl FigureOwned {
12659    /// Get the tag name of the element.
12660    /// This is the same as the name of the struct, in kebab-case.
12661    pub fn tag() -> &'static str {
12662        "figure"
12663    }
12664    /// Sets an attribute of the element.
12665    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
12666    /// If the `alloc` feature is disabled, this function will silently fail.
12667    ///
12668    /// # Note
12669    /// This only works when the attribute is lowercase.
12670    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
12671        match name {
12672            "accesskey" => self.accesskey = Some(value.into()),
12673            "autocapitalize" => self.autocapitalize = Some(value.into()),
12674            "autofocus" => self.autofocus = Some(value.into()),
12675            "class" => self.class = Some(value.into()),
12676            "contenteditable" => self.contenteditable = Some(value.into()),
12677            "contextmenu" => self.contextmenu = Some(value.into()),
12678            "dir" => self.dir = Some(value.into()),
12679            "draggable" => self.draggable = Some(value.into()),
12680            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
12681            "exportparts" => self.exportparts = Some(value.into()),
12682            "hidden" => self.hidden = Some(value.into()),
12683            "id" => self.id = Some(value.into()),
12684            "inert" => self.inert = Some(value.into()),
12685            "inputmode" => self.inputmode = Some(value.into()),
12686            "is" => self.is = Some(value.into()),
12687            "itemid" => self.itemid = Some(value.into()),
12688            "itemprop" => self.itemprop = Some(value.into()),
12689            "itemref" => self.itemref = Some(value.into()),
12690            "itemscope" => self.itemscope = Some(value.into()),
12691            "itemtype" => self.itemtype = Some(value.into()),
12692            "lang" => self.lang = Some(value.into()),
12693            "nonce" => self.nonce = Some(value.into()),
12694            "part" => self.part = Some(value.into()),
12695            "popover" => self.popover = Some(value.into()),
12696            "role" => self.role = Some(value.into()),
12697            "slot" => self.slot = Some(value.into()),
12698            "spellcheck" => self.spellcheck = Some(value.into()),
12699            "style" => self.style = Some(value.into()),
12700            "tabindex" => self.tabindex = Some(value.into()),
12701            "title" => self.title = Some(value.into()),
12702            "translate" => self.translate = Some(value.into()),
12703            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
12704            #[cfg(feature = "alloc")]
12705            _ => {
12706                #[allow(clippy::useless_conversion)]
12707                self.extra.insert(name.into(), value.into());
12708            }
12709            #[cfg(not(feature = "alloc"))]
12710            _ => {}
12711        }
12712    }
12713}
12714/// The <strong><code>&lt;hr&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> 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.
12715///
12716/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/hr>
12717
12718#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
12719pub struct Hr<'life> {
12720    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
12721    ///   
12722    pub accesskey: core::option::Option<AttributeValue<'life>>,
12723    ///
12724    ///     <p>Sets the alignment of the rule on the page. If no value is specified, the default value is <code>left</code>.</p>
12725    ///   
12726    pub align: core::option::Option<AttributeValue<'life>>,
12727    ///
12728    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
12729    ///     <ul>
12730    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
12731    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
12732    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
12733    ///       <li><code>characters</code>, all letters should default to uppercase</li>
12734    ///     </ul>
12735    ///   
12736    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
12737    ///
12738    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
12739    ///   
12740    pub autofocus: core::option::Option<AttributeValue<'life>>,
12741    ///
12742    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
12743    ///   
12744    pub class: core::option::Option<AttributeValue<'life>>,
12745    ///
12746    ///     <p>Sets the color of the rule through color name or hexadecimal value.</p>
12747    ///   
12748    pub color: core::option::Option<AttributeValue<'life>>,
12749    ///
12750    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
12751    ///     <ul>
12752    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
12753    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
12754    ///     </ul>
12755    ///   
12756    pub contenteditable: core::option::Option<AttributeValue<'life>>,
12757    ///
12758    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
12759    ///   
12760    pub contextmenu: core::option::Option<AttributeValue<'life>>,
12761    ///
12762    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
12763    ///   
12764    #[cfg(feature = "alloc")]
12765    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
12766    ///
12767    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
12768    ///     <ul>
12769    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
12770    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
12771    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
12772    ///     </ul>
12773    ///   
12774    pub dir: core::option::Option<AttributeValue<'life>>,
12775    ///
12776    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
12777    ///     <ul>
12778    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
12779    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
12780    ///     </ul>
12781    ///   
12782    pub draggable: core::option::Option<AttributeValue<'life>>,
12783    ///
12784    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
12785    ///   
12786    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
12787    ///
12788    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
12789    ///   
12790    pub exportparts: core::option::Option<AttributeValue<'life>>,
12791    /// /// Extra attributes of the element.
12792
12793    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
12794    #[cfg(feature = "alloc")]
12795    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
12796    ///
12797    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
12798    ///   
12799    pub hidden: core::option::Option<AttributeValue<'life>>,
12800    ///
12801    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
12802    ///   
12803    pub id: core::option::Option<AttributeValue<'life>>,
12804    ///
12805    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
12806    ///   
12807    pub inert: core::option::Option<AttributeValue<'life>>,
12808    ///
12809    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
12810    ///   
12811    pub inputmode: core::option::Option<AttributeValue<'life>>,
12812    ///
12813    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
12814    ///   
12815    pub is: core::option::Option<AttributeValue<'life>>,
12816    ///
12817    ///     <p>The unique, global identifier of an item.</p>
12818    ///   
12819    pub itemid: core::option::Option<AttributeValue<'life>>,
12820    ///
12821    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
12822    ///   
12823    pub itemprop: core::option::Option<AttributeValue<'life>>,
12824    ///
12825    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
12826    ///   
12827    pub itemref: core::option::Option<AttributeValue<'life>>,
12828    ///
12829    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
12830    ///   
12831    pub itemscope: core::option::Option<AttributeValue<'life>>,
12832    ///
12833    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
12834    ///   
12835    pub itemtype: core::option::Option<AttributeValue<'life>>,
12836    ///
12837    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
12838    ///   
12839    pub lang: core::option::Option<AttributeValue<'life>>,
12840    ///
12841    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
12842    ///   
12843    pub nonce: core::option::Option<AttributeValue<'life>>,
12844    ///
12845    ///     <p>Sets the rule to have no shading.</p>
12846    ///   
12847    pub noshade: core::option::Option<AttributeValue<'life>>,
12848    ///
12849    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
12850    ///   
12851    pub part: core::option::Option<AttributeValue<'life>>,
12852    ///
12853    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
12854    ///   
12855    pub popover: core::option::Option<AttributeValue<'life>>,
12856    ///
12857    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
12858    ///   
12859    pub role: core::option::Option<AttributeValue<'life>>,
12860    ///
12861    ///     <p>Sets the height, in pixels, of the rule.</p>
12862    ///   
12863    pub size: core::option::Option<AttributeValue<'life>>,
12864    ///
12865    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
12866    ///   
12867    pub slot: core::option::Option<AttributeValue<'life>>,
12868    ///
12869    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
12870    ///     <ul>
12871    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
12872    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
12873    ///     </ul>
12874    ///   
12875    pub spellcheck: core::option::Option<AttributeValue<'life>>,
12876    ///
12877    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
12878    ///   
12879    pub style: core::option::Option<AttributeValue<'life>>,
12880    ///
12881    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
12882    ///     <ul>
12883    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
12884    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
12885    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
12886    ///     </ul>
12887    ///   
12888    pub tabindex: core::option::Option<AttributeValue<'life>>,
12889    ///
12890    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
12891    ///   
12892    pub title: core::option::Option<AttributeValue<'life>>,
12893    ///
12894    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
12895    ///     <ul>
12896    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
12897    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
12898    ///     </ul>
12899    ///   
12900    pub translate: core::option::Option<AttributeValue<'life>>,
12901    ///
12902    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
12903    ///     <ul>
12904    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
12905    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
12906    ///     </ul>
12907    ///   
12908    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
12909    ///
12910    ///     <p>Sets the length of the rule on the page through a pixel or percentage value.</p>
12911    ///   
12912    pub width: core::option::Option<AttributeValue<'life>>,
12913}
12914#[allow(deprecated)]
12915
12916impl<'life> Hr<'life> {
12917    /// Get the tag name of the element.
12918    /// This is the same as the name of the struct, in kebab-case.
12919    pub fn tag() -> &'static str {
12920        "hr"
12921    }
12922    /// Sets an attribute of the element.
12923    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
12924    /// If the `alloc` feature is disabled, this function will silently fail.
12925    ///
12926    /// # Note
12927    /// This only works when the attribute is lowercase.
12928    pub fn set_attr(
12929        &mut self,
12930        name: &'life str,
12931        value: impl core::convert::Into<AttributeValue<'life>>,
12932    ) {
12933        match name {
12934            "accesskey" => self.accesskey = Some(value.into()),
12935            "align" => self.align = Some(value.into()),
12936            "autocapitalize" => self.autocapitalize = Some(value.into()),
12937            "autofocus" => self.autofocus = Some(value.into()),
12938            "class" => self.class = Some(value.into()),
12939            "color" => self.color = Some(value.into()),
12940            "contenteditable" => self.contenteditable = Some(value.into()),
12941            "contextmenu" => self.contextmenu = Some(value.into()),
12942            "dir" => self.dir = Some(value.into()),
12943            "draggable" => self.draggable = Some(value.into()),
12944            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
12945            "exportparts" => self.exportparts = Some(value.into()),
12946            "hidden" => self.hidden = Some(value.into()),
12947            "id" => self.id = Some(value.into()),
12948            "inert" => self.inert = Some(value.into()),
12949            "inputmode" => self.inputmode = Some(value.into()),
12950            "is" => self.is = Some(value.into()),
12951            "itemid" => self.itemid = Some(value.into()),
12952            "itemprop" => self.itemprop = Some(value.into()),
12953            "itemref" => self.itemref = Some(value.into()),
12954            "itemscope" => self.itemscope = Some(value.into()),
12955            "itemtype" => self.itemtype = Some(value.into()),
12956            "lang" => self.lang = Some(value.into()),
12957            "nonce" => self.nonce = Some(value.into()),
12958            "noshade" => self.noshade = Some(value.into()),
12959            "part" => self.part = Some(value.into()),
12960            "popover" => self.popover = Some(value.into()),
12961            "role" => self.role = Some(value.into()),
12962            "size" => self.size = Some(value.into()),
12963            "slot" => self.slot = Some(value.into()),
12964            "spellcheck" => self.spellcheck = Some(value.into()),
12965            "style" => self.style = Some(value.into()),
12966            "tabindex" => self.tabindex = Some(value.into()),
12967            "title" => self.title = Some(value.into()),
12968            "translate" => self.translate = Some(value.into()),
12969            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
12970            "width" => self.width = Some(value.into()),
12971            #[cfg(feature = "alloc")]
12972            _ => {
12973                #[allow(clippy::useless_conversion)]
12974                self.extra.insert(name.into(), value.into());
12975            }
12976            #[cfg(not(feature = "alloc"))]
12977            _ => {}
12978        }
12979    }
12980}
12981/// The <strong><code>&lt;hr&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> 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.
12982///
12983/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/hr>
12984
12985#[cfg(feature = "alloc")]
12986#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
12987pub struct HrOwned {
12988    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
12989    ///   
12990    pub accesskey: core::option::Option<AttributeValueOwned>,
12991    ///
12992    ///     <p>Sets the alignment of the rule on the page. If no value is specified, the default value is <code>left</code>.</p>
12993    ///   
12994    pub align: core::option::Option<AttributeValueOwned>,
12995    ///
12996    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
12997    ///     <ul>
12998    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
12999    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
13000    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
13001    ///       <li><code>characters</code>, all letters should default to uppercase</li>
13002    ///     </ul>
13003    ///   
13004    pub autocapitalize: core::option::Option<AttributeValueOwned>,
13005    ///
13006    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
13007    ///   
13008    pub autofocus: core::option::Option<AttributeValueOwned>,
13009    ///
13010    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
13011    ///   
13012    pub class: core::option::Option<AttributeValueOwned>,
13013    ///
13014    ///     <p>Sets the color of the rule through color name or hexadecimal value.</p>
13015    ///   
13016    pub color: core::option::Option<AttributeValueOwned>,
13017    ///
13018    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
13019    ///     <ul>
13020    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
13021    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
13022    ///     </ul>
13023    ///   
13024    pub contenteditable: core::option::Option<AttributeValueOwned>,
13025    ///
13026    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
13027    ///   
13028    pub contextmenu: core::option::Option<AttributeValueOwned>,
13029    ///
13030    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
13031    ///   
13032    #[cfg(feature = "alloc")]
13033    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
13034    ///
13035    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
13036    ///     <ul>
13037    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
13038    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
13039    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
13040    ///     </ul>
13041    ///   
13042    pub dir: core::option::Option<AttributeValueOwned>,
13043    ///
13044    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
13045    ///     <ul>
13046    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
13047    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
13048    ///     </ul>
13049    ///   
13050    pub draggable: core::option::Option<AttributeValueOwned>,
13051    ///
13052    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
13053    ///   
13054    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
13055    ///
13056    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
13057    ///   
13058    pub exportparts: core::option::Option<AttributeValueOwned>,
13059    /// /// Extra attributes of the element.
13060
13061    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
13062    #[cfg(feature = "alloc")]
13063    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
13064    ///
13065    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
13066    ///   
13067    pub hidden: core::option::Option<AttributeValueOwned>,
13068    ///
13069    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
13070    ///   
13071    pub id: core::option::Option<AttributeValueOwned>,
13072    ///
13073    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
13074    ///   
13075    pub inert: core::option::Option<AttributeValueOwned>,
13076    ///
13077    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
13078    ///   
13079    pub inputmode: core::option::Option<AttributeValueOwned>,
13080    ///
13081    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
13082    ///   
13083    pub is: core::option::Option<AttributeValueOwned>,
13084    ///
13085    ///     <p>The unique, global identifier of an item.</p>
13086    ///   
13087    pub itemid: core::option::Option<AttributeValueOwned>,
13088    ///
13089    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
13090    ///   
13091    pub itemprop: core::option::Option<AttributeValueOwned>,
13092    ///
13093    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
13094    ///   
13095    pub itemref: core::option::Option<AttributeValueOwned>,
13096    ///
13097    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
13098    ///   
13099    pub itemscope: core::option::Option<AttributeValueOwned>,
13100    ///
13101    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
13102    ///   
13103    pub itemtype: core::option::Option<AttributeValueOwned>,
13104    ///
13105    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
13106    ///   
13107    pub lang: core::option::Option<AttributeValueOwned>,
13108    ///
13109    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
13110    ///   
13111    pub nonce: core::option::Option<AttributeValueOwned>,
13112    ///
13113    ///     <p>Sets the rule to have no shading.</p>
13114    ///   
13115    pub noshade: core::option::Option<AttributeValueOwned>,
13116    ///
13117    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
13118    ///   
13119    pub part: core::option::Option<AttributeValueOwned>,
13120    ///
13121    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
13122    ///   
13123    pub popover: core::option::Option<AttributeValueOwned>,
13124    ///
13125    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
13126    ///   
13127    pub role: core::option::Option<AttributeValueOwned>,
13128    ///
13129    ///     <p>Sets the height, in pixels, of the rule.</p>
13130    ///   
13131    pub size: core::option::Option<AttributeValueOwned>,
13132    ///
13133    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
13134    ///   
13135    pub slot: core::option::Option<AttributeValueOwned>,
13136    ///
13137    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
13138    ///     <ul>
13139    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
13140    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
13141    ///     </ul>
13142    ///   
13143    pub spellcheck: core::option::Option<AttributeValueOwned>,
13144    ///
13145    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
13146    ///   
13147    pub style: core::option::Option<AttributeValueOwned>,
13148    ///
13149    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
13150    ///     <ul>
13151    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
13152    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
13153    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
13154    ///     </ul>
13155    ///   
13156    pub tabindex: core::option::Option<AttributeValueOwned>,
13157    ///
13158    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
13159    ///   
13160    pub title: core::option::Option<AttributeValueOwned>,
13161    ///
13162    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
13163    ///     <ul>
13164    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
13165    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
13166    ///     </ul>
13167    ///   
13168    pub translate: core::option::Option<AttributeValueOwned>,
13169    ///
13170    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
13171    ///     <ul>
13172    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
13173    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
13174    ///     </ul>
13175    ///   
13176    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
13177    ///
13178    ///     <p>Sets the length of the rule on the page through a pixel or percentage value.</p>
13179    ///   
13180    pub width: core::option::Option<AttributeValueOwned>,
13181}
13182#[allow(deprecated)]
13183#[cfg(feature = "alloc")]
13184impl HrOwned {
13185    /// Get the tag name of the element.
13186    /// This is the same as the name of the struct, in kebab-case.
13187    pub fn tag() -> &'static str {
13188        "hr"
13189    }
13190    /// Sets an attribute of the element.
13191    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
13192    /// If the `alloc` feature is disabled, this function will silently fail.
13193    ///
13194    /// # Note
13195    /// This only works when the attribute is lowercase.
13196    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
13197        match name {
13198            "accesskey" => self.accesskey = Some(value.into()),
13199            "align" => self.align = Some(value.into()),
13200            "autocapitalize" => self.autocapitalize = Some(value.into()),
13201            "autofocus" => self.autofocus = Some(value.into()),
13202            "class" => self.class = Some(value.into()),
13203            "color" => self.color = Some(value.into()),
13204            "contenteditable" => self.contenteditable = Some(value.into()),
13205            "contextmenu" => self.contextmenu = Some(value.into()),
13206            "dir" => self.dir = Some(value.into()),
13207            "draggable" => self.draggable = Some(value.into()),
13208            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
13209            "exportparts" => self.exportparts = Some(value.into()),
13210            "hidden" => self.hidden = Some(value.into()),
13211            "id" => self.id = Some(value.into()),
13212            "inert" => self.inert = Some(value.into()),
13213            "inputmode" => self.inputmode = Some(value.into()),
13214            "is" => self.is = Some(value.into()),
13215            "itemid" => self.itemid = Some(value.into()),
13216            "itemprop" => self.itemprop = Some(value.into()),
13217            "itemref" => self.itemref = Some(value.into()),
13218            "itemscope" => self.itemscope = Some(value.into()),
13219            "itemtype" => self.itemtype = Some(value.into()),
13220            "lang" => self.lang = Some(value.into()),
13221            "nonce" => self.nonce = Some(value.into()),
13222            "noshade" => self.noshade = Some(value.into()),
13223            "part" => self.part = Some(value.into()),
13224            "popover" => self.popover = Some(value.into()),
13225            "role" => self.role = Some(value.into()),
13226            "size" => self.size = Some(value.into()),
13227            "slot" => self.slot = Some(value.into()),
13228            "spellcheck" => self.spellcheck = Some(value.into()),
13229            "style" => self.style = Some(value.into()),
13230            "tabindex" => self.tabindex = Some(value.into()),
13231            "title" => self.title = Some(value.into()),
13232            "translate" => self.translate = Some(value.into()),
13233            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
13234            "width" => self.width = Some(value.into()),
13235            #[cfg(feature = "alloc")]
13236            _ => {
13237                #[allow(clippy::useless_conversion)]
13238                self.extra.insert(name.into(), value.into());
13239            }
13240            #[cfg(not(feature = "alloc"))]
13241            _ => {}
13242        }
13243    }
13244}
13245/// The <strong><code>&lt;li&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element is used to represent an item in a list. It must be contained in a parent element: an ordered list (<a href="/en-US/docs/Web/HTML/Element/ol"><code>&lt;ol&gt;</code></a>), an unordered list (<a href="/en-US/docs/Web/HTML/Element/ul"><code>&lt;ul&gt;</code></a>), or a menu (<a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a>). In menus and unordered lists, list items are usually displayed using bullet points. In ordered lists, they are usually displayed with an ascending counter on the left, such as a number or letter.
13246///
13247/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/li>
13248
13249#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
13250pub struct Li<'life> {
13251    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
13252    ///   
13253    pub accesskey: core::option::Option<AttributeValue<'life>>,
13254    ///
13255    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
13256    ///     <ul>
13257    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
13258    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
13259    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
13260    ///       <li><code>characters</code>, all letters should default to uppercase</li>
13261    ///     </ul>
13262    ///   
13263    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
13264    ///
13265    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
13266    ///   
13267    pub autofocus: core::option::Option<AttributeValue<'life>>,
13268    ///
13269    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
13270    ///   
13271    pub class: core::option::Option<AttributeValue<'life>>,
13272    ///
13273    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
13274    ///     <ul>
13275    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
13276    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
13277    ///     </ul>
13278    ///   
13279    pub contenteditable: core::option::Option<AttributeValue<'life>>,
13280    ///
13281    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
13282    ///   
13283    pub contextmenu: core::option::Option<AttributeValue<'life>>,
13284    ///
13285    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
13286    ///   
13287    #[cfg(feature = "alloc")]
13288    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
13289    ///
13290    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
13291    ///     <ul>
13292    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
13293    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
13294    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
13295    ///     </ul>
13296    ///   
13297    pub dir: core::option::Option<AttributeValue<'life>>,
13298    ///
13299    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
13300    ///     <ul>
13301    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
13302    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
13303    ///     </ul>
13304    ///   
13305    pub draggable: core::option::Option<AttributeValue<'life>>,
13306    ///
13307    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
13308    ///   
13309    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
13310    ///
13311    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
13312    ///   
13313    pub exportparts: core::option::Option<AttributeValue<'life>>,
13314    /// /// Extra attributes of the element.
13315
13316    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
13317    #[cfg(feature = "alloc")]
13318    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
13319    ///
13320    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
13321    ///   
13322    pub hidden: core::option::Option<AttributeValue<'life>>,
13323    ///
13324    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
13325    ///   
13326    pub id: core::option::Option<AttributeValue<'life>>,
13327    ///
13328    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
13329    ///   
13330    pub inert: core::option::Option<AttributeValue<'life>>,
13331    ///
13332    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
13333    ///   
13334    pub inputmode: core::option::Option<AttributeValue<'life>>,
13335    ///
13336    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
13337    ///   
13338    pub is: core::option::Option<AttributeValue<'life>>,
13339    ///
13340    ///     <p>The unique, global identifier of an item.</p>
13341    ///   
13342    pub itemid: core::option::Option<AttributeValue<'life>>,
13343    ///
13344    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
13345    ///   
13346    pub itemprop: core::option::Option<AttributeValue<'life>>,
13347    ///
13348    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
13349    ///   
13350    pub itemref: core::option::Option<AttributeValue<'life>>,
13351    ///
13352    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
13353    ///   
13354    pub itemscope: core::option::Option<AttributeValue<'life>>,
13355    ///
13356    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
13357    ///   
13358    pub itemtype: core::option::Option<AttributeValue<'life>>,
13359    ///
13360    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
13361    ///   
13362    pub lang: core::option::Option<AttributeValue<'life>>,
13363    ///
13364    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
13365    ///   
13366    pub nonce: core::option::Option<AttributeValue<'life>>,
13367    ///
13368    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
13369    ///   
13370    pub part: core::option::Option<AttributeValue<'life>>,
13371    ///
13372    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
13373    ///   
13374    pub popover: core::option::Option<AttributeValue<'life>>,
13375    ///
13376    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
13377    ///   
13378    pub role: core::option::Option<AttributeValue<'life>>,
13379    ///
13380    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
13381    ///   
13382    pub slot: core::option::Option<AttributeValue<'life>>,
13383    ///
13384    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
13385    ///     <ul>
13386    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
13387    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
13388    ///     </ul>
13389    ///   
13390    pub spellcheck: core::option::Option<AttributeValue<'life>>,
13391    ///
13392    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
13393    ///   
13394    pub style: core::option::Option<AttributeValue<'life>>,
13395    ///
13396    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
13397    ///     <ul>
13398    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
13399    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
13400    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
13401    ///     </ul>
13402    ///   
13403    pub tabindex: core::option::Option<AttributeValue<'life>>,
13404    ///
13405    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
13406    ///   
13407    pub title: core::option::Option<AttributeValue<'life>>,
13408    ///
13409    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
13410    ///     <ul>
13411    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
13412    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
13413    ///     </ul>
13414    ///   
13415    pub translate: core::option::Option<AttributeValue<'life>>,
13416    ///
13417    ///     <p>This character attribute indicates the numbering type:</p>
13418    ///     <ul>
13419    ///       <li><code>a</code>: lowercase letters</li>
13420    ///       <li><code>A</code>: uppercase letters</li>
13421    ///       <li><code>i</code>: lowercase Roman numerals</li>
13422    ///       <li><code>I</code>: uppercase Roman numerals</li>
13423    ///       <li><code>1</code>: numbers</li>
13424    ///     </ul>
13425    ///     <p>This type overrides the one used by its parent <a href="/en-US/docs/Web/HTML/Element/ol"><code>&lt;ol&gt;</code></a> element, if any.</p>
13426    ///     <div id="sect1" class="notecard note">
13427    ///       <p><strong>Note:</strong> This attribute has been deprecated; use the CSS <a href="/en-US/docs/Web/CSS/list-style-type"><code>list-style-type</code></a> property instead.</p>
13428    ///     </div>
13429    ///   
13430    pub type_: core::option::Option<AttributeValue<'life>>,
13431    ///
13432    ///     <p>This integer attribute indicates the current ordinal value of the list item as defined by the <a href="/en-US/docs/Web/HTML/Element/ol"><code>&lt;ol&gt;</code></a> element. The only allowed value for this attribute is a number, even if the list is displayed with Roman numerals or letters. List items that follow this one continue numbering from the value set. The <strong>value</strong> attribute has no meaning for unordered lists (<a href="/en-US/docs/Web/HTML/Element/ul"><code>&lt;ul&gt;</code></a>) or for menus (<a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a>).</p>
13433    ///   
13434    pub value: core::option::Option<AttributeValue<'life>>,
13435    ///
13436    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
13437    ///     <ul>
13438    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
13439    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
13440    ///     </ul>
13441    ///   
13442    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
13443}
13444#[allow(deprecated)]
13445
13446impl<'life> Li<'life> {
13447    /// Get the tag name of the element.
13448    /// This is the same as the name of the struct, in kebab-case.
13449    pub fn tag() -> &'static str {
13450        "li"
13451    }
13452    /// Sets an attribute of the element.
13453    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
13454    /// If the `alloc` feature is disabled, this function will silently fail.
13455    ///
13456    /// # Note
13457    /// This only works when the attribute is lowercase.
13458    pub fn set_attr(
13459        &mut self,
13460        name: &'life str,
13461        value: impl core::convert::Into<AttributeValue<'life>>,
13462    ) {
13463        match name {
13464            "accesskey" => self.accesskey = Some(value.into()),
13465            "autocapitalize" => self.autocapitalize = Some(value.into()),
13466            "autofocus" => self.autofocus = Some(value.into()),
13467            "class" => self.class = Some(value.into()),
13468            "contenteditable" => self.contenteditable = Some(value.into()),
13469            "contextmenu" => self.contextmenu = Some(value.into()),
13470            "dir" => self.dir = Some(value.into()),
13471            "draggable" => self.draggable = Some(value.into()),
13472            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
13473            "exportparts" => self.exportparts = Some(value.into()),
13474            "hidden" => self.hidden = Some(value.into()),
13475            "id" => self.id = Some(value.into()),
13476            "inert" => self.inert = Some(value.into()),
13477            "inputmode" => self.inputmode = Some(value.into()),
13478            "is" => self.is = Some(value.into()),
13479            "itemid" => self.itemid = Some(value.into()),
13480            "itemprop" => self.itemprop = Some(value.into()),
13481            "itemref" => self.itemref = Some(value.into()),
13482            "itemscope" => self.itemscope = Some(value.into()),
13483            "itemtype" => self.itemtype = Some(value.into()),
13484            "lang" => self.lang = Some(value.into()),
13485            "nonce" => self.nonce = Some(value.into()),
13486            "part" => self.part = Some(value.into()),
13487            "popover" => self.popover = Some(value.into()),
13488            "role" => self.role = Some(value.into()),
13489            "slot" => self.slot = Some(value.into()),
13490            "spellcheck" => self.spellcheck = Some(value.into()),
13491            "style" => self.style = Some(value.into()),
13492            "tabindex" => self.tabindex = Some(value.into()),
13493            "title" => self.title = Some(value.into()),
13494            "translate" => self.translate = Some(value.into()),
13495            "type_" => self.type_ = Some(value.into()),
13496            "value" => self.value = Some(value.into()),
13497            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
13498            #[cfg(feature = "alloc")]
13499            _ => {
13500                #[allow(clippy::useless_conversion)]
13501                self.extra.insert(name.into(), value.into());
13502            }
13503            #[cfg(not(feature = "alloc"))]
13504            _ => {}
13505        }
13506    }
13507}
13508/// The <strong><code>&lt;li&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element is used to represent an item in a list. It must be contained in a parent element: an ordered list (<a href="/en-US/docs/Web/HTML/Element/ol"><code>&lt;ol&gt;</code></a>), an unordered list (<a href="/en-US/docs/Web/HTML/Element/ul"><code>&lt;ul&gt;</code></a>), or a menu (<a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a>). In menus and unordered lists, list items are usually displayed using bullet points. In ordered lists, they are usually displayed with an ascending counter on the left, such as a number or letter.
13509///
13510/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/li>
13511
13512#[cfg(feature = "alloc")]
13513#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
13514pub struct LiOwned {
13515    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
13516    ///   
13517    pub accesskey: core::option::Option<AttributeValueOwned>,
13518    ///
13519    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
13520    ///     <ul>
13521    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
13522    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
13523    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
13524    ///       <li><code>characters</code>, all letters should default to uppercase</li>
13525    ///     </ul>
13526    ///   
13527    pub autocapitalize: core::option::Option<AttributeValueOwned>,
13528    ///
13529    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
13530    ///   
13531    pub autofocus: core::option::Option<AttributeValueOwned>,
13532    ///
13533    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
13534    ///   
13535    pub class: core::option::Option<AttributeValueOwned>,
13536    ///
13537    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
13538    ///     <ul>
13539    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
13540    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
13541    ///     </ul>
13542    ///   
13543    pub contenteditable: core::option::Option<AttributeValueOwned>,
13544    ///
13545    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
13546    ///   
13547    pub contextmenu: core::option::Option<AttributeValueOwned>,
13548    ///
13549    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
13550    ///   
13551    #[cfg(feature = "alloc")]
13552    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
13553    ///
13554    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
13555    ///     <ul>
13556    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
13557    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
13558    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
13559    ///     </ul>
13560    ///   
13561    pub dir: core::option::Option<AttributeValueOwned>,
13562    ///
13563    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
13564    ///     <ul>
13565    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
13566    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
13567    ///     </ul>
13568    ///   
13569    pub draggable: core::option::Option<AttributeValueOwned>,
13570    ///
13571    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
13572    ///   
13573    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
13574    ///
13575    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
13576    ///   
13577    pub exportparts: core::option::Option<AttributeValueOwned>,
13578    /// /// Extra attributes of the element.
13579
13580    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
13581    #[cfg(feature = "alloc")]
13582    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
13583    ///
13584    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
13585    ///   
13586    pub hidden: core::option::Option<AttributeValueOwned>,
13587    ///
13588    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
13589    ///   
13590    pub id: core::option::Option<AttributeValueOwned>,
13591    ///
13592    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
13593    ///   
13594    pub inert: core::option::Option<AttributeValueOwned>,
13595    ///
13596    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
13597    ///   
13598    pub inputmode: core::option::Option<AttributeValueOwned>,
13599    ///
13600    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
13601    ///   
13602    pub is: core::option::Option<AttributeValueOwned>,
13603    ///
13604    ///     <p>The unique, global identifier of an item.</p>
13605    ///   
13606    pub itemid: core::option::Option<AttributeValueOwned>,
13607    ///
13608    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
13609    ///   
13610    pub itemprop: core::option::Option<AttributeValueOwned>,
13611    ///
13612    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
13613    ///   
13614    pub itemref: core::option::Option<AttributeValueOwned>,
13615    ///
13616    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
13617    ///   
13618    pub itemscope: core::option::Option<AttributeValueOwned>,
13619    ///
13620    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
13621    ///   
13622    pub itemtype: core::option::Option<AttributeValueOwned>,
13623    ///
13624    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
13625    ///   
13626    pub lang: core::option::Option<AttributeValueOwned>,
13627    ///
13628    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
13629    ///   
13630    pub nonce: core::option::Option<AttributeValueOwned>,
13631    ///
13632    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
13633    ///   
13634    pub part: core::option::Option<AttributeValueOwned>,
13635    ///
13636    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
13637    ///   
13638    pub popover: core::option::Option<AttributeValueOwned>,
13639    ///
13640    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
13641    ///   
13642    pub role: core::option::Option<AttributeValueOwned>,
13643    ///
13644    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
13645    ///   
13646    pub slot: core::option::Option<AttributeValueOwned>,
13647    ///
13648    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
13649    ///     <ul>
13650    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
13651    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
13652    ///     </ul>
13653    ///   
13654    pub spellcheck: core::option::Option<AttributeValueOwned>,
13655    ///
13656    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
13657    ///   
13658    pub style: core::option::Option<AttributeValueOwned>,
13659    ///
13660    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
13661    ///     <ul>
13662    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
13663    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
13664    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
13665    ///     </ul>
13666    ///   
13667    pub tabindex: core::option::Option<AttributeValueOwned>,
13668    ///
13669    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
13670    ///   
13671    pub title: core::option::Option<AttributeValueOwned>,
13672    ///
13673    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
13674    ///     <ul>
13675    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
13676    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
13677    ///     </ul>
13678    ///   
13679    pub translate: core::option::Option<AttributeValueOwned>,
13680    ///
13681    ///     <p>This character attribute indicates the numbering type:</p>
13682    ///     <ul>
13683    ///       <li><code>a</code>: lowercase letters</li>
13684    ///       <li><code>A</code>: uppercase letters</li>
13685    ///       <li><code>i</code>: lowercase Roman numerals</li>
13686    ///       <li><code>I</code>: uppercase Roman numerals</li>
13687    ///       <li><code>1</code>: numbers</li>
13688    ///     </ul>
13689    ///     <p>This type overrides the one used by its parent <a href="/en-US/docs/Web/HTML/Element/ol"><code>&lt;ol&gt;</code></a> element, if any.</p>
13690    ///     <div id="sect1" class="notecard note">
13691    ///       <p><strong>Note:</strong> This attribute has been deprecated; use the CSS <a href="/en-US/docs/Web/CSS/list-style-type"><code>list-style-type</code></a> property instead.</p>
13692    ///     </div>
13693    ///   
13694    pub type_: core::option::Option<AttributeValueOwned>,
13695    ///
13696    ///     <p>This integer attribute indicates the current ordinal value of the list item as defined by the <a href="/en-US/docs/Web/HTML/Element/ol"><code>&lt;ol&gt;</code></a> element. The only allowed value for this attribute is a number, even if the list is displayed with Roman numerals or letters. List items that follow this one continue numbering from the value set. The <strong>value</strong> attribute has no meaning for unordered lists (<a href="/en-US/docs/Web/HTML/Element/ul"><code>&lt;ul&gt;</code></a>) or for menus (<a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a>).</p>
13697    ///   
13698    pub value: core::option::Option<AttributeValueOwned>,
13699    ///
13700    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
13701    ///     <ul>
13702    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
13703    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
13704    ///     </ul>
13705    ///   
13706    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
13707}
13708#[allow(deprecated)]
13709#[cfg(feature = "alloc")]
13710impl LiOwned {
13711    /// Get the tag name of the element.
13712    /// This is the same as the name of the struct, in kebab-case.
13713    pub fn tag() -> &'static str {
13714        "li"
13715    }
13716    /// Sets an attribute of the element.
13717    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
13718    /// If the `alloc` feature is disabled, this function will silently fail.
13719    ///
13720    /// # Note
13721    /// This only works when the attribute is lowercase.
13722    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
13723        match name {
13724            "accesskey" => self.accesskey = Some(value.into()),
13725            "autocapitalize" => self.autocapitalize = Some(value.into()),
13726            "autofocus" => self.autofocus = Some(value.into()),
13727            "class" => self.class = Some(value.into()),
13728            "contenteditable" => self.contenteditable = Some(value.into()),
13729            "contextmenu" => self.contextmenu = Some(value.into()),
13730            "dir" => self.dir = Some(value.into()),
13731            "draggable" => self.draggable = Some(value.into()),
13732            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
13733            "exportparts" => self.exportparts = Some(value.into()),
13734            "hidden" => self.hidden = Some(value.into()),
13735            "id" => self.id = Some(value.into()),
13736            "inert" => self.inert = Some(value.into()),
13737            "inputmode" => self.inputmode = Some(value.into()),
13738            "is" => self.is = Some(value.into()),
13739            "itemid" => self.itemid = Some(value.into()),
13740            "itemprop" => self.itemprop = Some(value.into()),
13741            "itemref" => self.itemref = Some(value.into()),
13742            "itemscope" => self.itemscope = Some(value.into()),
13743            "itemtype" => self.itemtype = Some(value.into()),
13744            "lang" => self.lang = Some(value.into()),
13745            "nonce" => self.nonce = Some(value.into()),
13746            "part" => self.part = Some(value.into()),
13747            "popover" => self.popover = Some(value.into()),
13748            "role" => self.role = Some(value.into()),
13749            "slot" => self.slot = Some(value.into()),
13750            "spellcheck" => self.spellcheck = Some(value.into()),
13751            "style" => self.style = Some(value.into()),
13752            "tabindex" => self.tabindex = Some(value.into()),
13753            "title" => self.title = Some(value.into()),
13754            "translate" => self.translate = Some(value.into()),
13755            "type_" => self.type_ = Some(value.into()),
13756            "value" => self.value = Some(value.into()),
13757            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
13758            #[cfg(feature = "alloc")]
13759            _ => {
13760                #[allow(clippy::useless_conversion)]
13761                self.extra.insert(name.into(), value.into());
13762            }
13763            #[cfg(not(feature = "alloc"))]
13764            _ => {}
13765        }
13766    }
13767}
13768/// The <strong><code>&lt;menu&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element is described in the HTML specification as a semantic alternative to <a href="/en-US/docs/Web/HTML/Element/ul"><code>&lt;ul&gt;</code></a>, but treated by browsers (and exposed through the accessibility tree) as no different than <a href="/en-US/docs/Web/HTML/Element/ul"><code>&lt;ul&gt;</code></a>. It represents an unordered list of items (which are represented by <a href="/en-US/docs/Web/HTML/Element/li"><code>&lt;li&gt;</code></a> elements).
13769///
13770/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/menu>
13771
13772#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
13773pub struct Menu<'life> {
13774    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
13775    ///   
13776    pub accesskey: core::option::Option<AttributeValue<'life>>,
13777    ///
13778    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
13779    ///     <ul>
13780    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
13781    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
13782    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
13783    ///       <li><code>characters</code>, all letters should default to uppercase</li>
13784    ///     </ul>
13785    ///   
13786    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
13787    ///
13788    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
13789    ///   
13790    pub autofocus: core::option::Option<AttributeValue<'life>>,
13791    ///
13792    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
13793    ///   
13794    pub class: core::option::Option<AttributeValue<'life>>,
13795    ///
13796    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
13797    ///     <ul>
13798    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
13799    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
13800    ///     </ul>
13801    ///   
13802    pub contenteditable: core::option::Option<AttributeValue<'life>>,
13803    ///
13804    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
13805    ///   
13806    pub contextmenu: core::option::Option<AttributeValue<'life>>,
13807    ///
13808    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
13809    ///   
13810    #[cfg(feature = "alloc")]
13811    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
13812    ///
13813    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
13814    ///     <ul>
13815    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
13816    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
13817    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
13818    ///     </ul>
13819    ///   
13820    pub dir: core::option::Option<AttributeValue<'life>>,
13821    ///
13822    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
13823    ///     <ul>
13824    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
13825    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
13826    ///     </ul>
13827    ///   
13828    pub draggable: core::option::Option<AttributeValue<'life>>,
13829    ///
13830    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
13831    ///   
13832    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
13833    ///
13834    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
13835    ///   
13836    pub exportparts: core::option::Option<AttributeValue<'life>>,
13837    /// /// Extra attributes of the element.
13838
13839    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
13840    #[cfg(feature = "alloc")]
13841    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
13842    ///
13843    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
13844    ///   
13845    pub hidden: core::option::Option<AttributeValue<'life>>,
13846    ///
13847    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
13848    ///   
13849    pub id: core::option::Option<AttributeValue<'life>>,
13850    ///
13851    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
13852    ///   
13853    pub inert: core::option::Option<AttributeValue<'life>>,
13854    ///
13855    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
13856    ///   
13857    pub inputmode: core::option::Option<AttributeValue<'life>>,
13858    ///
13859    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
13860    ///   
13861    pub is: core::option::Option<AttributeValue<'life>>,
13862    ///
13863    ///     <p>The unique, global identifier of an item.</p>
13864    ///   
13865    pub itemid: core::option::Option<AttributeValue<'life>>,
13866    ///
13867    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
13868    ///   
13869    pub itemprop: core::option::Option<AttributeValue<'life>>,
13870    ///
13871    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
13872    ///   
13873    pub itemref: core::option::Option<AttributeValue<'life>>,
13874    ///
13875    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
13876    ///   
13877    pub itemscope: core::option::Option<AttributeValue<'life>>,
13878    ///
13879    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
13880    ///   
13881    pub itemtype: core::option::Option<AttributeValue<'life>>,
13882    ///
13883    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
13884    ///   
13885    pub lang: core::option::Option<AttributeValue<'life>>,
13886    ///
13887    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
13888    ///   
13889    pub nonce: core::option::Option<AttributeValue<'life>>,
13890    ///
13891    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
13892    ///   
13893    pub part: core::option::Option<AttributeValue<'life>>,
13894    ///
13895    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
13896    ///   
13897    pub popover: core::option::Option<AttributeValue<'life>>,
13898    ///
13899    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
13900    ///   
13901    pub role: core::option::Option<AttributeValue<'life>>,
13902    ///
13903    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
13904    ///   
13905    pub slot: core::option::Option<AttributeValue<'life>>,
13906    ///
13907    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
13908    ///     <ul>
13909    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
13910    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
13911    ///     </ul>
13912    ///   
13913    pub spellcheck: core::option::Option<AttributeValue<'life>>,
13914    ///
13915    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
13916    ///   
13917    pub style: core::option::Option<AttributeValue<'life>>,
13918    ///
13919    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
13920    ///     <ul>
13921    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
13922    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
13923    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
13924    ///     </ul>
13925    ///   
13926    pub tabindex: core::option::Option<AttributeValue<'life>>,
13927    ///
13928    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
13929    ///   
13930    pub title: core::option::Option<AttributeValue<'life>>,
13931    ///
13932    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
13933    ///     <ul>
13934    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
13935    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
13936    ///     </ul>
13937    ///   
13938    pub translate: core::option::Option<AttributeValue<'life>>,
13939    ///
13940    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
13941    ///     <ul>
13942    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
13943    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
13944    ///     </ul>
13945    ///   
13946    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
13947}
13948#[allow(deprecated)]
13949
13950impl<'life> Menu<'life> {
13951    /// Get the tag name of the element.
13952    /// This is the same as the name of the struct, in kebab-case.
13953    pub fn tag() -> &'static str {
13954        "menu"
13955    }
13956    /// Sets an attribute of the element.
13957    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
13958    /// If the `alloc` feature is disabled, this function will silently fail.
13959    ///
13960    /// # Note
13961    /// This only works when the attribute is lowercase.
13962    pub fn set_attr(
13963        &mut self,
13964        name: &'life str,
13965        value: impl core::convert::Into<AttributeValue<'life>>,
13966    ) {
13967        match name {
13968            "accesskey" => self.accesskey = Some(value.into()),
13969            "autocapitalize" => self.autocapitalize = Some(value.into()),
13970            "autofocus" => self.autofocus = Some(value.into()),
13971            "class" => self.class = Some(value.into()),
13972            "contenteditable" => self.contenteditable = Some(value.into()),
13973            "contextmenu" => self.contextmenu = Some(value.into()),
13974            "dir" => self.dir = Some(value.into()),
13975            "draggable" => self.draggable = Some(value.into()),
13976            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
13977            "exportparts" => self.exportparts = Some(value.into()),
13978            "hidden" => self.hidden = Some(value.into()),
13979            "id" => self.id = Some(value.into()),
13980            "inert" => self.inert = Some(value.into()),
13981            "inputmode" => self.inputmode = Some(value.into()),
13982            "is" => self.is = Some(value.into()),
13983            "itemid" => self.itemid = Some(value.into()),
13984            "itemprop" => self.itemprop = Some(value.into()),
13985            "itemref" => self.itemref = Some(value.into()),
13986            "itemscope" => self.itemscope = Some(value.into()),
13987            "itemtype" => self.itemtype = Some(value.into()),
13988            "lang" => self.lang = Some(value.into()),
13989            "nonce" => self.nonce = Some(value.into()),
13990            "part" => self.part = Some(value.into()),
13991            "popover" => self.popover = Some(value.into()),
13992            "role" => self.role = Some(value.into()),
13993            "slot" => self.slot = Some(value.into()),
13994            "spellcheck" => self.spellcheck = Some(value.into()),
13995            "style" => self.style = Some(value.into()),
13996            "tabindex" => self.tabindex = Some(value.into()),
13997            "title" => self.title = Some(value.into()),
13998            "translate" => self.translate = Some(value.into()),
13999            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
14000            #[cfg(feature = "alloc")]
14001            _ => {
14002                #[allow(clippy::useless_conversion)]
14003                self.extra.insert(name.into(), value.into());
14004            }
14005            #[cfg(not(feature = "alloc"))]
14006            _ => {}
14007        }
14008    }
14009}
14010/// The <strong><code>&lt;menu&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element is described in the HTML specification as a semantic alternative to <a href="/en-US/docs/Web/HTML/Element/ul"><code>&lt;ul&gt;</code></a>, but treated by browsers (and exposed through the accessibility tree) as no different than <a href="/en-US/docs/Web/HTML/Element/ul"><code>&lt;ul&gt;</code></a>. It represents an unordered list of items (which are represented by <a href="/en-US/docs/Web/HTML/Element/li"><code>&lt;li&gt;</code></a> elements).
14011///
14012/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/menu>
14013
14014#[cfg(feature = "alloc")]
14015#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
14016pub struct MenuOwned {
14017    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
14018    ///   
14019    pub accesskey: core::option::Option<AttributeValueOwned>,
14020    ///
14021    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
14022    ///     <ul>
14023    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
14024    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
14025    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
14026    ///       <li><code>characters</code>, all letters should default to uppercase</li>
14027    ///     </ul>
14028    ///   
14029    pub autocapitalize: core::option::Option<AttributeValueOwned>,
14030    ///
14031    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
14032    ///   
14033    pub autofocus: core::option::Option<AttributeValueOwned>,
14034    ///
14035    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
14036    ///   
14037    pub class: core::option::Option<AttributeValueOwned>,
14038    ///
14039    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
14040    ///     <ul>
14041    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
14042    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
14043    ///     </ul>
14044    ///   
14045    pub contenteditable: core::option::Option<AttributeValueOwned>,
14046    ///
14047    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
14048    ///   
14049    pub contextmenu: core::option::Option<AttributeValueOwned>,
14050    ///
14051    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
14052    ///   
14053    #[cfg(feature = "alloc")]
14054    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
14055    ///
14056    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
14057    ///     <ul>
14058    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
14059    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
14060    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
14061    ///     </ul>
14062    ///   
14063    pub dir: core::option::Option<AttributeValueOwned>,
14064    ///
14065    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
14066    ///     <ul>
14067    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
14068    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
14069    ///     </ul>
14070    ///   
14071    pub draggable: core::option::Option<AttributeValueOwned>,
14072    ///
14073    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
14074    ///   
14075    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
14076    ///
14077    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
14078    ///   
14079    pub exportparts: core::option::Option<AttributeValueOwned>,
14080    /// /// Extra attributes of the element.
14081
14082    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
14083    #[cfg(feature = "alloc")]
14084    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
14085    ///
14086    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
14087    ///   
14088    pub hidden: core::option::Option<AttributeValueOwned>,
14089    ///
14090    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
14091    ///   
14092    pub id: core::option::Option<AttributeValueOwned>,
14093    ///
14094    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
14095    ///   
14096    pub inert: core::option::Option<AttributeValueOwned>,
14097    ///
14098    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
14099    ///   
14100    pub inputmode: core::option::Option<AttributeValueOwned>,
14101    ///
14102    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
14103    ///   
14104    pub is: core::option::Option<AttributeValueOwned>,
14105    ///
14106    ///     <p>The unique, global identifier of an item.</p>
14107    ///   
14108    pub itemid: core::option::Option<AttributeValueOwned>,
14109    ///
14110    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
14111    ///   
14112    pub itemprop: core::option::Option<AttributeValueOwned>,
14113    ///
14114    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
14115    ///   
14116    pub itemref: core::option::Option<AttributeValueOwned>,
14117    ///
14118    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
14119    ///   
14120    pub itemscope: core::option::Option<AttributeValueOwned>,
14121    ///
14122    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
14123    ///   
14124    pub itemtype: core::option::Option<AttributeValueOwned>,
14125    ///
14126    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
14127    ///   
14128    pub lang: core::option::Option<AttributeValueOwned>,
14129    ///
14130    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
14131    ///   
14132    pub nonce: core::option::Option<AttributeValueOwned>,
14133    ///
14134    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
14135    ///   
14136    pub part: core::option::Option<AttributeValueOwned>,
14137    ///
14138    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
14139    ///   
14140    pub popover: core::option::Option<AttributeValueOwned>,
14141    ///
14142    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
14143    ///   
14144    pub role: core::option::Option<AttributeValueOwned>,
14145    ///
14146    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
14147    ///   
14148    pub slot: core::option::Option<AttributeValueOwned>,
14149    ///
14150    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
14151    ///     <ul>
14152    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
14153    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
14154    ///     </ul>
14155    ///   
14156    pub spellcheck: core::option::Option<AttributeValueOwned>,
14157    ///
14158    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
14159    ///   
14160    pub style: core::option::Option<AttributeValueOwned>,
14161    ///
14162    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
14163    ///     <ul>
14164    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
14165    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
14166    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
14167    ///     </ul>
14168    ///   
14169    pub tabindex: core::option::Option<AttributeValueOwned>,
14170    ///
14171    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
14172    ///   
14173    pub title: core::option::Option<AttributeValueOwned>,
14174    ///
14175    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
14176    ///     <ul>
14177    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
14178    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
14179    ///     </ul>
14180    ///   
14181    pub translate: core::option::Option<AttributeValueOwned>,
14182    ///
14183    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
14184    ///     <ul>
14185    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
14186    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
14187    ///     </ul>
14188    ///   
14189    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
14190}
14191#[allow(deprecated)]
14192#[cfg(feature = "alloc")]
14193impl MenuOwned {
14194    /// Get the tag name of the element.
14195    /// This is the same as the name of the struct, in kebab-case.
14196    pub fn tag() -> &'static str {
14197        "menu"
14198    }
14199    /// Sets an attribute of the element.
14200    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
14201    /// If the `alloc` feature is disabled, this function will silently fail.
14202    ///
14203    /// # Note
14204    /// This only works when the attribute is lowercase.
14205    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
14206        match name {
14207            "accesskey" => self.accesskey = Some(value.into()),
14208            "autocapitalize" => self.autocapitalize = Some(value.into()),
14209            "autofocus" => self.autofocus = Some(value.into()),
14210            "class" => self.class = Some(value.into()),
14211            "contenteditable" => self.contenteditable = Some(value.into()),
14212            "contextmenu" => self.contextmenu = Some(value.into()),
14213            "dir" => self.dir = Some(value.into()),
14214            "draggable" => self.draggable = Some(value.into()),
14215            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
14216            "exportparts" => self.exportparts = Some(value.into()),
14217            "hidden" => self.hidden = Some(value.into()),
14218            "id" => self.id = Some(value.into()),
14219            "inert" => self.inert = Some(value.into()),
14220            "inputmode" => self.inputmode = Some(value.into()),
14221            "is" => self.is = Some(value.into()),
14222            "itemid" => self.itemid = Some(value.into()),
14223            "itemprop" => self.itemprop = Some(value.into()),
14224            "itemref" => self.itemref = Some(value.into()),
14225            "itemscope" => self.itemscope = Some(value.into()),
14226            "itemtype" => self.itemtype = Some(value.into()),
14227            "lang" => self.lang = Some(value.into()),
14228            "nonce" => self.nonce = Some(value.into()),
14229            "part" => self.part = Some(value.into()),
14230            "popover" => self.popover = Some(value.into()),
14231            "role" => self.role = Some(value.into()),
14232            "slot" => self.slot = Some(value.into()),
14233            "spellcheck" => self.spellcheck = Some(value.into()),
14234            "style" => self.style = Some(value.into()),
14235            "tabindex" => self.tabindex = Some(value.into()),
14236            "title" => self.title = Some(value.into()),
14237            "translate" => self.translate = Some(value.into()),
14238            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
14239            #[cfg(feature = "alloc")]
14240            _ => {
14241                #[allow(clippy::useless_conversion)]
14242                self.extra.insert(name.into(), value.into());
14243            }
14244            #[cfg(not(feature = "alloc"))]
14245            _ => {}
14246        }
14247    }
14248}
14249/// The <strong><code>&lt;ol&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents an ordered list of items — typically rendered as a numbered list.
14250///
14251/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ol>
14252
14253#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
14254pub struct Ol<'life> {
14255    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
14256    ///   
14257    pub accesskey: core::option::Option<AttributeValue<'life>>,
14258    ///
14259    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
14260    ///     <ul>
14261    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
14262    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
14263    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
14264    ///       <li><code>characters</code>, all letters should default to uppercase</li>
14265    ///     </ul>
14266    ///   
14267    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
14268    ///
14269    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
14270    ///   
14271    pub autofocus: core::option::Option<AttributeValue<'life>>,
14272    ///
14273    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
14274    ///   
14275    pub class: core::option::Option<AttributeValue<'life>>,
14276    ///
14277    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
14278    ///     <ul>
14279    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
14280    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
14281    ///     </ul>
14282    ///   
14283    pub contenteditable: core::option::Option<AttributeValue<'life>>,
14284    ///
14285    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
14286    ///   
14287    pub contextmenu: core::option::Option<AttributeValue<'life>>,
14288    ///
14289    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
14290    ///   
14291    #[cfg(feature = "alloc")]
14292    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
14293    ///
14294    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
14295    ///     <ul>
14296    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
14297    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
14298    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
14299    ///     </ul>
14300    ///   
14301    pub dir: core::option::Option<AttributeValue<'life>>,
14302    ///
14303    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
14304    ///     <ul>
14305    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
14306    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
14307    ///     </ul>
14308    ///   
14309    pub draggable: core::option::Option<AttributeValue<'life>>,
14310    ///
14311    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
14312    ///   
14313    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
14314    ///
14315    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
14316    ///   
14317    pub exportparts: core::option::Option<AttributeValue<'life>>,
14318    /// /// Extra attributes of the element.
14319
14320    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
14321    #[cfg(feature = "alloc")]
14322    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
14323    ///
14324    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
14325    ///   
14326    pub hidden: core::option::Option<AttributeValue<'life>>,
14327    ///
14328    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
14329    ///   
14330    pub id: core::option::Option<AttributeValue<'life>>,
14331    ///
14332    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
14333    ///   
14334    pub inert: core::option::Option<AttributeValue<'life>>,
14335    ///
14336    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
14337    ///   
14338    pub inputmode: core::option::Option<AttributeValue<'life>>,
14339    ///
14340    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
14341    ///   
14342    pub is: core::option::Option<AttributeValue<'life>>,
14343    ///
14344    ///     <p>The unique, global identifier of an item.</p>
14345    ///   
14346    pub itemid: core::option::Option<AttributeValue<'life>>,
14347    ///
14348    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
14349    ///   
14350    pub itemprop: core::option::Option<AttributeValue<'life>>,
14351    ///
14352    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
14353    ///   
14354    pub itemref: core::option::Option<AttributeValue<'life>>,
14355    ///
14356    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
14357    ///   
14358    pub itemscope: core::option::Option<AttributeValue<'life>>,
14359    ///
14360    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
14361    ///   
14362    pub itemtype: core::option::Option<AttributeValue<'life>>,
14363    ///
14364    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
14365    ///   
14366    pub lang: core::option::Option<AttributeValue<'life>>,
14367    ///
14368    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
14369    ///   
14370    pub nonce: core::option::Option<AttributeValue<'life>>,
14371    ///
14372    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
14373    ///   
14374    pub part: core::option::Option<AttributeValue<'life>>,
14375    ///
14376    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
14377    ///   
14378    pub popover: core::option::Option<AttributeValue<'life>>,
14379    ///
14380    ///     <p>This Boolean attribute specifies that the list's items are in reverse order. Items will be numbered from high to low.</p>
14381    ///   
14382    pub reversed: core::option::Option<AttributeValue<'life>>,
14383    ///
14384    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
14385    ///   
14386    pub role: core::option::Option<AttributeValue<'life>>,
14387    ///
14388    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
14389    ///   
14390    pub slot: core::option::Option<AttributeValue<'life>>,
14391    ///
14392    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
14393    ///     <ul>
14394    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
14395    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
14396    ///     </ul>
14397    ///   
14398    pub spellcheck: core::option::Option<AttributeValue<'life>>,
14399    ///
14400    ///     <p>An integer to start counting from for the list items. Always an Arabic numeral (1, 2, 3, etc.), even when the numbering <code>type</code> is letters or Roman numerals. For example, to start numbering elements from the letter "d" or the Roman numeral "iv," use <code>start="4"</code>.</p>
14401    ///   
14402    pub start: core::option::Option<AttributeValue<'life>>,
14403    ///
14404    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
14405    ///   
14406    pub style: core::option::Option<AttributeValue<'life>>,
14407    ///
14408    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
14409    ///     <ul>
14410    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
14411    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
14412    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
14413    ///     </ul>
14414    ///   
14415    pub tabindex: core::option::Option<AttributeValue<'life>>,
14416    ///
14417    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
14418    ///   
14419    pub title: core::option::Option<AttributeValue<'life>>,
14420    ///
14421    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
14422    ///     <ul>
14423    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
14424    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
14425    ///     </ul>
14426    ///   
14427    pub translate: core::option::Option<AttributeValue<'life>>,
14428    ///
14429    ///     <p>Sets the numbering type:</p>
14430    ///     <ul>
14431    ///       <li><code>a</code> for lowercase letters</li>
14432    ///       <li><code>A</code> for uppercase letters</li>
14433    ///       <li><code>i</code> for lowercase Roman numerals</li>
14434    ///       <li><code>I</code> for uppercase Roman numerals</li>
14435    ///       <li><code>1</code> for numbers (default)</li>
14436    ///     </ul>
14437    ///     <p>The specified type is used for the entire list unless a different <a href="/en-US/docs/Web/HTML/Element/li#type"><code>type</code></a> attribute is used on an enclosed <a href="/en-US/docs/Web/HTML/Element/li"><code>&lt;li&gt;</code></a> element.</p>
14438    ///     <div id="sect1" class="notecard note">
14439    ///       <p><strong>Note:</strong> Unless the type of the list number matters (like legal or technical documents where items are referenced by their number/letter), use the CSS <a href="/en-US/docs/Web/CSS/list-style-type"><code>list-style-type</code></a> property instead.</p>
14440    ///     </div>
14441    ///   
14442    pub type_: core::option::Option<AttributeValue<'life>>,
14443    ///
14444    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
14445    ///     <ul>
14446    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
14447    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
14448    ///     </ul>
14449    ///   
14450    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
14451}
14452#[allow(deprecated)]
14453
14454impl<'life> Ol<'life> {
14455    /// Get the tag name of the element.
14456    /// This is the same as the name of the struct, in kebab-case.
14457    pub fn tag() -> &'static str {
14458        "ol"
14459    }
14460    /// Sets an attribute of the element.
14461    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
14462    /// If the `alloc` feature is disabled, this function will silently fail.
14463    ///
14464    /// # Note
14465    /// This only works when the attribute is lowercase.
14466    pub fn set_attr(
14467        &mut self,
14468        name: &'life str,
14469        value: impl core::convert::Into<AttributeValue<'life>>,
14470    ) {
14471        match name {
14472            "accesskey" => self.accesskey = Some(value.into()),
14473            "autocapitalize" => self.autocapitalize = Some(value.into()),
14474            "autofocus" => self.autofocus = Some(value.into()),
14475            "class" => self.class = Some(value.into()),
14476            "contenteditable" => self.contenteditable = Some(value.into()),
14477            "contextmenu" => self.contextmenu = Some(value.into()),
14478            "dir" => self.dir = Some(value.into()),
14479            "draggable" => self.draggable = Some(value.into()),
14480            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
14481            "exportparts" => self.exportparts = Some(value.into()),
14482            "hidden" => self.hidden = Some(value.into()),
14483            "id" => self.id = Some(value.into()),
14484            "inert" => self.inert = Some(value.into()),
14485            "inputmode" => self.inputmode = Some(value.into()),
14486            "is" => self.is = Some(value.into()),
14487            "itemid" => self.itemid = Some(value.into()),
14488            "itemprop" => self.itemprop = Some(value.into()),
14489            "itemref" => self.itemref = Some(value.into()),
14490            "itemscope" => self.itemscope = Some(value.into()),
14491            "itemtype" => self.itemtype = Some(value.into()),
14492            "lang" => self.lang = Some(value.into()),
14493            "nonce" => self.nonce = Some(value.into()),
14494            "part" => self.part = Some(value.into()),
14495            "popover" => self.popover = Some(value.into()),
14496            "reversed" => self.reversed = Some(value.into()),
14497            "role" => self.role = Some(value.into()),
14498            "slot" => self.slot = Some(value.into()),
14499            "spellcheck" => self.spellcheck = Some(value.into()),
14500            "start" => self.start = Some(value.into()),
14501            "style" => self.style = Some(value.into()),
14502            "tabindex" => self.tabindex = Some(value.into()),
14503            "title" => self.title = Some(value.into()),
14504            "translate" => self.translate = Some(value.into()),
14505            "type_" => self.type_ = Some(value.into()),
14506            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
14507            #[cfg(feature = "alloc")]
14508            _ => {
14509                #[allow(clippy::useless_conversion)]
14510                self.extra.insert(name.into(), value.into());
14511            }
14512            #[cfg(not(feature = "alloc"))]
14513            _ => {}
14514        }
14515    }
14516}
14517/// The <strong><code>&lt;ol&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents an ordered list of items — typically rendered as a numbered list.
14518///
14519/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ol>
14520
14521#[cfg(feature = "alloc")]
14522#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
14523pub struct OlOwned {
14524    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
14525    ///   
14526    pub accesskey: core::option::Option<AttributeValueOwned>,
14527    ///
14528    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
14529    ///     <ul>
14530    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
14531    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
14532    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
14533    ///       <li><code>characters</code>, all letters should default to uppercase</li>
14534    ///     </ul>
14535    ///   
14536    pub autocapitalize: core::option::Option<AttributeValueOwned>,
14537    ///
14538    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
14539    ///   
14540    pub autofocus: core::option::Option<AttributeValueOwned>,
14541    ///
14542    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
14543    ///   
14544    pub class: core::option::Option<AttributeValueOwned>,
14545    ///
14546    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
14547    ///     <ul>
14548    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
14549    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
14550    ///     </ul>
14551    ///   
14552    pub contenteditable: core::option::Option<AttributeValueOwned>,
14553    ///
14554    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
14555    ///   
14556    pub contextmenu: core::option::Option<AttributeValueOwned>,
14557    ///
14558    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
14559    ///   
14560    #[cfg(feature = "alloc")]
14561    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
14562    ///
14563    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
14564    ///     <ul>
14565    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
14566    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
14567    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
14568    ///     </ul>
14569    ///   
14570    pub dir: core::option::Option<AttributeValueOwned>,
14571    ///
14572    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
14573    ///     <ul>
14574    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
14575    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
14576    ///     </ul>
14577    ///   
14578    pub draggable: core::option::Option<AttributeValueOwned>,
14579    ///
14580    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
14581    ///   
14582    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
14583    ///
14584    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
14585    ///   
14586    pub exportparts: core::option::Option<AttributeValueOwned>,
14587    /// /// Extra attributes of the element.
14588
14589    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
14590    #[cfg(feature = "alloc")]
14591    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
14592    ///
14593    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
14594    ///   
14595    pub hidden: core::option::Option<AttributeValueOwned>,
14596    ///
14597    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
14598    ///   
14599    pub id: core::option::Option<AttributeValueOwned>,
14600    ///
14601    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
14602    ///   
14603    pub inert: core::option::Option<AttributeValueOwned>,
14604    ///
14605    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
14606    ///   
14607    pub inputmode: core::option::Option<AttributeValueOwned>,
14608    ///
14609    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
14610    ///   
14611    pub is: core::option::Option<AttributeValueOwned>,
14612    ///
14613    ///     <p>The unique, global identifier of an item.</p>
14614    ///   
14615    pub itemid: core::option::Option<AttributeValueOwned>,
14616    ///
14617    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
14618    ///   
14619    pub itemprop: core::option::Option<AttributeValueOwned>,
14620    ///
14621    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
14622    ///   
14623    pub itemref: core::option::Option<AttributeValueOwned>,
14624    ///
14625    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
14626    ///   
14627    pub itemscope: core::option::Option<AttributeValueOwned>,
14628    ///
14629    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
14630    ///   
14631    pub itemtype: core::option::Option<AttributeValueOwned>,
14632    ///
14633    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
14634    ///   
14635    pub lang: core::option::Option<AttributeValueOwned>,
14636    ///
14637    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
14638    ///   
14639    pub nonce: core::option::Option<AttributeValueOwned>,
14640    ///
14641    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
14642    ///   
14643    pub part: core::option::Option<AttributeValueOwned>,
14644    ///
14645    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
14646    ///   
14647    pub popover: core::option::Option<AttributeValueOwned>,
14648    ///
14649    ///     <p>This Boolean attribute specifies that the list's items are in reverse order. Items will be numbered from high to low.</p>
14650    ///   
14651    pub reversed: core::option::Option<AttributeValueOwned>,
14652    ///
14653    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
14654    ///   
14655    pub role: core::option::Option<AttributeValueOwned>,
14656    ///
14657    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
14658    ///   
14659    pub slot: core::option::Option<AttributeValueOwned>,
14660    ///
14661    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
14662    ///     <ul>
14663    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
14664    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
14665    ///     </ul>
14666    ///   
14667    pub spellcheck: core::option::Option<AttributeValueOwned>,
14668    ///
14669    ///     <p>An integer to start counting from for the list items. Always an Arabic numeral (1, 2, 3, etc.), even when the numbering <code>type</code> is letters or Roman numerals. For example, to start numbering elements from the letter "d" or the Roman numeral "iv," use <code>start="4"</code>.</p>
14670    ///   
14671    pub start: core::option::Option<AttributeValueOwned>,
14672    ///
14673    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
14674    ///   
14675    pub style: core::option::Option<AttributeValueOwned>,
14676    ///
14677    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
14678    ///     <ul>
14679    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
14680    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
14681    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
14682    ///     </ul>
14683    ///   
14684    pub tabindex: core::option::Option<AttributeValueOwned>,
14685    ///
14686    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
14687    ///   
14688    pub title: core::option::Option<AttributeValueOwned>,
14689    ///
14690    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
14691    ///     <ul>
14692    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
14693    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
14694    ///     </ul>
14695    ///   
14696    pub translate: core::option::Option<AttributeValueOwned>,
14697    ///
14698    ///     <p>Sets the numbering type:</p>
14699    ///     <ul>
14700    ///       <li><code>a</code> for lowercase letters</li>
14701    ///       <li><code>A</code> for uppercase letters</li>
14702    ///       <li><code>i</code> for lowercase Roman numerals</li>
14703    ///       <li><code>I</code> for uppercase Roman numerals</li>
14704    ///       <li><code>1</code> for numbers (default)</li>
14705    ///     </ul>
14706    ///     <p>The specified type is used for the entire list unless a different <a href="/en-US/docs/Web/HTML/Element/li#type"><code>type</code></a> attribute is used on an enclosed <a href="/en-US/docs/Web/HTML/Element/li"><code>&lt;li&gt;</code></a> element.</p>
14707    ///     <div id="sect1" class="notecard note">
14708    ///       <p><strong>Note:</strong> Unless the type of the list number matters (like legal or technical documents where items are referenced by their number/letter), use the CSS <a href="/en-US/docs/Web/CSS/list-style-type"><code>list-style-type</code></a> property instead.</p>
14709    ///     </div>
14710    ///   
14711    pub type_: core::option::Option<AttributeValueOwned>,
14712    ///
14713    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
14714    ///     <ul>
14715    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
14716    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
14717    ///     </ul>
14718    ///   
14719    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
14720}
14721#[allow(deprecated)]
14722#[cfg(feature = "alloc")]
14723impl OlOwned {
14724    /// Get the tag name of the element.
14725    /// This is the same as the name of the struct, in kebab-case.
14726    pub fn tag() -> &'static str {
14727        "ol"
14728    }
14729    /// Sets an attribute of the element.
14730    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
14731    /// If the `alloc` feature is disabled, this function will silently fail.
14732    ///
14733    /// # Note
14734    /// This only works when the attribute is lowercase.
14735    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
14736        match name {
14737            "accesskey" => self.accesskey = Some(value.into()),
14738            "autocapitalize" => self.autocapitalize = Some(value.into()),
14739            "autofocus" => self.autofocus = Some(value.into()),
14740            "class" => self.class = Some(value.into()),
14741            "contenteditable" => self.contenteditable = Some(value.into()),
14742            "contextmenu" => self.contextmenu = Some(value.into()),
14743            "dir" => self.dir = Some(value.into()),
14744            "draggable" => self.draggable = Some(value.into()),
14745            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
14746            "exportparts" => self.exportparts = Some(value.into()),
14747            "hidden" => self.hidden = Some(value.into()),
14748            "id" => self.id = Some(value.into()),
14749            "inert" => self.inert = Some(value.into()),
14750            "inputmode" => self.inputmode = Some(value.into()),
14751            "is" => self.is = Some(value.into()),
14752            "itemid" => self.itemid = Some(value.into()),
14753            "itemprop" => self.itemprop = Some(value.into()),
14754            "itemref" => self.itemref = Some(value.into()),
14755            "itemscope" => self.itemscope = Some(value.into()),
14756            "itemtype" => self.itemtype = Some(value.into()),
14757            "lang" => self.lang = Some(value.into()),
14758            "nonce" => self.nonce = Some(value.into()),
14759            "part" => self.part = Some(value.into()),
14760            "popover" => self.popover = Some(value.into()),
14761            "reversed" => self.reversed = Some(value.into()),
14762            "role" => self.role = Some(value.into()),
14763            "slot" => self.slot = Some(value.into()),
14764            "spellcheck" => self.spellcheck = Some(value.into()),
14765            "start" => self.start = Some(value.into()),
14766            "style" => self.style = Some(value.into()),
14767            "tabindex" => self.tabindex = Some(value.into()),
14768            "title" => self.title = Some(value.into()),
14769            "translate" => self.translate = Some(value.into()),
14770            "type_" => self.type_ = Some(value.into()),
14771            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
14772            #[cfg(feature = "alloc")]
14773            _ => {
14774                #[allow(clippy::useless_conversion)]
14775                self.extra.insert(name.into(), value.into());
14776            }
14777            #[cfg(not(feature = "alloc"))]
14778            _ => {}
14779        }
14780    }
14781}
14782/// The <strong><code>&lt;p&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents a paragraph. Paragraphs are usually represented in visual media as blocks of text separated from adjacent blocks by blank lines and/or first-line indentation, but HTML paragraphs can be any structural grouping of related content, such as images or form fields.
14783///
14784/// Paragraphs are <a href="/en-US/docs/Web/HTML/Block-level_elements">block-level elements</a>, and notably will automatically close if another block-level element is parsed before the closing <code>&lt;/p&gt;</code> tag. See "Tag omission" below.
14785///
14786/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/p>
14787
14788#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
14789pub struct P<'life> {
14790    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
14791    ///   
14792    pub accesskey: core::option::Option<AttributeValue<'life>>,
14793    ///
14794    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
14795    ///     <ul>
14796    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
14797    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
14798    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
14799    ///       <li><code>characters</code>, all letters should default to uppercase</li>
14800    ///     </ul>
14801    ///   
14802    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
14803    ///
14804    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
14805    ///   
14806    pub autofocus: core::option::Option<AttributeValue<'life>>,
14807    ///
14808    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
14809    ///   
14810    pub class: core::option::Option<AttributeValue<'life>>,
14811    ///
14812    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
14813    ///     <ul>
14814    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
14815    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
14816    ///     </ul>
14817    ///   
14818    pub contenteditable: core::option::Option<AttributeValue<'life>>,
14819    ///
14820    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
14821    ///   
14822    pub contextmenu: core::option::Option<AttributeValue<'life>>,
14823    ///
14824    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
14825    ///   
14826    #[cfg(feature = "alloc")]
14827    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
14828    ///
14829    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
14830    ///     <ul>
14831    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
14832    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
14833    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
14834    ///     </ul>
14835    ///   
14836    pub dir: core::option::Option<AttributeValue<'life>>,
14837    ///
14838    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
14839    ///     <ul>
14840    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
14841    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
14842    ///     </ul>
14843    ///   
14844    pub draggable: core::option::Option<AttributeValue<'life>>,
14845    ///
14846    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
14847    ///   
14848    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
14849    ///
14850    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
14851    ///   
14852    pub exportparts: core::option::Option<AttributeValue<'life>>,
14853    /// /// Extra attributes of the element.
14854
14855    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
14856    #[cfg(feature = "alloc")]
14857    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
14858    ///
14859    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
14860    ///   
14861    pub hidden: core::option::Option<AttributeValue<'life>>,
14862    ///
14863    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
14864    ///   
14865    pub id: core::option::Option<AttributeValue<'life>>,
14866    ///
14867    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
14868    ///   
14869    pub inert: core::option::Option<AttributeValue<'life>>,
14870    ///
14871    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
14872    ///   
14873    pub inputmode: core::option::Option<AttributeValue<'life>>,
14874    ///
14875    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
14876    ///   
14877    pub is: core::option::Option<AttributeValue<'life>>,
14878    ///
14879    ///     <p>The unique, global identifier of an item.</p>
14880    ///   
14881    pub itemid: core::option::Option<AttributeValue<'life>>,
14882    ///
14883    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
14884    ///   
14885    pub itemprop: core::option::Option<AttributeValue<'life>>,
14886    ///
14887    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
14888    ///   
14889    pub itemref: core::option::Option<AttributeValue<'life>>,
14890    ///
14891    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
14892    ///   
14893    pub itemscope: core::option::Option<AttributeValue<'life>>,
14894    ///
14895    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
14896    ///   
14897    pub itemtype: core::option::Option<AttributeValue<'life>>,
14898    ///
14899    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
14900    ///   
14901    pub lang: core::option::Option<AttributeValue<'life>>,
14902    ///
14903    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
14904    ///   
14905    pub nonce: core::option::Option<AttributeValue<'life>>,
14906    ///
14907    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
14908    ///   
14909    pub part: core::option::Option<AttributeValue<'life>>,
14910    ///
14911    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
14912    ///   
14913    pub popover: core::option::Option<AttributeValue<'life>>,
14914    ///
14915    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
14916    ///   
14917    pub role: core::option::Option<AttributeValue<'life>>,
14918    ///
14919    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
14920    ///   
14921    pub slot: core::option::Option<AttributeValue<'life>>,
14922    ///
14923    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
14924    ///     <ul>
14925    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
14926    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
14927    ///     </ul>
14928    ///   
14929    pub spellcheck: core::option::Option<AttributeValue<'life>>,
14930    ///
14931    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
14932    ///   
14933    pub style: core::option::Option<AttributeValue<'life>>,
14934    ///
14935    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
14936    ///     <ul>
14937    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
14938    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
14939    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
14940    ///     </ul>
14941    ///   
14942    pub tabindex: core::option::Option<AttributeValue<'life>>,
14943    ///
14944    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
14945    ///   
14946    pub title: core::option::Option<AttributeValue<'life>>,
14947    ///
14948    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
14949    ///     <ul>
14950    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
14951    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
14952    ///     </ul>
14953    ///   
14954    pub translate: core::option::Option<AttributeValue<'life>>,
14955    ///
14956    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
14957    ///     <ul>
14958    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
14959    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
14960    ///     </ul>
14961    ///   
14962    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
14963}
14964#[allow(deprecated)]
14965
14966impl<'life> P<'life> {
14967    /// Get the tag name of the element.
14968    /// This is the same as the name of the struct, in kebab-case.
14969    pub fn tag() -> &'static str {
14970        "p"
14971    }
14972    /// Sets an attribute of the element.
14973    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
14974    /// If the `alloc` feature is disabled, this function will silently fail.
14975    ///
14976    /// # Note
14977    /// This only works when the attribute is lowercase.
14978    pub fn set_attr(
14979        &mut self,
14980        name: &'life str,
14981        value: impl core::convert::Into<AttributeValue<'life>>,
14982    ) {
14983        match name {
14984            "accesskey" => self.accesskey = Some(value.into()),
14985            "autocapitalize" => self.autocapitalize = Some(value.into()),
14986            "autofocus" => self.autofocus = Some(value.into()),
14987            "class" => self.class = Some(value.into()),
14988            "contenteditable" => self.contenteditable = Some(value.into()),
14989            "contextmenu" => self.contextmenu = Some(value.into()),
14990            "dir" => self.dir = Some(value.into()),
14991            "draggable" => self.draggable = Some(value.into()),
14992            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
14993            "exportparts" => self.exportparts = Some(value.into()),
14994            "hidden" => self.hidden = Some(value.into()),
14995            "id" => self.id = Some(value.into()),
14996            "inert" => self.inert = Some(value.into()),
14997            "inputmode" => self.inputmode = Some(value.into()),
14998            "is" => self.is = Some(value.into()),
14999            "itemid" => self.itemid = Some(value.into()),
15000            "itemprop" => self.itemprop = Some(value.into()),
15001            "itemref" => self.itemref = Some(value.into()),
15002            "itemscope" => self.itemscope = Some(value.into()),
15003            "itemtype" => self.itemtype = Some(value.into()),
15004            "lang" => self.lang = Some(value.into()),
15005            "nonce" => self.nonce = Some(value.into()),
15006            "part" => self.part = Some(value.into()),
15007            "popover" => self.popover = Some(value.into()),
15008            "role" => self.role = Some(value.into()),
15009            "slot" => self.slot = Some(value.into()),
15010            "spellcheck" => self.spellcheck = Some(value.into()),
15011            "style" => self.style = Some(value.into()),
15012            "tabindex" => self.tabindex = Some(value.into()),
15013            "title" => self.title = Some(value.into()),
15014            "translate" => self.translate = Some(value.into()),
15015            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
15016            #[cfg(feature = "alloc")]
15017            _ => {
15018                #[allow(clippy::useless_conversion)]
15019                self.extra.insert(name.into(), value.into());
15020            }
15021            #[cfg(not(feature = "alloc"))]
15022            _ => {}
15023        }
15024    }
15025}
15026/// The <strong><code>&lt;p&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents a paragraph. Paragraphs are usually represented in visual media as blocks of text separated from adjacent blocks by blank lines and/or first-line indentation, but HTML paragraphs can be any structural grouping of related content, such as images or form fields.
15027///
15028/// Paragraphs are <a href="/en-US/docs/Web/HTML/Block-level_elements">block-level elements</a>, and notably will automatically close if another block-level element is parsed before the closing <code>&lt;/p&gt;</code> tag. See "Tag omission" below.
15029///
15030/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/p>
15031
15032#[cfg(feature = "alloc")]
15033#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
15034pub struct POwned {
15035    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
15036    ///   
15037    pub accesskey: core::option::Option<AttributeValueOwned>,
15038    ///
15039    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
15040    ///     <ul>
15041    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
15042    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
15043    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
15044    ///       <li><code>characters</code>, all letters should default to uppercase</li>
15045    ///     </ul>
15046    ///   
15047    pub autocapitalize: core::option::Option<AttributeValueOwned>,
15048    ///
15049    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
15050    ///   
15051    pub autofocus: core::option::Option<AttributeValueOwned>,
15052    ///
15053    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
15054    ///   
15055    pub class: core::option::Option<AttributeValueOwned>,
15056    ///
15057    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
15058    ///     <ul>
15059    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
15060    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
15061    ///     </ul>
15062    ///   
15063    pub contenteditable: core::option::Option<AttributeValueOwned>,
15064    ///
15065    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
15066    ///   
15067    pub contextmenu: core::option::Option<AttributeValueOwned>,
15068    ///
15069    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
15070    ///   
15071    #[cfg(feature = "alloc")]
15072    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
15073    ///
15074    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
15075    ///     <ul>
15076    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
15077    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
15078    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
15079    ///     </ul>
15080    ///   
15081    pub dir: core::option::Option<AttributeValueOwned>,
15082    ///
15083    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
15084    ///     <ul>
15085    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
15086    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
15087    ///     </ul>
15088    ///   
15089    pub draggable: core::option::Option<AttributeValueOwned>,
15090    ///
15091    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
15092    ///   
15093    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
15094    ///
15095    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
15096    ///   
15097    pub exportparts: core::option::Option<AttributeValueOwned>,
15098    /// /// Extra attributes of the element.
15099
15100    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
15101    #[cfg(feature = "alloc")]
15102    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
15103    ///
15104    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
15105    ///   
15106    pub hidden: core::option::Option<AttributeValueOwned>,
15107    ///
15108    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
15109    ///   
15110    pub id: core::option::Option<AttributeValueOwned>,
15111    ///
15112    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
15113    ///   
15114    pub inert: core::option::Option<AttributeValueOwned>,
15115    ///
15116    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
15117    ///   
15118    pub inputmode: core::option::Option<AttributeValueOwned>,
15119    ///
15120    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
15121    ///   
15122    pub is: core::option::Option<AttributeValueOwned>,
15123    ///
15124    ///     <p>The unique, global identifier of an item.</p>
15125    ///   
15126    pub itemid: core::option::Option<AttributeValueOwned>,
15127    ///
15128    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
15129    ///   
15130    pub itemprop: core::option::Option<AttributeValueOwned>,
15131    ///
15132    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
15133    ///   
15134    pub itemref: core::option::Option<AttributeValueOwned>,
15135    ///
15136    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
15137    ///   
15138    pub itemscope: core::option::Option<AttributeValueOwned>,
15139    ///
15140    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
15141    ///   
15142    pub itemtype: core::option::Option<AttributeValueOwned>,
15143    ///
15144    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
15145    ///   
15146    pub lang: core::option::Option<AttributeValueOwned>,
15147    ///
15148    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
15149    ///   
15150    pub nonce: core::option::Option<AttributeValueOwned>,
15151    ///
15152    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
15153    ///   
15154    pub part: core::option::Option<AttributeValueOwned>,
15155    ///
15156    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
15157    ///   
15158    pub popover: core::option::Option<AttributeValueOwned>,
15159    ///
15160    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
15161    ///   
15162    pub role: core::option::Option<AttributeValueOwned>,
15163    ///
15164    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
15165    ///   
15166    pub slot: core::option::Option<AttributeValueOwned>,
15167    ///
15168    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
15169    ///     <ul>
15170    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
15171    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
15172    ///     </ul>
15173    ///   
15174    pub spellcheck: core::option::Option<AttributeValueOwned>,
15175    ///
15176    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
15177    ///   
15178    pub style: core::option::Option<AttributeValueOwned>,
15179    ///
15180    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
15181    ///     <ul>
15182    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
15183    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
15184    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
15185    ///     </ul>
15186    ///   
15187    pub tabindex: core::option::Option<AttributeValueOwned>,
15188    ///
15189    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
15190    ///   
15191    pub title: core::option::Option<AttributeValueOwned>,
15192    ///
15193    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
15194    ///     <ul>
15195    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
15196    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
15197    ///     </ul>
15198    ///   
15199    pub translate: core::option::Option<AttributeValueOwned>,
15200    ///
15201    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
15202    ///     <ul>
15203    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
15204    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
15205    ///     </ul>
15206    ///   
15207    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
15208}
15209#[allow(deprecated)]
15210#[cfg(feature = "alloc")]
15211impl POwned {
15212    /// Get the tag name of the element.
15213    /// This is the same as the name of the struct, in kebab-case.
15214    pub fn tag() -> &'static str {
15215        "p"
15216    }
15217    /// Sets an attribute of the element.
15218    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
15219    /// If the `alloc` feature is disabled, this function will silently fail.
15220    ///
15221    /// # Note
15222    /// This only works when the attribute is lowercase.
15223    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
15224        match name {
15225            "accesskey" => self.accesskey = Some(value.into()),
15226            "autocapitalize" => self.autocapitalize = Some(value.into()),
15227            "autofocus" => self.autofocus = Some(value.into()),
15228            "class" => self.class = Some(value.into()),
15229            "contenteditable" => self.contenteditable = Some(value.into()),
15230            "contextmenu" => self.contextmenu = Some(value.into()),
15231            "dir" => self.dir = Some(value.into()),
15232            "draggable" => self.draggable = Some(value.into()),
15233            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
15234            "exportparts" => self.exportparts = Some(value.into()),
15235            "hidden" => self.hidden = Some(value.into()),
15236            "id" => self.id = Some(value.into()),
15237            "inert" => self.inert = Some(value.into()),
15238            "inputmode" => self.inputmode = Some(value.into()),
15239            "is" => self.is = Some(value.into()),
15240            "itemid" => self.itemid = Some(value.into()),
15241            "itemprop" => self.itemprop = Some(value.into()),
15242            "itemref" => self.itemref = Some(value.into()),
15243            "itemscope" => self.itemscope = Some(value.into()),
15244            "itemtype" => self.itemtype = Some(value.into()),
15245            "lang" => self.lang = Some(value.into()),
15246            "nonce" => self.nonce = Some(value.into()),
15247            "part" => self.part = Some(value.into()),
15248            "popover" => self.popover = Some(value.into()),
15249            "role" => self.role = Some(value.into()),
15250            "slot" => self.slot = Some(value.into()),
15251            "spellcheck" => self.spellcheck = Some(value.into()),
15252            "style" => self.style = Some(value.into()),
15253            "tabindex" => self.tabindex = Some(value.into()),
15254            "title" => self.title = Some(value.into()),
15255            "translate" => self.translate = Some(value.into()),
15256            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
15257            #[cfg(feature = "alloc")]
15258            _ => {
15259                #[allow(clippy::useless_conversion)]
15260                self.extra.insert(name.into(), value.into());
15261            }
15262            #[cfg(not(feature = "alloc"))]
15263            _ => {}
15264        }
15265    }
15266}
15267/// The <strong><code>&lt;pre&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents preformatted text which is to be presented exactly as written in the HTML file. The text is typically rendered using a non-proportional, or <a href="https://en.wikipedia.org/wiki/Monospaced_font" class="external" target="_blank">monospaced</a>, font. Whitespace inside this element is displayed as written.
15268///
15269/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/pre>
15270
15271#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
15272pub struct Pre<'life> {
15273    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
15274    ///   
15275    pub accesskey: core::option::Option<AttributeValue<'life>>,
15276    ///
15277    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
15278    ///     <ul>
15279    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
15280    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
15281    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
15282    ///       <li><code>characters</code>, all letters should default to uppercase</li>
15283    ///     </ul>
15284    ///   
15285    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
15286    ///
15287    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
15288    ///   
15289    pub autofocus: core::option::Option<AttributeValue<'life>>,
15290    ///
15291    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
15292    ///   
15293    pub class: core::option::Option<AttributeValue<'life>>,
15294    ///
15295    ///     <p>Contains the <em>preferred</em> count of characters that a line should have. It was a non-standard synonym of <a href="#width"><code>width</code></a>. To achieve such an effect, use CSS <a href="/en-US/docs/Web/CSS/width"><code>width</code></a> instead.</p>
15296    ///   
15297    pub cols: core::option::Option<AttributeValue<'life>>,
15298    ///
15299    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
15300    ///     <ul>
15301    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
15302    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
15303    ///     </ul>
15304    ///   
15305    pub contenteditable: core::option::Option<AttributeValue<'life>>,
15306    ///
15307    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
15308    ///   
15309    pub contextmenu: core::option::Option<AttributeValue<'life>>,
15310    ///
15311    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
15312    ///   
15313    #[cfg(feature = "alloc")]
15314    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
15315    ///
15316    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
15317    ///     <ul>
15318    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
15319    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
15320    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
15321    ///     </ul>
15322    ///   
15323    pub dir: core::option::Option<AttributeValue<'life>>,
15324    ///
15325    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
15326    ///     <ul>
15327    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
15328    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
15329    ///     </ul>
15330    ///   
15331    pub draggable: core::option::Option<AttributeValue<'life>>,
15332    ///
15333    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
15334    ///   
15335    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
15336    ///
15337    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
15338    ///   
15339    pub exportparts: core::option::Option<AttributeValue<'life>>,
15340    /// /// Extra attributes of the element.
15341
15342    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
15343    #[cfg(feature = "alloc")]
15344    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
15345    ///
15346    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
15347    ///   
15348    pub hidden: core::option::Option<AttributeValue<'life>>,
15349    ///
15350    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
15351    ///   
15352    pub id: core::option::Option<AttributeValue<'life>>,
15353    ///
15354    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
15355    ///   
15356    pub inert: core::option::Option<AttributeValue<'life>>,
15357    ///
15358    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
15359    ///   
15360    pub inputmode: core::option::Option<AttributeValue<'life>>,
15361    ///
15362    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
15363    ///   
15364    pub is: core::option::Option<AttributeValue<'life>>,
15365    ///
15366    ///     <p>The unique, global identifier of an item.</p>
15367    ///   
15368    pub itemid: core::option::Option<AttributeValue<'life>>,
15369    ///
15370    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
15371    ///   
15372    pub itemprop: core::option::Option<AttributeValue<'life>>,
15373    ///
15374    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
15375    ///   
15376    pub itemref: core::option::Option<AttributeValue<'life>>,
15377    ///
15378    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
15379    ///   
15380    pub itemscope: core::option::Option<AttributeValue<'life>>,
15381    ///
15382    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
15383    ///   
15384    pub itemtype: core::option::Option<AttributeValue<'life>>,
15385    ///
15386    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
15387    ///   
15388    pub lang: core::option::Option<AttributeValue<'life>>,
15389    ///
15390    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
15391    ///   
15392    pub nonce: core::option::Option<AttributeValue<'life>>,
15393    ///
15394    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
15395    ///   
15396    pub part: core::option::Option<AttributeValue<'life>>,
15397    ///
15398    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
15399    ///   
15400    pub popover: core::option::Option<AttributeValue<'life>>,
15401    ///
15402    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
15403    ///   
15404    pub role: core::option::Option<AttributeValue<'life>>,
15405    ///
15406    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
15407    ///   
15408    pub slot: core::option::Option<AttributeValue<'life>>,
15409    ///
15410    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
15411    ///     <ul>
15412    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
15413    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
15414    ///     </ul>
15415    ///   
15416    pub spellcheck: core::option::Option<AttributeValue<'life>>,
15417    ///
15418    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
15419    ///   
15420    pub style: core::option::Option<AttributeValue<'life>>,
15421    ///
15422    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
15423    ///     <ul>
15424    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
15425    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
15426    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
15427    ///     </ul>
15428    ///   
15429    pub tabindex: core::option::Option<AttributeValue<'life>>,
15430    ///
15431    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
15432    ///   
15433    pub title: core::option::Option<AttributeValue<'life>>,
15434    ///
15435    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
15436    ///     <ul>
15437    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
15438    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
15439    ///     </ul>
15440    ///   
15441    pub translate: core::option::Option<AttributeValue<'life>>,
15442    ///
15443    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
15444    ///     <ul>
15445    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
15446    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
15447    ///     </ul>
15448    ///   
15449    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
15450    ///
15451    ///     <p>Contains the <em>preferred</em> count of characters that a line should have. Though technically still implemented, this attribute has no visual effect; to achieve such an effect, use CSS <a href="/en-US/docs/Web/CSS/width"><code>width</code></a> instead.</p>
15452    ///   
15453    pub width: core::option::Option<AttributeValue<'life>>,
15454    ///
15455    ///     <p>Is a <em>hint</em> indicating how the overflow must happen. In modern browser this hint is ignored and no visual effect results in its present; to achieve such an effect, use CSS <a href="/en-US/docs/Web/CSS/white-space"><code>white-space</code></a> instead.</p>
15456    ///   
15457    pub wrap: core::option::Option<AttributeValue<'life>>,
15458}
15459#[allow(deprecated)]
15460
15461impl<'life> Pre<'life> {
15462    /// Get the tag name of the element.
15463    /// This is the same as the name of the struct, in kebab-case.
15464    pub fn tag() -> &'static str {
15465        "pre"
15466    }
15467    /// Sets an attribute of the element.
15468    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
15469    /// If the `alloc` feature is disabled, this function will silently fail.
15470    ///
15471    /// # Note
15472    /// This only works when the attribute is lowercase.
15473    pub fn set_attr(
15474        &mut self,
15475        name: &'life str,
15476        value: impl core::convert::Into<AttributeValue<'life>>,
15477    ) {
15478        match name {
15479            "accesskey" => self.accesskey = Some(value.into()),
15480            "autocapitalize" => self.autocapitalize = Some(value.into()),
15481            "autofocus" => self.autofocus = Some(value.into()),
15482            "class" => self.class = Some(value.into()),
15483            "cols" => self.cols = Some(value.into()),
15484            "contenteditable" => self.contenteditable = Some(value.into()),
15485            "contextmenu" => self.contextmenu = Some(value.into()),
15486            "dir" => self.dir = Some(value.into()),
15487            "draggable" => self.draggable = Some(value.into()),
15488            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
15489            "exportparts" => self.exportparts = Some(value.into()),
15490            "hidden" => self.hidden = Some(value.into()),
15491            "id" => self.id = Some(value.into()),
15492            "inert" => self.inert = Some(value.into()),
15493            "inputmode" => self.inputmode = Some(value.into()),
15494            "is" => self.is = Some(value.into()),
15495            "itemid" => self.itemid = Some(value.into()),
15496            "itemprop" => self.itemprop = Some(value.into()),
15497            "itemref" => self.itemref = Some(value.into()),
15498            "itemscope" => self.itemscope = Some(value.into()),
15499            "itemtype" => self.itemtype = Some(value.into()),
15500            "lang" => self.lang = Some(value.into()),
15501            "nonce" => self.nonce = Some(value.into()),
15502            "part" => self.part = Some(value.into()),
15503            "popover" => self.popover = Some(value.into()),
15504            "role" => self.role = Some(value.into()),
15505            "slot" => self.slot = Some(value.into()),
15506            "spellcheck" => self.spellcheck = Some(value.into()),
15507            "style" => self.style = Some(value.into()),
15508            "tabindex" => self.tabindex = Some(value.into()),
15509            "title" => self.title = Some(value.into()),
15510            "translate" => self.translate = Some(value.into()),
15511            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
15512            "width" => self.width = Some(value.into()),
15513            "wrap" => self.wrap = Some(value.into()),
15514            #[cfg(feature = "alloc")]
15515            _ => {
15516                #[allow(clippy::useless_conversion)]
15517                self.extra.insert(name.into(), value.into());
15518            }
15519            #[cfg(not(feature = "alloc"))]
15520            _ => {}
15521        }
15522    }
15523}
15524/// The <strong><code>&lt;pre&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents preformatted text which is to be presented exactly as written in the HTML file. The text is typically rendered using a non-proportional, or <a href="https://en.wikipedia.org/wiki/Monospaced_font" class="external" target="_blank">monospaced</a>, font. Whitespace inside this element is displayed as written.
15525///
15526/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/pre>
15527
15528#[cfg(feature = "alloc")]
15529#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
15530pub struct PreOwned {
15531    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
15532    ///   
15533    pub accesskey: core::option::Option<AttributeValueOwned>,
15534    ///
15535    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
15536    ///     <ul>
15537    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
15538    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
15539    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
15540    ///       <li><code>characters</code>, all letters should default to uppercase</li>
15541    ///     </ul>
15542    ///   
15543    pub autocapitalize: core::option::Option<AttributeValueOwned>,
15544    ///
15545    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
15546    ///   
15547    pub autofocus: core::option::Option<AttributeValueOwned>,
15548    ///
15549    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
15550    ///   
15551    pub class: core::option::Option<AttributeValueOwned>,
15552    ///
15553    ///     <p>Contains the <em>preferred</em> count of characters that a line should have. It was a non-standard synonym of <a href="#width"><code>width</code></a>. To achieve such an effect, use CSS <a href="/en-US/docs/Web/CSS/width"><code>width</code></a> instead.</p>
15554    ///   
15555    pub cols: core::option::Option<AttributeValueOwned>,
15556    ///
15557    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
15558    ///     <ul>
15559    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
15560    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
15561    ///     </ul>
15562    ///   
15563    pub contenteditable: core::option::Option<AttributeValueOwned>,
15564    ///
15565    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
15566    ///   
15567    pub contextmenu: core::option::Option<AttributeValueOwned>,
15568    ///
15569    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
15570    ///   
15571    #[cfg(feature = "alloc")]
15572    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
15573    ///
15574    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
15575    ///     <ul>
15576    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
15577    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
15578    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
15579    ///     </ul>
15580    ///   
15581    pub dir: core::option::Option<AttributeValueOwned>,
15582    ///
15583    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
15584    ///     <ul>
15585    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
15586    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
15587    ///     </ul>
15588    ///   
15589    pub draggable: core::option::Option<AttributeValueOwned>,
15590    ///
15591    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
15592    ///   
15593    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
15594    ///
15595    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
15596    ///   
15597    pub exportparts: core::option::Option<AttributeValueOwned>,
15598    /// /// Extra attributes of the element.
15599
15600    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
15601    #[cfg(feature = "alloc")]
15602    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
15603    ///
15604    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
15605    ///   
15606    pub hidden: core::option::Option<AttributeValueOwned>,
15607    ///
15608    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
15609    ///   
15610    pub id: core::option::Option<AttributeValueOwned>,
15611    ///
15612    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
15613    ///   
15614    pub inert: core::option::Option<AttributeValueOwned>,
15615    ///
15616    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
15617    ///   
15618    pub inputmode: core::option::Option<AttributeValueOwned>,
15619    ///
15620    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
15621    ///   
15622    pub is: core::option::Option<AttributeValueOwned>,
15623    ///
15624    ///     <p>The unique, global identifier of an item.</p>
15625    ///   
15626    pub itemid: core::option::Option<AttributeValueOwned>,
15627    ///
15628    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
15629    ///   
15630    pub itemprop: core::option::Option<AttributeValueOwned>,
15631    ///
15632    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
15633    ///   
15634    pub itemref: core::option::Option<AttributeValueOwned>,
15635    ///
15636    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
15637    ///   
15638    pub itemscope: core::option::Option<AttributeValueOwned>,
15639    ///
15640    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
15641    ///   
15642    pub itemtype: core::option::Option<AttributeValueOwned>,
15643    ///
15644    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
15645    ///   
15646    pub lang: core::option::Option<AttributeValueOwned>,
15647    ///
15648    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
15649    ///   
15650    pub nonce: core::option::Option<AttributeValueOwned>,
15651    ///
15652    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
15653    ///   
15654    pub part: core::option::Option<AttributeValueOwned>,
15655    ///
15656    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
15657    ///   
15658    pub popover: core::option::Option<AttributeValueOwned>,
15659    ///
15660    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
15661    ///   
15662    pub role: core::option::Option<AttributeValueOwned>,
15663    ///
15664    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
15665    ///   
15666    pub slot: core::option::Option<AttributeValueOwned>,
15667    ///
15668    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
15669    ///     <ul>
15670    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
15671    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
15672    ///     </ul>
15673    ///   
15674    pub spellcheck: core::option::Option<AttributeValueOwned>,
15675    ///
15676    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
15677    ///   
15678    pub style: core::option::Option<AttributeValueOwned>,
15679    ///
15680    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
15681    ///     <ul>
15682    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
15683    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
15684    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
15685    ///     </ul>
15686    ///   
15687    pub tabindex: core::option::Option<AttributeValueOwned>,
15688    ///
15689    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
15690    ///   
15691    pub title: core::option::Option<AttributeValueOwned>,
15692    ///
15693    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
15694    ///     <ul>
15695    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
15696    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
15697    ///     </ul>
15698    ///   
15699    pub translate: core::option::Option<AttributeValueOwned>,
15700    ///
15701    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
15702    ///     <ul>
15703    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
15704    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
15705    ///     </ul>
15706    ///   
15707    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
15708    ///
15709    ///     <p>Contains the <em>preferred</em> count of characters that a line should have. Though technically still implemented, this attribute has no visual effect; to achieve such an effect, use CSS <a href="/en-US/docs/Web/CSS/width"><code>width</code></a> instead.</p>
15710    ///   
15711    pub width: core::option::Option<AttributeValueOwned>,
15712    ///
15713    ///     <p>Is a <em>hint</em> indicating how the overflow must happen. In modern browser this hint is ignored and no visual effect results in its present; to achieve such an effect, use CSS <a href="/en-US/docs/Web/CSS/white-space"><code>white-space</code></a> instead.</p>
15714    ///   
15715    pub wrap: core::option::Option<AttributeValueOwned>,
15716}
15717#[allow(deprecated)]
15718#[cfg(feature = "alloc")]
15719impl PreOwned {
15720    /// Get the tag name of the element.
15721    /// This is the same as the name of the struct, in kebab-case.
15722    pub fn tag() -> &'static str {
15723        "pre"
15724    }
15725    /// Sets an attribute of the element.
15726    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
15727    /// If the `alloc` feature is disabled, this function will silently fail.
15728    ///
15729    /// # Note
15730    /// This only works when the attribute is lowercase.
15731    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
15732        match name {
15733            "accesskey" => self.accesskey = Some(value.into()),
15734            "autocapitalize" => self.autocapitalize = Some(value.into()),
15735            "autofocus" => self.autofocus = Some(value.into()),
15736            "class" => self.class = Some(value.into()),
15737            "cols" => self.cols = Some(value.into()),
15738            "contenteditable" => self.contenteditable = Some(value.into()),
15739            "contextmenu" => self.contextmenu = Some(value.into()),
15740            "dir" => self.dir = Some(value.into()),
15741            "draggable" => self.draggable = Some(value.into()),
15742            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
15743            "exportparts" => self.exportparts = Some(value.into()),
15744            "hidden" => self.hidden = Some(value.into()),
15745            "id" => self.id = Some(value.into()),
15746            "inert" => self.inert = Some(value.into()),
15747            "inputmode" => self.inputmode = Some(value.into()),
15748            "is" => self.is = Some(value.into()),
15749            "itemid" => self.itemid = Some(value.into()),
15750            "itemprop" => self.itemprop = Some(value.into()),
15751            "itemref" => self.itemref = Some(value.into()),
15752            "itemscope" => self.itemscope = Some(value.into()),
15753            "itemtype" => self.itemtype = Some(value.into()),
15754            "lang" => self.lang = Some(value.into()),
15755            "nonce" => self.nonce = Some(value.into()),
15756            "part" => self.part = Some(value.into()),
15757            "popover" => self.popover = Some(value.into()),
15758            "role" => self.role = Some(value.into()),
15759            "slot" => self.slot = Some(value.into()),
15760            "spellcheck" => self.spellcheck = Some(value.into()),
15761            "style" => self.style = Some(value.into()),
15762            "tabindex" => self.tabindex = Some(value.into()),
15763            "title" => self.title = Some(value.into()),
15764            "translate" => self.translate = Some(value.into()),
15765            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
15766            "width" => self.width = Some(value.into()),
15767            "wrap" => self.wrap = Some(value.into()),
15768            #[cfg(feature = "alloc")]
15769            _ => {
15770                #[allow(clippy::useless_conversion)]
15771                self.extra.insert(name.into(), value.into());
15772            }
15773            #[cfg(not(feature = "alloc"))]
15774            _ => {}
15775        }
15776    }
15777}
15778/// The <strong><code>&lt;ul&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents an unordered list of items, typically rendered as a bulleted list.
15779///
15780/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ul>
15781
15782#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
15783pub struct Ul<'life> {
15784    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
15785    ///   
15786    pub accesskey: core::option::Option<AttributeValue<'life>>,
15787    ///
15788    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
15789    ///     <ul>
15790    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
15791    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
15792    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
15793    ///       <li><code>characters</code>, all letters should default to uppercase</li>
15794    ///     </ul>
15795    ///   
15796    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
15797    ///
15798    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
15799    ///   
15800    pub autofocus: core::option::Option<AttributeValue<'life>>,
15801    ///
15802    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
15803    ///   
15804    pub class: core::option::Option<AttributeValue<'life>>,
15805    ///
15806    ///     <p>This Boolean attribute hints that the list should be rendered in a compact style. The interpretation of this attribute depends on the <a href="/en-US/docs/Glossary/User_agent">user agent</a>, and it doesn't work in all browsers.</p>
15807    ///     <div class="notecard warning" id="sect1">
15808    ///       <p><strong>Warning:</strong> Do not use this attribute, as it has been deprecated: use <a href="/en-US/docs/Web/CSS">CSS</a> instead. To give a similar effect as the <code>compact</code> attribute, the CSS property <a href="/en-US/docs/Web/CSS/line-height"><code>line-height</code></a> can be used with a value of <code>80%</code>.</p>
15809    ///     </div>
15810    ///   
15811    pub compact: core::option::Option<AttributeValue<'life>>,
15812    ///
15813    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
15814    ///     <ul>
15815    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
15816    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
15817    ///     </ul>
15818    ///   
15819    pub contenteditable: core::option::Option<AttributeValue<'life>>,
15820    ///
15821    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
15822    ///   
15823    pub contextmenu: core::option::Option<AttributeValue<'life>>,
15824    ///
15825    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
15826    ///   
15827    #[cfg(feature = "alloc")]
15828    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
15829    ///
15830    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
15831    ///     <ul>
15832    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
15833    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
15834    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
15835    ///     </ul>
15836    ///   
15837    pub dir: core::option::Option<AttributeValue<'life>>,
15838    ///
15839    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
15840    ///     <ul>
15841    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
15842    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
15843    ///     </ul>
15844    ///   
15845    pub draggable: core::option::Option<AttributeValue<'life>>,
15846    ///
15847    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
15848    ///   
15849    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
15850    ///
15851    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
15852    ///   
15853    pub exportparts: core::option::Option<AttributeValue<'life>>,
15854    /// /// Extra attributes of the element.
15855
15856    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
15857    #[cfg(feature = "alloc")]
15858    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
15859    ///
15860    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
15861    ///   
15862    pub hidden: core::option::Option<AttributeValue<'life>>,
15863    ///
15864    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
15865    ///   
15866    pub id: core::option::Option<AttributeValue<'life>>,
15867    ///
15868    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
15869    ///   
15870    pub inert: core::option::Option<AttributeValue<'life>>,
15871    ///
15872    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
15873    ///   
15874    pub inputmode: core::option::Option<AttributeValue<'life>>,
15875    ///
15876    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
15877    ///   
15878    pub is: core::option::Option<AttributeValue<'life>>,
15879    ///
15880    ///     <p>The unique, global identifier of an item.</p>
15881    ///   
15882    pub itemid: core::option::Option<AttributeValue<'life>>,
15883    ///
15884    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
15885    ///   
15886    pub itemprop: core::option::Option<AttributeValue<'life>>,
15887    ///
15888    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
15889    ///   
15890    pub itemref: core::option::Option<AttributeValue<'life>>,
15891    ///
15892    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
15893    ///   
15894    pub itemscope: core::option::Option<AttributeValue<'life>>,
15895    ///
15896    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
15897    ///   
15898    pub itemtype: core::option::Option<AttributeValue<'life>>,
15899    ///
15900    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
15901    ///   
15902    pub lang: core::option::Option<AttributeValue<'life>>,
15903    ///
15904    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
15905    ///   
15906    pub nonce: core::option::Option<AttributeValue<'life>>,
15907    ///
15908    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
15909    ///   
15910    pub part: core::option::Option<AttributeValue<'life>>,
15911    ///
15912    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
15913    ///   
15914    pub popover: core::option::Option<AttributeValue<'life>>,
15915    ///
15916    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
15917    ///   
15918    pub role: core::option::Option<AttributeValue<'life>>,
15919    ///
15920    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
15921    ///   
15922    pub slot: core::option::Option<AttributeValue<'life>>,
15923    ///
15924    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
15925    ///     <ul>
15926    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
15927    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
15928    ///     </ul>
15929    ///   
15930    pub spellcheck: core::option::Option<AttributeValue<'life>>,
15931    ///
15932    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
15933    ///   
15934    pub style: core::option::Option<AttributeValue<'life>>,
15935    ///
15936    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
15937    ///     <ul>
15938    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
15939    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
15940    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
15941    ///     </ul>
15942    ///   
15943    pub tabindex: core::option::Option<AttributeValue<'life>>,
15944    ///
15945    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
15946    ///   
15947    pub title: core::option::Option<AttributeValue<'life>>,
15948    ///
15949    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
15950    ///     <ul>
15951    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
15952    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
15953    ///     </ul>
15954    ///   
15955    pub translate: core::option::Option<AttributeValue<'life>>,
15956    ///
15957    ///     <p>This attribute sets the bullet style for the list. The values defined under HTML3.2 and the transitional version of HTML 4.0/4.01 are:</p>
15958    ///     <ul>
15959    ///       <li><code>circle</code></li>
15960    ///       <li><code>disc</code></li>
15961    ///       <li><code>square</code></li>
15962    ///     </ul>
15963    ///     <p>A fourth bullet type has been defined in the WebTV interface, but not all browsers support it: <code>triangle</code>.</p>
15964    ///     <p>If not present and if no <a href="/en-US/docs/Web/CSS">CSS</a> <a href="/en-US/docs/Web/CSS/list-style-type"><code>list-style-type</code></a> property applies to the element, the user agent selects a bullet type depending on the nesting level of the list.</p>
15965    ///     <div id="sect2" class="notecard warning">
15966    ///       <p><strong>Warning:</strong> Do not use this attribute, as it has been deprecated; use the <a href="/en-US/docs/Web/CSS">CSS</a> <a href="/en-US/docs/Web/CSS/list-style-type"><code>list-style-type</code></a> property instead.</p>
15967    ///     </div>
15968    ///   
15969    pub type_: core::option::Option<AttributeValue<'life>>,
15970    ///
15971    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
15972    ///     <ul>
15973    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
15974    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
15975    ///     </ul>
15976    ///   
15977    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
15978}
15979#[allow(deprecated)]
15980
15981impl<'life> Ul<'life> {
15982    /// Get the tag name of the element.
15983    /// This is the same as the name of the struct, in kebab-case.
15984    pub fn tag() -> &'static str {
15985        "ul"
15986    }
15987    /// Sets an attribute of the element.
15988    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
15989    /// If the `alloc` feature is disabled, this function will silently fail.
15990    ///
15991    /// # Note
15992    /// This only works when the attribute is lowercase.
15993    pub fn set_attr(
15994        &mut self,
15995        name: &'life str,
15996        value: impl core::convert::Into<AttributeValue<'life>>,
15997    ) {
15998        match name {
15999            "accesskey" => self.accesskey = Some(value.into()),
16000            "autocapitalize" => self.autocapitalize = Some(value.into()),
16001            "autofocus" => self.autofocus = Some(value.into()),
16002            "class" => self.class = Some(value.into()),
16003            "compact" => self.compact = Some(value.into()),
16004            "contenteditable" => self.contenteditable = Some(value.into()),
16005            "contextmenu" => self.contextmenu = Some(value.into()),
16006            "dir" => self.dir = Some(value.into()),
16007            "draggable" => self.draggable = Some(value.into()),
16008            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
16009            "exportparts" => self.exportparts = Some(value.into()),
16010            "hidden" => self.hidden = Some(value.into()),
16011            "id" => self.id = Some(value.into()),
16012            "inert" => self.inert = Some(value.into()),
16013            "inputmode" => self.inputmode = Some(value.into()),
16014            "is" => self.is = Some(value.into()),
16015            "itemid" => self.itemid = Some(value.into()),
16016            "itemprop" => self.itemprop = Some(value.into()),
16017            "itemref" => self.itemref = Some(value.into()),
16018            "itemscope" => self.itemscope = Some(value.into()),
16019            "itemtype" => self.itemtype = Some(value.into()),
16020            "lang" => self.lang = Some(value.into()),
16021            "nonce" => self.nonce = Some(value.into()),
16022            "part" => self.part = Some(value.into()),
16023            "popover" => self.popover = Some(value.into()),
16024            "role" => self.role = Some(value.into()),
16025            "slot" => self.slot = Some(value.into()),
16026            "spellcheck" => self.spellcheck = Some(value.into()),
16027            "style" => self.style = Some(value.into()),
16028            "tabindex" => self.tabindex = Some(value.into()),
16029            "title" => self.title = Some(value.into()),
16030            "translate" => self.translate = Some(value.into()),
16031            "type_" => self.type_ = Some(value.into()),
16032            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
16033            #[cfg(feature = "alloc")]
16034            _ => {
16035                #[allow(clippy::useless_conversion)]
16036                self.extra.insert(name.into(), value.into());
16037            }
16038            #[cfg(not(feature = "alloc"))]
16039            _ => {}
16040        }
16041    }
16042}
16043/// The <strong><code>&lt;ul&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents an unordered list of items, typically rendered as a bulleted list.
16044///
16045/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ul>
16046
16047#[cfg(feature = "alloc")]
16048#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
16049pub struct UlOwned {
16050    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
16051    ///   
16052    pub accesskey: core::option::Option<AttributeValueOwned>,
16053    ///
16054    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
16055    ///     <ul>
16056    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
16057    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
16058    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
16059    ///       <li><code>characters</code>, all letters should default to uppercase</li>
16060    ///     </ul>
16061    ///   
16062    pub autocapitalize: core::option::Option<AttributeValueOwned>,
16063    ///
16064    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
16065    ///   
16066    pub autofocus: core::option::Option<AttributeValueOwned>,
16067    ///
16068    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
16069    ///   
16070    pub class: core::option::Option<AttributeValueOwned>,
16071    ///
16072    ///     <p>This Boolean attribute hints that the list should be rendered in a compact style. The interpretation of this attribute depends on the <a href="/en-US/docs/Glossary/User_agent">user agent</a>, and it doesn't work in all browsers.</p>
16073    ///     <div class="notecard warning" id="sect1">
16074    ///       <p><strong>Warning:</strong> Do not use this attribute, as it has been deprecated: use <a href="/en-US/docs/Web/CSS">CSS</a> instead. To give a similar effect as the <code>compact</code> attribute, the CSS property <a href="/en-US/docs/Web/CSS/line-height"><code>line-height</code></a> can be used with a value of <code>80%</code>.</p>
16075    ///     </div>
16076    ///   
16077    pub compact: core::option::Option<AttributeValueOwned>,
16078    ///
16079    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
16080    ///     <ul>
16081    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
16082    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
16083    ///     </ul>
16084    ///   
16085    pub contenteditable: core::option::Option<AttributeValueOwned>,
16086    ///
16087    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
16088    ///   
16089    pub contextmenu: core::option::Option<AttributeValueOwned>,
16090    ///
16091    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
16092    ///   
16093    #[cfg(feature = "alloc")]
16094    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
16095    ///
16096    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
16097    ///     <ul>
16098    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
16099    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
16100    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
16101    ///     </ul>
16102    ///   
16103    pub dir: core::option::Option<AttributeValueOwned>,
16104    ///
16105    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
16106    ///     <ul>
16107    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
16108    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
16109    ///     </ul>
16110    ///   
16111    pub draggable: core::option::Option<AttributeValueOwned>,
16112    ///
16113    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
16114    ///   
16115    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
16116    ///
16117    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
16118    ///   
16119    pub exportparts: core::option::Option<AttributeValueOwned>,
16120    /// /// Extra attributes of the element.
16121
16122    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
16123    #[cfg(feature = "alloc")]
16124    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
16125    ///
16126    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
16127    ///   
16128    pub hidden: core::option::Option<AttributeValueOwned>,
16129    ///
16130    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
16131    ///   
16132    pub id: core::option::Option<AttributeValueOwned>,
16133    ///
16134    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
16135    ///   
16136    pub inert: core::option::Option<AttributeValueOwned>,
16137    ///
16138    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
16139    ///   
16140    pub inputmode: core::option::Option<AttributeValueOwned>,
16141    ///
16142    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
16143    ///   
16144    pub is: core::option::Option<AttributeValueOwned>,
16145    ///
16146    ///     <p>The unique, global identifier of an item.</p>
16147    ///   
16148    pub itemid: core::option::Option<AttributeValueOwned>,
16149    ///
16150    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
16151    ///   
16152    pub itemprop: core::option::Option<AttributeValueOwned>,
16153    ///
16154    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
16155    ///   
16156    pub itemref: core::option::Option<AttributeValueOwned>,
16157    ///
16158    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
16159    ///   
16160    pub itemscope: core::option::Option<AttributeValueOwned>,
16161    ///
16162    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
16163    ///   
16164    pub itemtype: core::option::Option<AttributeValueOwned>,
16165    ///
16166    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
16167    ///   
16168    pub lang: core::option::Option<AttributeValueOwned>,
16169    ///
16170    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
16171    ///   
16172    pub nonce: core::option::Option<AttributeValueOwned>,
16173    ///
16174    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
16175    ///   
16176    pub part: core::option::Option<AttributeValueOwned>,
16177    ///
16178    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
16179    ///   
16180    pub popover: core::option::Option<AttributeValueOwned>,
16181    ///
16182    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
16183    ///   
16184    pub role: core::option::Option<AttributeValueOwned>,
16185    ///
16186    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
16187    ///   
16188    pub slot: core::option::Option<AttributeValueOwned>,
16189    ///
16190    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
16191    ///     <ul>
16192    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
16193    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
16194    ///     </ul>
16195    ///   
16196    pub spellcheck: core::option::Option<AttributeValueOwned>,
16197    ///
16198    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
16199    ///   
16200    pub style: core::option::Option<AttributeValueOwned>,
16201    ///
16202    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
16203    ///     <ul>
16204    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
16205    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
16206    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
16207    ///     </ul>
16208    ///   
16209    pub tabindex: core::option::Option<AttributeValueOwned>,
16210    ///
16211    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
16212    ///   
16213    pub title: core::option::Option<AttributeValueOwned>,
16214    ///
16215    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
16216    ///     <ul>
16217    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
16218    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
16219    ///     </ul>
16220    ///   
16221    pub translate: core::option::Option<AttributeValueOwned>,
16222    ///
16223    ///     <p>This attribute sets the bullet style for the list. The values defined under HTML3.2 and the transitional version of HTML 4.0/4.01 are:</p>
16224    ///     <ul>
16225    ///       <li><code>circle</code></li>
16226    ///       <li><code>disc</code></li>
16227    ///       <li><code>square</code></li>
16228    ///     </ul>
16229    ///     <p>A fourth bullet type has been defined in the WebTV interface, but not all browsers support it: <code>triangle</code>.</p>
16230    ///     <p>If not present and if no <a href="/en-US/docs/Web/CSS">CSS</a> <a href="/en-US/docs/Web/CSS/list-style-type"><code>list-style-type</code></a> property applies to the element, the user agent selects a bullet type depending on the nesting level of the list.</p>
16231    ///     <div id="sect2" class="notecard warning">
16232    ///       <p><strong>Warning:</strong> Do not use this attribute, as it has been deprecated; use the <a href="/en-US/docs/Web/CSS">CSS</a> <a href="/en-US/docs/Web/CSS/list-style-type"><code>list-style-type</code></a> property instead.</p>
16233    ///     </div>
16234    ///   
16235    pub type_: core::option::Option<AttributeValueOwned>,
16236    ///
16237    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
16238    ///     <ul>
16239    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
16240    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
16241    ///     </ul>
16242    ///   
16243    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
16244}
16245#[allow(deprecated)]
16246#[cfg(feature = "alloc")]
16247impl UlOwned {
16248    /// Get the tag name of the element.
16249    /// This is the same as the name of the struct, in kebab-case.
16250    pub fn tag() -> &'static str {
16251        "ul"
16252    }
16253    /// Sets an attribute of the element.
16254    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
16255    /// If the `alloc` feature is disabled, this function will silently fail.
16256    ///
16257    /// # Note
16258    /// This only works when the attribute is lowercase.
16259    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
16260        match name {
16261            "accesskey" => self.accesskey = Some(value.into()),
16262            "autocapitalize" => self.autocapitalize = Some(value.into()),
16263            "autofocus" => self.autofocus = Some(value.into()),
16264            "class" => self.class = Some(value.into()),
16265            "compact" => self.compact = Some(value.into()),
16266            "contenteditable" => self.contenteditable = Some(value.into()),
16267            "contextmenu" => self.contextmenu = Some(value.into()),
16268            "dir" => self.dir = Some(value.into()),
16269            "draggable" => self.draggable = Some(value.into()),
16270            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
16271            "exportparts" => self.exportparts = Some(value.into()),
16272            "hidden" => self.hidden = Some(value.into()),
16273            "id" => self.id = Some(value.into()),
16274            "inert" => self.inert = Some(value.into()),
16275            "inputmode" => self.inputmode = Some(value.into()),
16276            "is" => self.is = Some(value.into()),
16277            "itemid" => self.itemid = Some(value.into()),
16278            "itemprop" => self.itemprop = Some(value.into()),
16279            "itemref" => self.itemref = Some(value.into()),
16280            "itemscope" => self.itemscope = Some(value.into()),
16281            "itemtype" => self.itemtype = Some(value.into()),
16282            "lang" => self.lang = Some(value.into()),
16283            "nonce" => self.nonce = Some(value.into()),
16284            "part" => self.part = Some(value.into()),
16285            "popover" => self.popover = Some(value.into()),
16286            "role" => self.role = Some(value.into()),
16287            "slot" => self.slot = Some(value.into()),
16288            "spellcheck" => self.spellcheck = Some(value.into()),
16289            "style" => self.style = Some(value.into()),
16290            "tabindex" => self.tabindex = Some(value.into()),
16291            "title" => self.title = Some(value.into()),
16292            "translate" => self.translate = Some(value.into()),
16293            "type_" => self.type_ = Some(value.into()),
16294            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
16295            #[cfg(feature = "alloc")]
16296            _ => {
16297                #[allow(clippy::useless_conversion)]
16298                self.extra.insert(name.into(), value.into());
16299            }
16300            #[cfg(not(feature = "alloc"))]
16301            _ => {}
16302        }
16303    }
16304}
16305/// The <strong><code>&lt;a&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element (or <em>anchor</em> element), with <a href="#href">its <code>href</code> attribute</a>, creates a hyperlink to web pages, files, email addresses, locations in the same page, or anything else a URL can address.
16306///
16307/// Content within each <code>&lt;a&gt;</code> <em>should</em> indicate the link's destination. If the <code>href</code> attribute is present, pressing the enter key while focused on the <code>&lt;a&gt;</code> element will activate it.
16308///
16309/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a>
16310
16311#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
16312pub struct A<'life> {
16313    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
16314    ///   
16315    pub accesskey: core::option::Option<AttributeValue<'life>>,
16316    ///
16317    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
16318    ///     <ul>
16319    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
16320    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
16321    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
16322    ///       <li><code>characters</code>, all letters should default to uppercase</li>
16323    ///     </ul>
16324    ///   
16325    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
16326    ///
16327    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
16328    ///   
16329    pub autofocus: core::option::Option<AttributeValue<'life>>,
16330    ///
16331    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
16332    ///   
16333    pub class: core::option::Option<AttributeValue<'life>>,
16334    ///
16335    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
16336    ///     <ul>
16337    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
16338    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
16339    ///     </ul>
16340    ///   
16341    pub contenteditable: core::option::Option<AttributeValue<'life>>,
16342    ///
16343    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
16344    ///   
16345    pub contextmenu: core::option::Option<AttributeValue<'life>>,
16346    ///
16347    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
16348    ///   
16349    #[cfg(feature = "alloc")]
16350    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
16351    ///
16352    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
16353    ///     <ul>
16354    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
16355    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
16356    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
16357    ///     </ul>
16358    ///   
16359    pub dir: core::option::Option<AttributeValue<'life>>,
16360    ///
16361    ///     <p>Causes the browser to treat the linked URL as a download. Can be used with or without a <code>filename</code> value:</p>
16362    ///     <ul>
16363    ///       <li>Without a value, the browser will suggest a filename/extension, generated from various sources:
16364    ///         <ul>
16365    ///           <li>The <a href="/en-US/docs/Web/HTTP/Headers/Content-Disposition"><code>Content-Disposition</code></a> HTTP header</li>
16366    ///           <li>The final segment in the URL <a href="/en-US/docs/Web/API/URL/pathname">path</a></li>
16367    ///           <li>The <a href="/en-US/docs/Glossary/MIME_type">media type</a> (from the <a href="/en-US/docs/Web/HTTP/Headers/Content-Type"><code>Content-Type</code></a> header, the start of a <a href="/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs"><code>data:</code> URL</a>, or <a href="/en-US/docs/Web/API/Blob/type"><code>Blob.type</code></a> for a <a href="/en-US/docs/Web/API/URL/createObjectURL"><code>blob:</code> URL</a>)</li>
16368    ///         </ul>
16369    ///       </li>
16370    ///       <li><code>filename</code>: defining a value suggests it as the filename. <code>/</code> and <code>\</code> characters are converted to underscores (<code>_</code>). Filesystems may forbid other characters in filenames, so browsers will adjust the suggested name if necessary.</li>
16371    ///     </ul>
16372    ///     <div class="notecard note" id="sect1">
16373    ///       <p><strong>Note:</strong></p>
16374    ///       <ul>
16375    ///         <li><code>download</code> only works for <a href="/en-US/docs/Web/Security/Same-origin_policy">same-origin URLs</a>, or the <code>blob:</code> and <code>data:</code> schemes.</li>
16376    ///         <li>How browsers treat downloads varies by browser, user settings, and other factors. The user may be prompted before a download starts, or the file may be saved automatically, or it may open automatically, either in an external application or in the browser itself.</li>
16377    ///         <li>If the <code>Content-Disposition</code> header has different information from the <code>download</code> attribute, resulting behavior may differ:
16378    ///           <ul>
16379    ///             <li>If the header specifies a <code>filename</code>, it takes priority over a filename specified in the <code>download</code> attribute.</li>
16380    ///             <li>If the header specifies a disposition of <code>inline</code>, Chrome and Firefox prioritize the attribute and treat it as a download. Old Firefox versions (before 82) prioritize the header and will display the content inline.</li>
16381    ///           </ul>
16382    ///         </li>
16383    ///       </ul>
16384    ///     </div>
16385    ///   
16386    pub download: core::option::Option<AttributeValue<'life>>,
16387    ///
16388    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
16389    ///     <ul>
16390    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
16391    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
16392    ///     </ul>
16393    ///   
16394    pub draggable: core::option::Option<AttributeValue<'life>>,
16395    ///
16396    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
16397    ///   
16398    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
16399    ///
16400    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
16401    ///   
16402    pub exportparts: core::option::Option<AttributeValue<'life>>,
16403    /// /// Extra attributes of the element.
16404
16405    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
16406    #[cfg(feature = "alloc")]
16407    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
16408    ///
16409    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
16410    ///   
16411    pub hidden: core::option::Option<AttributeValue<'life>>,
16412    ///
16413    ///     <p>The URL that the hyperlink points to. Links are not restricted to HTTP-based URLs — they can use any URL scheme supported by browsers:</p>
16414    ///     <ul>
16415    ///       <li>Sections of a page with document fragments</li>
16416    ///       <li>Specific text portions with <a href="/en-US/docs/Web/Text_fragments">text fragments</a></li>
16417    ///       <li>Pieces of media files with media fragments</li>
16418    ///       <li>Telephone numbers with <code>tel:</code> URLs</li>
16419    ///       <li>Email addresses with <code>mailto:</code> URLs</li>
16420    ///       <li>While web browsers may not support other URL schemes, websites can with <a href="/en-US/docs/Web/API/Navigator/registerProtocolHandler"><code>registerProtocolHandler()</code></a></li>
16421    ///     </ul>
16422    ///   
16423    pub href: core::option::Option<AttributeValue<'life>>,
16424    ///
16425    ///     <p>Hints at the human language of the linked URL. No built-in functionality. Allowed values are the same as <a href="/en-US/docs/Web/HTML/Global_attributes/lang">the global <code>lang</code> attribute</a>.</p>
16426    ///   
16427    pub hreflang: core::option::Option<AttributeValue<'life>>,
16428    ///
16429    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
16430    ///   
16431    pub id: core::option::Option<AttributeValue<'life>>,
16432    ///
16433    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
16434    ///   
16435    pub inert: core::option::Option<AttributeValue<'life>>,
16436    ///
16437    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
16438    ///   
16439    pub inputmode: core::option::Option<AttributeValue<'life>>,
16440    ///
16441    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
16442    ///   
16443    pub is: core::option::Option<AttributeValue<'life>>,
16444    ///
16445    ///     <p>The unique, global identifier of an item.</p>
16446    ///   
16447    pub itemid: core::option::Option<AttributeValue<'life>>,
16448    ///
16449    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
16450    ///   
16451    pub itemprop: core::option::Option<AttributeValue<'life>>,
16452    ///
16453    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
16454    ///   
16455    pub itemref: core::option::Option<AttributeValue<'life>>,
16456    ///
16457    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
16458    ///   
16459    pub itemscope: core::option::Option<AttributeValue<'life>>,
16460    ///
16461    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
16462    ///   
16463    pub itemtype: core::option::Option<AttributeValue<'life>>,
16464    ///
16465    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
16466    ///   
16467    pub lang: core::option::Option<AttributeValue<'life>>,
16468    ///
16469    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
16470    ///   
16471    pub nonce: core::option::Option<AttributeValue<'life>>,
16472    ///
16473    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
16474    ///   
16475    pub part: core::option::Option<AttributeValue<'life>>,
16476    ///
16477    ///     <p>A space-separated list of URLs. When the link is followed, the browser will send <a href="/en-US/docs/Web/HTTP/Methods/POST"><code>POST</code></a> requests with the body <code>PING</code> to the URLs. Typically for tracking.</p>
16478    ///   
16479    pub ping: core::option::Option<AttributeValue<'life>>,
16480    ///
16481    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
16482    ///   
16483    pub popover: core::option::Option<AttributeValue<'life>>,
16484    ///
16485    ///     <p>How much of the <a href="/en-US/docs/Web/HTTP/Headers/Referer">referrer</a> to send when following the link.</p>
16486    ///     <ul>
16487    ///       <li><code>no-referrer</code>: The <a href="/en-US/docs/Web/HTTP/Headers/Referer"><code>Referer</code></a> header will not be sent.</li>
16488    ///       <li><code>no-referrer-when-downgrade</code>: The <a href="/en-US/docs/Web/HTTP/Headers/Referer"><code>Referer</code></a> header will not be sent to <a href="/en-US/docs/Glossary/Origin">origin</a>s without <a href="/en-US/docs/Glossary/TLS">TLS</a> (<a href="/en-US/docs/Glossary/HTTPS">HTTPS</a>).</li>
16489    ///       <li><code>origin</code>: The sent referrer will be limited to the origin of the referring page: its <a href="/en-US/docs/Learn/Common_questions/Web_mechanics/What_is_a_URL">scheme</a>, <a href="/en-US/docs/Glossary/Host">host</a>, and <a href="/en-US/docs/Glossary/Port">port</a>.</li>
16490    ///       <li><code>origin-when-cross-origin</code>: 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.</li>
16491    ///       <li><code>same-origin</code>: A referrer will be sent for <a href="/en-US/docs/Glossary/Same-origin_policy">same origin</a>, but cross-origin requests will contain no referrer information.</li>
16492    ///       <li><code>strict-origin</code>: 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).</li>
16493    ///       <li><code>strict-origin-when-cross-origin</code> (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).</li>
16494    ///       <li><code>unsafe-url</code>: The referrer will include the origin <em>and</em> the path (but not the <a href="/en-US/docs/Web/API/HTMLAnchorElement/hash">fragment</a>, <a href="/en-US/docs/Web/API/HTMLAnchorElement/password">password</a>, or <a href="/en-US/docs/Web/API/HTMLAnchorElement/username">username</a>). <strong>This value is unsafe</strong>, because it leaks origins and paths from TLS-protected resources to insecure origins.</li>
16495    ///     </ul>
16496    ///   
16497    pub referrerpolicy: core::option::Option<AttributeValue<'life>>,
16498    ///
16499    ///     <p>The relationship of the linked URL as space-separated link types.</p>
16500    ///   
16501    pub rel: core::option::Option<AttributeValue<'life>>,
16502    ///
16503    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
16504    ///   
16505    pub role: core::option::Option<AttributeValue<'life>>,
16506    ///
16507    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
16508    ///   
16509    pub slot: core::option::Option<AttributeValue<'life>>,
16510    ///
16511    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
16512    ///     <ul>
16513    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
16514    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
16515    ///     </ul>
16516    ///   
16517    pub spellcheck: core::option::Option<AttributeValue<'life>>,
16518    ///
16519    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
16520    ///   
16521    pub style: core::option::Option<AttributeValue<'life>>,
16522    ///
16523    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
16524    ///     <ul>
16525    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
16526    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
16527    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
16528    ///     </ul>
16529    ///   
16530    pub tabindex: core::option::Option<AttributeValue<'life>>,
16531    ///
16532    ///     <p>Where to display the linked URL, as the name for a <em>browsing context</em> (a tab, window, or <a href="/en-US/docs/Web/HTML/Element/iframe"><code>&lt;iframe&gt;</code></a>). The following keywords have special meanings for where to load the URL:</p>
16533    ///     <ul>
16534    ///       <li><code>_self</code>: the current browsing context. (Default)</li>
16535    ///       <li><code>_blank</code>: usually a new tab, but users can configure browsers to open a new window instead.</li>
16536    ///       <li><code>_parent</code>: the parent browsing context of the current one. If no parent, behaves as <code>_self</code>.</li>
16537    ///       <li><code>_top</code>: the topmost browsing context (the "highest" context that's an ancestor of the current one). If no ancestors, behaves as <code>_self</code>.</li>
16538    ///     </ul>
16539    ///     <div id="sect2" class="notecard note">
16540    ///       <p><strong>Note:</strong> Setting <code>target="_blank"</code> on <code>&lt;a&gt;</code> elements implicitly provides the same <code>rel</code> behavior as setting <a href="/en-US/docs/Web/HTML/Attributes/rel/noopener"><code>rel="noopener"</code></a> which does not set <code>window.opener</code>.</p>
16541    ///     </div>
16542    ///   
16543    pub target: core::option::Option<AttributeValue<'life>>,
16544    ///
16545    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
16546    ///   
16547    pub title: core::option::Option<AttributeValue<'life>>,
16548    ///
16549    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
16550    ///     <ul>
16551    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
16552    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
16553    ///     </ul>
16554    ///   
16555    pub translate: core::option::Option<AttributeValue<'life>>,
16556    ///
16557    ///     <p>Hints at the linked URL's format with a <a href="/en-US/docs/Glossary/MIME_type">MIME type</a>. No built-in functionality.</p>
16558    ///   
16559    pub type_: core::option::Option<AttributeValue<'life>>,
16560    ///
16561    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
16562    ///     <ul>
16563    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
16564    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
16565    ///     </ul>
16566    ///   
16567    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
16568}
16569#[allow(deprecated)]
16570
16571impl<'life> A<'life> {
16572    /// Get the tag name of the element.
16573    /// This is the same as the name of the struct, in kebab-case.
16574    pub fn tag() -> &'static str {
16575        "a"
16576    }
16577    /// Sets an attribute of the element.
16578    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
16579    /// If the `alloc` feature is disabled, this function will silently fail.
16580    ///
16581    /// # Note
16582    /// This only works when the attribute is lowercase.
16583    pub fn set_attr(
16584        &mut self,
16585        name: &'life str,
16586        value: impl core::convert::Into<AttributeValue<'life>>,
16587    ) {
16588        match name {
16589            "accesskey" => self.accesskey = Some(value.into()),
16590            "autocapitalize" => self.autocapitalize = Some(value.into()),
16591            "autofocus" => self.autofocus = Some(value.into()),
16592            "class" => self.class = Some(value.into()),
16593            "contenteditable" => self.contenteditable = Some(value.into()),
16594            "contextmenu" => self.contextmenu = Some(value.into()),
16595            "dir" => self.dir = Some(value.into()),
16596            "download" => self.download = Some(value.into()),
16597            "draggable" => self.draggable = Some(value.into()),
16598            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
16599            "exportparts" => self.exportparts = Some(value.into()),
16600            "hidden" => self.hidden = Some(value.into()),
16601            "href" => self.href = Some(value.into()),
16602            "hreflang" => self.hreflang = Some(value.into()),
16603            "id" => self.id = Some(value.into()),
16604            "inert" => self.inert = Some(value.into()),
16605            "inputmode" => self.inputmode = Some(value.into()),
16606            "is" => self.is = Some(value.into()),
16607            "itemid" => self.itemid = Some(value.into()),
16608            "itemprop" => self.itemprop = Some(value.into()),
16609            "itemref" => self.itemref = Some(value.into()),
16610            "itemscope" => self.itemscope = Some(value.into()),
16611            "itemtype" => self.itemtype = Some(value.into()),
16612            "lang" => self.lang = Some(value.into()),
16613            "nonce" => self.nonce = Some(value.into()),
16614            "part" => self.part = Some(value.into()),
16615            "ping" => self.ping = Some(value.into()),
16616            "popover" => self.popover = Some(value.into()),
16617            "referrerpolicy" => self.referrerpolicy = Some(value.into()),
16618            "rel" => self.rel = Some(value.into()),
16619            "role" => self.role = Some(value.into()),
16620            "slot" => self.slot = Some(value.into()),
16621            "spellcheck" => self.spellcheck = Some(value.into()),
16622            "style" => self.style = Some(value.into()),
16623            "tabindex" => self.tabindex = Some(value.into()),
16624            "target" => self.target = Some(value.into()),
16625            "title" => self.title = Some(value.into()),
16626            "translate" => self.translate = Some(value.into()),
16627            "type_" => self.type_ = Some(value.into()),
16628            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
16629            #[cfg(feature = "alloc")]
16630            _ => {
16631                #[allow(clippy::useless_conversion)]
16632                self.extra.insert(name.into(), value.into());
16633            }
16634            #[cfg(not(feature = "alloc"))]
16635            _ => {}
16636        }
16637    }
16638}
16639/// The <strong><code>&lt;a&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element (or <em>anchor</em> element), with <a href="#href">its <code>href</code> attribute</a>, creates a hyperlink to web pages, files, email addresses, locations in the same page, or anything else a URL can address.
16640///
16641/// Content within each <code>&lt;a&gt;</code> <em>should</em> indicate the link's destination. If the <code>href</code> attribute is present, pressing the enter key while focused on the <code>&lt;a&gt;</code> element will activate it.
16642///
16643/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a>
16644
16645#[cfg(feature = "alloc")]
16646#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
16647pub struct AOwned {
16648    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
16649    ///   
16650    pub accesskey: core::option::Option<AttributeValueOwned>,
16651    ///
16652    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
16653    ///     <ul>
16654    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
16655    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
16656    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
16657    ///       <li><code>characters</code>, all letters should default to uppercase</li>
16658    ///     </ul>
16659    ///   
16660    pub autocapitalize: core::option::Option<AttributeValueOwned>,
16661    ///
16662    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
16663    ///   
16664    pub autofocus: core::option::Option<AttributeValueOwned>,
16665    ///
16666    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
16667    ///   
16668    pub class: core::option::Option<AttributeValueOwned>,
16669    ///
16670    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
16671    ///     <ul>
16672    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
16673    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
16674    ///     </ul>
16675    ///   
16676    pub contenteditable: core::option::Option<AttributeValueOwned>,
16677    ///
16678    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
16679    ///   
16680    pub contextmenu: core::option::Option<AttributeValueOwned>,
16681    ///
16682    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
16683    ///   
16684    #[cfg(feature = "alloc")]
16685    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
16686    ///
16687    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
16688    ///     <ul>
16689    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
16690    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
16691    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
16692    ///     </ul>
16693    ///   
16694    pub dir: core::option::Option<AttributeValueOwned>,
16695    ///
16696    ///     <p>Causes the browser to treat the linked URL as a download. Can be used with or without a <code>filename</code> value:</p>
16697    ///     <ul>
16698    ///       <li>Without a value, the browser will suggest a filename/extension, generated from various sources:
16699    ///         <ul>
16700    ///           <li>The <a href="/en-US/docs/Web/HTTP/Headers/Content-Disposition"><code>Content-Disposition</code></a> HTTP header</li>
16701    ///           <li>The final segment in the URL <a href="/en-US/docs/Web/API/URL/pathname">path</a></li>
16702    ///           <li>The <a href="/en-US/docs/Glossary/MIME_type">media type</a> (from the <a href="/en-US/docs/Web/HTTP/Headers/Content-Type"><code>Content-Type</code></a> header, the start of a <a href="/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs"><code>data:</code> URL</a>, or <a href="/en-US/docs/Web/API/Blob/type"><code>Blob.type</code></a> for a <a href="/en-US/docs/Web/API/URL/createObjectURL"><code>blob:</code> URL</a>)</li>
16703    ///         </ul>
16704    ///       </li>
16705    ///       <li><code>filename</code>: defining a value suggests it as the filename. <code>/</code> and <code>\</code> characters are converted to underscores (<code>_</code>). Filesystems may forbid other characters in filenames, so browsers will adjust the suggested name if necessary.</li>
16706    ///     </ul>
16707    ///     <div class="notecard note" id="sect1">
16708    ///       <p><strong>Note:</strong></p>
16709    ///       <ul>
16710    ///         <li><code>download</code> only works for <a href="/en-US/docs/Web/Security/Same-origin_policy">same-origin URLs</a>, or the <code>blob:</code> and <code>data:</code> schemes.</li>
16711    ///         <li>How browsers treat downloads varies by browser, user settings, and other factors. The user may be prompted before a download starts, or the file may be saved automatically, or it may open automatically, either in an external application or in the browser itself.</li>
16712    ///         <li>If the <code>Content-Disposition</code> header has different information from the <code>download</code> attribute, resulting behavior may differ:
16713    ///           <ul>
16714    ///             <li>If the header specifies a <code>filename</code>, it takes priority over a filename specified in the <code>download</code> attribute.</li>
16715    ///             <li>If the header specifies a disposition of <code>inline</code>, Chrome and Firefox prioritize the attribute and treat it as a download. Old Firefox versions (before 82) prioritize the header and will display the content inline.</li>
16716    ///           </ul>
16717    ///         </li>
16718    ///       </ul>
16719    ///     </div>
16720    ///   
16721    pub download: core::option::Option<AttributeValueOwned>,
16722    ///
16723    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
16724    ///     <ul>
16725    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
16726    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
16727    ///     </ul>
16728    ///   
16729    pub draggable: core::option::Option<AttributeValueOwned>,
16730    ///
16731    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
16732    ///   
16733    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
16734    ///
16735    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
16736    ///   
16737    pub exportparts: core::option::Option<AttributeValueOwned>,
16738    /// /// Extra attributes of the element.
16739
16740    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
16741    #[cfg(feature = "alloc")]
16742    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
16743    ///
16744    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
16745    ///   
16746    pub hidden: core::option::Option<AttributeValueOwned>,
16747    ///
16748    ///     <p>The URL that the hyperlink points to. Links are not restricted to HTTP-based URLs — they can use any URL scheme supported by browsers:</p>
16749    ///     <ul>
16750    ///       <li>Sections of a page with document fragments</li>
16751    ///       <li>Specific text portions with <a href="/en-US/docs/Web/Text_fragments">text fragments</a></li>
16752    ///       <li>Pieces of media files with media fragments</li>
16753    ///       <li>Telephone numbers with <code>tel:</code> URLs</li>
16754    ///       <li>Email addresses with <code>mailto:</code> URLs</li>
16755    ///       <li>While web browsers may not support other URL schemes, websites can with <a href="/en-US/docs/Web/API/Navigator/registerProtocolHandler"><code>registerProtocolHandler()</code></a></li>
16756    ///     </ul>
16757    ///   
16758    pub href: core::option::Option<AttributeValueOwned>,
16759    ///
16760    ///     <p>Hints at the human language of the linked URL. No built-in functionality. Allowed values are the same as <a href="/en-US/docs/Web/HTML/Global_attributes/lang">the global <code>lang</code> attribute</a>.</p>
16761    ///   
16762    pub hreflang: core::option::Option<AttributeValueOwned>,
16763    ///
16764    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
16765    ///   
16766    pub id: core::option::Option<AttributeValueOwned>,
16767    ///
16768    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
16769    ///   
16770    pub inert: core::option::Option<AttributeValueOwned>,
16771    ///
16772    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
16773    ///   
16774    pub inputmode: core::option::Option<AttributeValueOwned>,
16775    ///
16776    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
16777    ///   
16778    pub is: core::option::Option<AttributeValueOwned>,
16779    ///
16780    ///     <p>The unique, global identifier of an item.</p>
16781    ///   
16782    pub itemid: core::option::Option<AttributeValueOwned>,
16783    ///
16784    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
16785    ///   
16786    pub itemprop: core::option::Option<AttributeValueOwned>,
16787    ///
16788    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
16789    ///   
16790    pub itemref: core::option::Option<AttributeValueOwned>,
16791    ///
16792    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
16793    ///   
16794    pub itemscope: core::option::Option<AttributeValueOwned>,
16795    ///
16796    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
16797    ///   
16798    pub itemtype: core::option::Option<AttributeValueOwned>,
16799    ///
16800    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
16801    ///   
16802    pub lang: core::option::Option<AttributeValueOwned>,
16803    ///
16804    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
16805    ///   
16806    pub nonce: core::option::Option<AttributeValueOwned>,
16807    ///
16808    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
16809    ///   
16810    pub part: core::option::Option<AttributeValueOwned>,
16811    ///
16812    ///     <p>A space-separated list of URLs. When the link is followed, the browser will send <a href="/en-US/docs/Web/HTTP/Methods/POST"><code>POST</code></a> requests with the body <code>PING</code> to the URLs. Typically for tracking.</p>
16813    ///   
16814    pub ping: core::option::Option<AttributeValueOwned>,
16815    ///
16816    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
16817    ///   
16818    pub popover: core::option::Option<AttributeValueOwned>,
16819    ///
16820    ///     <p>How much of the <a href="/en-US/docs/Web/HTTP/Headers/Referer">referrer</a> to send when following the link.</p>
16821    ///     <ul>
16822    ///       <li><code>no-referrer</code>: The <a href="/en-US/docs/Web/HTTP/Headers/Referer"><code>Referer</code></a> header will not be sent.</li>
16823    ///       <li><code>no-referrer-when-downgrade</code>: The <a href="/en-US/docs/Web/HTTP/Headers/Referer"><code>Referer</code></a> header will not be sent to <a href="/en-US/docs/Glossary/Origin">origin</a>s without <a href="/en-US/docs/Glossary/TLS">TLS</a> (<a href="/en-US/docs/Glossary/HTTPS">HTTPS</a>).</li>
16824    ///       <li><code>origin</code>: The sent referrer will be limited to the origin of the referring page: its <a href="/en-US/docs/Learn/Common_questions/Web_mechanics/What_is_a_URL">scheme</a>, <a href="/en-US/docs/Glossary/Host">host</a>, and <a href="/en-US/docs/Glossary/Port">port</a>.</li>
16825    ///       <li><code>origin-when-cross-origin</code>: 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.</li>
16826    ///       <li><code>same-origin</code>: A referrer will be sent for <a href="/en-US/docs/Glossary/Same-origin_policy">same origin</a>, but cross-origin requests will contain no referrer information.</li>
16827    ///       <li><code>strict-origin</code>: 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).</li>
16828    ///       <li><code>strict-origin-when-cross-origin</code> (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).</li>
16829    ///       <li><code>unsafe-url</code>: The referrer will include the origin <em>and</em> the path (but not the <a href="/en-US/docs/Web/API/HTMLAnchorElement/hash">fragment</a>, <a href="/en-US/docs/Web/API/HTMLAnchorElement/password">password</a>, or <a href="/en-US/docs/Web/API/HTMLAnchorElement/username">username</a>). <strong>This value is unsafe</strong>, because it leaks origins and paths from TLS-protected resources to insecure origins.</li>
16830    ///     </ul>
16831    ///   
16832    pub referrerpolicy: core::option::Option<AttributeValueOwned>,
16833    ///
16834    ///     <p>The relationship of the linked URL as space-separated link types.</p>
16835    ///   
16836    pub rel: core::option::Option<AttributeValueOwned>,
16837    ///
16838    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
16839    ///   
16840    pub role: core::option::Option<AttributeValueOwned>,
16841    ///
16842    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
16843    ///   
16844    pub slot: core::option::Option<AttributeValueOwned>,
16845    ///
16846    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
16847    ///     <ul>
16848    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
16849    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
16850    ///     </ul>
16851    ///   
16852    pub spellcheck: core::option::Option<AttributeValueOwned>,
16853    ///
16854    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
16855    ///   
16856    pub style: core::option::Option<AttributeValueOwned>,
16857    ///
16858    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
16859    ///     <ul>
16860    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
16861    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
16862    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
16863    ///     </ul>
16864    ///   
16865    pub tabindex: core::option::Option<AttributeValueOwned>,
16866    ///
16867    ///     <p>Where to display the linked URL, as the name for a <em>browsing context</em> (a tab, window, or <a href="/en-US/docs/Web/HTML/Element/iframe"><code>&lt;iframe&gt;</code></a>). The following keywords have special meanings for where to load the URL:</p>
16868    ///     <ul>
16869    ///       <li><code>_self</code>: the current browsing context. (Default)</li>
16870    ///       <li><code>_blank</code>: usually a new tab, but users can configure browsers to open a new window instead.</li>
16871    ///       <li><code>_parent</code>: the parent browsing context of the current one. If no parent, behaves as <code>_self</code>.</li>
16872    ///       <li><code>_top</code>: the topmost browsing context (the "highest" context that's an ancestor of the current one). If no ancestors, behaves as <code>_self</code>.</li>
16873    ///     </ul>
16874    ///     <div id="sect2" class="notecard note">
16875    ///       <p><strong>Note:</strong> Setting <code>target="_blank"</code> on <code>&lt;a&gt;</code> elements implicitly provides the same <code>rel</code> behavior as setting <a href="/en-US/docs/Web/HTML/Attributes/rel/noopener"><code>rel="noopener"</code></a> which does not set <code>window.opener</code>.</p>
16876    ///     </div>
16877    ///   
16878    pub target: core::option::Option<AttributeValueOwned>,
16879    ///
16880    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
16881    ///   
16882    pub title: core::option::Option<AttributeValueOwned>,
16883    ///
16884    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
16885    ///     <ul>
16886    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
16887    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
16888    ///     </ul>
16889    ///   
16890    pub translate: core::option::Option<AttributeValueOwned>,
16891    ///
16892    ///     <p>Hints at the linked URL's format with a <a href="/en-US/docs/Glossary/MIME_type">MIME type</a>. No built-in functionality.</p>
16893    ///   
16894    pub type_: core::option::Option<AttributeValueOwned>,
16895    ///
16896    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
16897    ///     <ul>
16898    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
16899    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
16900    ///     </ul>
16901    ///   
16902    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
16903}
16904#[allow(deprecated)]
16905#[cfg(feature = "alloc")]
16906impl AOwned {
16907    /// Get the tag name of the element.
16908    /// This is the same as the name of the struct, in kebab-case.
16909    pub fn tag() -> &'static str {
16910        "a"
16911    }
16912    /// Sets an attribute of the element.
16913    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
16914    /// If the `alloc` feature is disabled, this function will silently fail.
16915    ///
16916    /// # Note
16917    /// This only works when the attribute is lowercase.
16918    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
16919        match name {
16920            "accesskey" => self.accesskey = Some(value.into()),
16921            "autocapitalize" => self.autocapitalize = Some(value.into()),
16922            "autofocus" => self.autofocus = Some(value.into()),
16923            "class" => self.class = Some(value.into()),
16924            "contenteditable" => self.contenteditable = Some(value.into()),
16925            "contextmenu" => self.contextmenu = Some(value.into()),
16926            "dir" => self.dir = Some(value.into()),
16927            "download" => self.download = Some(value.into()),
16928            "draggable" => self.draggable = Some(value.into()),
16929            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
16930            "exportparts" => self.exportparts = Some(value.into()),
16931            "hidden" => self.hidden = Some(value.into()),
16932            "href" => self.href = Some(value.into()),
16933            "hreflang" => self.hreflang = Some(value.into()),
16934            "id" => self.id = Some(value.into()),
16935            "inert" => self.inert = Some(value.into()),
16936            "inputmode" => self.inputmode = Some(value.into()),
16937            "is" => self.is = Some(value.into()),
16938            "itemid" => self.itemid = Some(value.into()),
16939            "itemprop" => self.itemprop = Some(value.into()),
16940            "itemref" => self.itemref = Some(value.into()),
16941            "itemscope" => self.itemscope = Some(value.into()),
16942            "itemtype" => self.itemtype = Some(value.into()),
16943            "lang" => self.lang = Some(value.into()),
16944            "nonce" => self.nonce = Some(value.into()),
16945            "part" => self.part = Some(value.into()),
16946            "ping" => self.ping = Some(value.into()),
16947            "popover" => self.popover = Some(value.into()),
16948            "referrerpolicy" => self.referrerpolicy = Some(value.into()),
16949            "rel" => self.rel = Some(value.into()),
16950            "role" => self.role = Some(value.into()),
16951            "slot" => self.slot = Some(value.into()),
16952            "spellcheck" => self.spellcheck = Some(value.into()),
16953            "style" => self.style = Some(value.into()),
16954            "tabindex" => self.tabindex = Some(value.into()),
16955            "target" => self.target = Some(value.into()),
16956            "title" => self.title = Some(value.into()),
16957            "translate" => self.translate = Some(value.into()),
16958            "type_" => self.type_ = Some(value.into()),
16959            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
16960            #[cfg(feature = "alloc")]
16961            _ => {
16962                #[allow(clippy::useless_conversion)]
16963                self.extra.insert(name.into(), value.into());
16964            }
16965            #[cfg(not(feature = "alloc"))]
16966            _ => {}
16967        }
16968    }
16969}
16970/// The <strong><code>&lt;abbr&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents an abbreviation or acronym.
16971///
16972/// When including an abbreviation or acronym, provide a full expansion of the term in plain text on first use, along with the <code>&lt;abbr&gt;</code> to mark up the abbreviation. This informs the user what the abbreviation or acronym means.
16973///
16974/// The optional <a href="/en-US/docs/Web/HTML/Global_attributes#title"><code>title</code></a> attribute can provide an expansion for the abbreviation or acronym when a full expansion is not present. This provides a hint to user agents on how to announce/display the content while informing all users what the abbreviation means. If present, <code>title</code> must contain this full description and nothing else.
16975///
16976/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/abbr>
16977
16978#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
16979pub struct Abbr<'life> {
16980    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
16981    ///   
16982    pub accesskey: core::option::Option<AttributeValue<'life>>,
16983    ///
16984    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
16985    ///     <ul>
16986    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
16987    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
16988    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
16989    ///       <li><code>characters</code>, all letters should default to uppercase</li>
16990    ///     </ul>
16991    ///   
16992    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
16993    ///
16994    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
16995    ///   
16996    pub autofocus: core::option::Option<AttributeValue<'life>>,
16997    ///
16998    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
16999    ///   
17000    pub class: core::option::Option<AttributeValue<'life>>,
17001    ///
17002    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
17003    ///     <ul>
17004    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
17005    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
17006    ///     </ul>
17007    ///   
17008    pub contenteditable: core::option::Option<AttributeValue<'life>>,
17009    ///
17010    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
17011    ///   
17012    pub contextmenu: core::option::Option<AttributeValue<'life>>,
17013    ///
17014    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
17015    ///   
17016    #[cfg(feature = "alloc")]
17017    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
17018    ///
17019    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
17020    ///     <ul>
17021    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
17022    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
17023    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
17024    ///     </ul>
17025    ///   
17026    pub dir: core::option::Option<AttributeValue<'life>>,
17027    ///
17028    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
17029    ///     <ul>
17030    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
17031    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
17032    ///     </ul>
17033    ///   
17034    pub draggable: core::option::Option<AttributeValue<'life>>,
17035    ///
17036    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
17037    ///   
17038    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
17039    ///
17040    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
17041    ///   
17042    pub exportparts: core::option::Option<AttributeValue<'life>>,
17043    /// /// Extra attributes of the element.
17044
17045    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
17046    #[cfg(feature = "alloc")]
17047    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
17048    ///
17049    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
17050    ///   
17051    pub hidden: core::option::Option<AttributeValue<'life>>,
17052    ///
17053    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
17054    ///   
17055    pub id: core::option::Option<AttributeValue<'life>>,
17056    ///
17057    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
17058    ///   
17059    pub inert: core::option::Option<AttributeValue<'life>>,
17060    ///
17061    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
17062    ///   
17063    pub inputmode: core::option::Option<AttributeValue<'life>>,
17064    ///
17065    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
17066    ///   
17067    pub is: core::option::Option<AttributeValue<'life>>,
17068    ///
17069    ///     <p>The unique, global identifier of an item.</p>
17070    ///   
17071    pub itemid: core::option::Option<AttributeValue<'life>>,
17072    ///
17073    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
17074    ///   
17075    pub itemprop: core::option::Option<AttributeValue<'life>>,
17076    ///
17077    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
17078    ///   
17079    pub itemref: core::option::Option<AttributeValue<'life>>,
17080    ///
17081    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
17082    ///   
17083    pub itemscope: core::option::Option<AttributeValue<'life>>,
17084    ///
17085    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
17086    ///   
17087    pub itemtype: core::option::Option<AttributeValue<'life>>,
17088    ///
17089    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
17090    ///   
17091    pub lang: core::option::Option<AttributeValue<'life>>,
17092    ///
17093    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
17094    ///   
17095    pub nonce: core::option::Option<AttributeValue<'life>>,
17096    ///
17097    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
17098    ///   
17099    pub part: core::option::Option<AttributeValue<'life>>,
17100    ///
17101    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
17102    ///   
17103    pub popover: core::option::Option<AttributeValue<'life>>,
17104    ///
17105    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
17106    ///   
17107    pub role: core::option::Option<AttributeValue<'life>>,
17108    ///
17109    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
17110    ///   
17111    pub slot: core::option::Option<AttributeValue<'life>>,
17112    ///
17113    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
17114    ///     <ul>
17115    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
17116    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
17117    ///     </ul>
17118    ///   
17119    pub spellcheck: core::option::Option<AttributeValue<'life>>,
17120    ///
17121    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
17122    ///   
17123    pub style: core::option::Option<AttributeValue<'life>>,
17124    ///
17125    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
17126    ///     <ul>
17127    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
17128    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
17129    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
17130    ///     </ul>
17131    ///   
17132    pub tabindex: core::option::Option<AttributeValue<'life>>,
17133    ///
17134    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
17135    ///   
17136    pub title: core::option::Option<AttributeValue<'life>>,
17137    ///
17138    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
17139    ///     <ul>
17140    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
17141    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
17142    ///     </ul>
17143    ///   
17144    pub translate: core::option::Option<AttributeValue<'life>>,
17145    ///
17146    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
17147    ///     <ul>
17148    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
17149    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
17150    ///     </ul>
17151    ///   
17152    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
17153}
17154#[allow(deprecated)]
17155
17156impl<'life> Abbr<'life> {
17157    /// Get the tag name of the element.
17158    /// This is the same as the name of the struct, in kebab-case.
17159    pub fn tag() -> &'static str {
17160        "abbr"
17161    }
17162    /// Sets an attribute of the element.
17163    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
17164    /// If the `alloc` feature is disabled, this function will silently fail.
17165    ///
17166    /// # Note
17167    /// This only works when the attribute is lowercase.
17168    pub fn set_attr(
17169        &mut self,
17170        name: &'life str,
17171        value: impl core::convert::Into<AttributeValue<'life>>,
17172    ) {
17173        match name {
17174            "accesskey" => self.accesskey = Some(value.into()),
17175            "autocapitalize" => self.autocapitalize = Some(value.into()),
17176            "autofocus" => self.autofocus = Some(value.into()),
17177            "class" => self.class = Some(value.into()),
17178            "contenteditable" => self.contenteditable = Some(value.into()),
17179            "contextmenu" => self.contextmenu = Some(value.into()),
17180            "dir" => self.dir = Some(value.into()),
17181            "draggable" => self.draggable = Some(value.into()),
17182            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
17183            "exportparts" => self.exportparts = Some(value.into()),
17184            "hidden" => self.hidden = Some(value.into()),
17185            "id" => self.id = Some(value.into()),
17186            "inert" => self.inert = Some(value.into()),
17187            "inputmode" => self.inputmode = Some(value.into()),
17188            "is" => self.is = Some(value.into()),
17189            "itemid" => self.itemid = Some(value.into()),
17190            "itemprop" => self.itemprop = Some(value.into()),
17191            "itemref" => self.itemref = Some(value.into()),
17192            "itemscope" => self.itemscope = Some(value.into()),
17193            "itemtype" => self.itemtype = Some(value.into()),
17194            "lang" => self.lang = Some(value.into()),
17195            "nonce" => self.nonce = Some(value.into()),
17196            "part" => self.part = Some(value.into()),
17197            "popover" => self.popover = Some(value.into()),
17198            "role" => self.role = Some(value.into()),
17199            "slot" => self.slot = Some(value.into()),
17200            "spellcheck" => self.spellcheck = Some(value.into()),
17201            "style" => self.style = Some(value.into()),
17202            "tabindex" => self.tabindex = Some(value.into()),
17203            "title" => self.title = Some(value.into()),
17204            "translate" => self.translate = Some(value.into()),
17205            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
17206            #[cfg(feature = "alloc")]
17207            _ => {
17208                #[allow(clippy::useless_conversion)]
17209                self.extra.insert(name.into(), value.into());
17210            }
17211            #[cfg(not(feature = "alloc"))]
17212            _ => {}
17213        }
17214    }
17215}
17216/// The <strong><code>&lt;abbr&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents an abbreviation or acronym.
17217///
17218/// When including an abbreviation or acronym, provide a full expansion of the term in plain text on first use, along with the <code>&lt;abbr&gt;</code> to mark up the abbreviation. This informs the user what the abbreviation or acronym means.
17219///
17220/// The optional <a href="/en-US/docs/Web/HTML/Global_attributes#title"><code>title</code></a> attribute can provide an expansion for the abbreviation or acronym when a full expansion is not present. This provides a hint to user agents on how to announce/display the content while informing all users what the abbreviation means. If present, <code>title</code> must contain this full description and nothing else.
17221///
17222/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/abbr>
17223
17224#[cfg(feature = "alloc")]
17225#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
17226pub struct AbbrOwned {
17227    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
17228    ///   
17229    pub accesskey: core::option::Option<AttributeValueOwned>,
17230    ///
17231    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
17232    ///     <ul>
17233    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
17234    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
17235    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
17236    ///       <li><code>characters</code>, all letters should default to uppercase</li>
17237    ///     </ul>
17238    ///   
17239    pub autocapitalize: core::option::Option<AttributeValueOwned>,
17240    ///
17241    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
17242    ///   
17243    pub autofocus: core::option::Option<AttributeValueOwned>,
17244    ///
17245    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
17246    ///   
17247    pub class: core::option::Option<AttributeValueOwned>,
17248    ///
17249    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
17250    ///     <ul>
17251    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
17252    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
17253    ///     </ul>
17254    ///   
17255    pub contenteditable: core::option::Option<AttributeValueOwned>,
17256    ///
17257    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
17258    ///   
17259    pub contextmenu: core::option::Option<AttributeValueOwned>,
17260    ///
17261    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
17262    ///   
17263    #[cfg(feature = "alloc")]
17264    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
17265    ///
17266    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
17267    ///     <ul>
17268    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
17269    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
17270    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
17271    ///     </ul>
17272    ///   
17273    pub dir: core::option::Option<AttributeValueOwned>,
17274    ///
17275    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
17276    ///     <ul>
17277    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
17278    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
17279    ///     </ul>
17280    ///   
17281    pub draggable: core::option::Option<AttributeValueOwned>,
17282    ///
17283    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
17284    ///   
17285    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
17286    ///
17287    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
17288    ///   
17289    pub exportparts: core::option::Option<AttributeValueOwned>,
17290    /// /// Extra attributes of the element.
17291
17292    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
17293    #[cfg(feature = "alloc")]
17294    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
17295    ///
17296    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
17297    ///   
17298    pub hidden: core::option::Option<AttributeValueOwned>,
17299    ///
17300    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
17301    ///   
17302    pub id: core::option::Option<AttributeValueOwned>,
17303    ///
17304    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
17305    ///   
17306    pub inert: core::option::Option<AttributeValueOwned>,
17307    ///
17308    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
17309    ///   
17310    pub inputmode: core::option::Option<AttributeValueOwned>,
17311    ///
17312    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
17313    ///   
17314    pub is: core::option::Option<AttributeValueOwned>,
17315    ///
17316    ///     <p>The unique, global identifier of an item.</p>
17317    ///   
17318    pub itemid: core::option::Option<AttributeValueOwned>,
17319    ///
17320    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
17321    ///   
17322    pub itemprop: core::option::Option<AttributeValueOwned>,
17323    ///
17324    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
17325    ///   
17326    pub itemref: core::option::Option<AttributeValueOwned>,
17327    ///
17328    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
17329    ///   
17330    pub itemscope: core::option::Option<AttributeValueOwned>,
17331    ///
17332    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
17333    ///   
17334    pub itemtype: core::option::Option<AttributeValueOwned>,
17335    ///
17336    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
17337    ///   
17338    pub lang: core::option::Option<AttributeValueOwned>,
17339    ///
17340    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
17341    ///   
17342    pub nonce: core::option::Option<AttributeValueOwned>,
17343    ///
17344    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
17345    ///   
17346    pub part: core::option::Option<AttributeValueOwned>,
17347    ///
17348    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
17349    ///   
17350    pub popover: core::option::Option<AttributeValueOwned>,
17351    ///
17352    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
17353    ///   
17354    pub role: core::option::Option<AttributeValueOwned>,
17355    ///
17356    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
17357    ///   
17358    pub slot: core::option::Option<AttributeValueOwned>,
17359    ///
17360    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
17361    ///     <ul>
17362    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
17363    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
17364    ///     </ul>
17365    ///   
17366    pub spellcheck: core::option::Option<AttributeValueOwned>,
17367    ///
17368    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
17369    ///   
17370    pub style: core::option::Option<AttributeValueOwned>,
17371    ///
17372    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
17373    ///     <ul>
17374    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
17375    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
17376    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
17377    ///     </ul>
17378    ///   
17379    pub tabindex: core::option::Option<AttributeValueOwned>,
17380    ///
17381    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
17382    ///   
17383    pub title: core::option::Option<AttributeValueOwned>,
17384    ///
17385    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
17386    ///     <ul>
17387    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
17388    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
17389    ///     </ul>
17390    ///   
17391    pub translate: core::option::Option<AttributeValueOwned>,
17392    ///
17393    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
17394    ///     <ul>
17395    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
17396    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
17397    ///     </ul>
17398    ///   
17399    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
17400}
17401#[allow(deprecated)]
17402#[cfg(feature = "alloc")]
17403impl AbbrOwned {
17404    /// Get the tag name of the element.
17405    /// This is the same as the name of the struct, in kebab-case.
17406    pub fn tag() -> &'static str {
17407        "abbr"
17408    }
17409    /// Sets an attribute of the element.
17410    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
17411    /// If the `alloc` feature is disabled, this function will silently fail.
17412    ///
17413    /// # Note
17414    /// This only works when the attribute is lowercase.
17415    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
17416        match name {
17417            "accesskey" => self.accesskey = Some(value.into()),
17418            "autocapitalize" => self.autocapitalize = Some(value.into()),
17419            "autofocus" => self.autofocus = Some(value.into()),
17420            "class" => self.class = Some(value.into()),
17421            "contenteditable" => self.contenteditable = Some(value.into()),
17422            "contextmenu" => self.contextmenu = Some(value.into()),
17423            "dir" => self.dir = Some(value.into()),
17424            "draggable" => self.draggable = Some(value.into()),
17425            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
17426            "exportparts" => self.exportparts = Some(value.into()),
17427            "hidden" => self.hidden = Some(value.into()),
17428            "id" => self.id = Some(value.into()),
17429            "inert" => self.inert = Some(value.into()),
17430            "inputmode" => self.inputmode = Some(value.into()),
17431            "is" => self.is = Some(value.into()),
17432            "itemid" => self.itemid = Some(value.into()),
17433            "itemprop" => self.itemprop = Some(value.into()),
17434            "itemref" => self.itemref = Some(value.into()),
17435            "itemscope" => self.itemscope = Some(value.into()),
17436            "itemtype" => self.itemtype = Some(value.into()),
17437            "lang" => self.lang = Some(value.into()),
17438            "nonce" => self.nonce = Some(value.into()),
17439            "part" => self.part = Some(value.into()),
17440            "popover" => self.popover = Some(value.into()),
17441            "role" => self.role = Some(value.into()),
17442            "slot" => self.slot = Some(value.into()),
17443            "spellcheck" => self.spellcheck = Some(value.into()),
17444            "style" => self.style = Some(value.into()),
17445            "tabindex" => self.tabindex = Some(value.into()),
17446            "title" => self.title = Some(value.into()),
17447            "translate" => self.translate = Some(value.into()),
17448            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
17449            #[cfg(feature = "alloc")]
17450            _ => {
17451                #[allow(clippy::useless_conversion)]
17452                self.extra.insert(name.into(), value.into());
17453            }
17454            #[cfg(not(feature = "alloc"))]
17455            _ => {}
17456        }
17457    }
17458}
17459/// The <strong><code>&lt;b&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element is used to draw the reader's attention to the element's contents, which are not otherwise granted special importance. This was formerly known as the Boldface element, and most browsers still draw the text in boldface. However, you should not use <code>&lt;b&gt;</code> for styling text or granting importance. If you wish to create boldface text, you should use the CSS <a href="/en-US/docs/Web/CSS/font-weight"><code>font-weight</code></a> property. If you wish to indicate an element is of special importance, you should use the <a href="/en-US/docs/Web/HTML/Element/strong"><code>&lt;strong&gt;</code></a> element.
17460///
17461/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/b>
17462
17463#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
17464pub struct B<'life> {
17465    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
17466    ///   
17467    pub accesskey: core::option::Option<AttributeValue<'life>>,
17468    ///
17469    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
17470    ///     <ul>
17471    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
17472    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
17473    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
17474    ///       <li><code>characters</code>, all letters should default to uppercase</li>
17475    ///     </ul>
17476    ///   
17477    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
17478    ///
17479    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
17480    ///   
17481    pub autofocus: core::option::Option<AttributeValue<'life>>,
17482    ///
17483    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
17484    ///   
17485    pub class: core::option::Option<AttributeValue<'life>>,
17486    ///
17487    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
17488    ///     <ul>
17489    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
17490    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
17491    ///     </ul>
17492    ///   
17493    pub contenteditable: core::option::Option<AttributeValue<'life>>,
17494    ///
17495    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
17496    ///   
17497    pub contextmenu: core::option::Option<AttributeValue<'life>>,
17498    ///
17499    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
17500    ///   
17501    #[cfg(feature = "alloc")]
17502    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
17503    ///
17504    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
17505    ///     <ul>
17506    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
17507    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
17508    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
17509    ///     </ul>
17510    ///   
17511    pub dir: core::option::Option<AttributeValue<'life>>,
17512    ///
17513    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
17514    ///     <ul>
17515    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
17516    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
17517    ///     </ul>
17518    ///   
17519    pub draggable: core::option::Option<AttributeValue<'life>>,
17520    ///
17521    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
17522    ///   
17523    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
17524    ///
17525    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
17526    ///   
17527    pub exportparts: core::option::Option<AttributeValue<'life>>,
17528    /// /// Extra attributes of the element.
17529
17530    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
17531    #[cfg(feature = "alloc")]
17532    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
17533    ///
17534    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
17535    ///   
17536    pub hidden: core::option::Option<AttributeValue<'life>>,
17537    ///
17538    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
17539    ///   
17540    pub id: core::option::Option<AttributeValue<'life>>,
17541    ///
17542    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
17543    ///   
17544    pub inert: core::option::Option<AttributeValue<'life>>,
17545    ///
17546    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
17547    ///   
17548    pub inputmode: core::option::Option<AttributeValue<'life>>,
17549    ///
17550    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
17551    ///   
17552    pub is: core::option::Option<AttributeValue<'life>>,
17553    ///
17554    ///     <p>The unique, global identifier of an item.</p>
17555    ///   
17556    pub itemid: core::option::Option<AttributeValue<'life>>,
17557    ///
17558    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
17559    ///   
17560    pub itemprop: core::option::Option<AttributeValue<'life>>,
17561    ///
17562    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
17563    ///   
17564    pub itemref: core::option::Option<AttributeValue<'life>>,
17565    ///
17566    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
17567    ///   
17568    pub itemscope: core::option::Option<AttributeValue<'life>>,
17569    ///
17570    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
17571    ///   
17572    pub itemtype: core::option::Option<AttributeValue<'life>>,
17573    ///
17574    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
17575    ///   
17576    pub lang: core::option::Option<AttributeValue<'life>>,
17577    ///
17578    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
17579    ///   
17580    pub nonce: core::option::Option<AttributeValue<'life>>,
17581    ///
17582    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
17583    ///   
17584    pub part: core::option::Option<AttributeValue<'life>>,
17585    ///
17586    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
17587    ///   
17588    pub popover: core::option::Option<AttributeValue<'life>>,
17589    ///
17590    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
17591    ///   
17592    pub role: core::option::Option<AttributeValue<'life>>,
17593    ///
17594    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
17595    ///   
17596    pub slot: core::option::Option<AttributeValue<'life>>,
17597    ///
17598    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
17599    ///     <ul>
17600    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
17601    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
17602    ///     </ul>
17603    ///   
17604    pub spellcheck: core::option::Option<AttributeValue<'life>>,
17605    ///
17606    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
17607    ///   
17608    pub style: core::option::Option<AttributeValue<'life>>,
17609    ///
17610    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
17611    ///     <ul>
17612    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
17613    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
17614    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
17615    ///     </ul>
17616    ///   
17617    pub tabindex: core::option::Option<AttributeValue<'life>>,
17618    ///
17619    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
17620    ///   
17621    pub title: core::option::Option<AttributeValue<'life>>,
17622    ///
17623    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
17624    ///     <ul>
17625    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
17626    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
17627    ///     </ul>
17628    ///   
17629    pub translate: core::option::Option<AttributeValue<'life>>,
17630    ///
17631    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
17632    ///     <ul>
17633    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
17634    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
17635    ///     </ul>
17636    ///   
17637    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
17638}
17639#[allow(deprecated)]
17640
17641impl<'life> B<'life> {
17642    /// Get the tag name of the element.
17643    /// This is the same as the name of the struct, in kebab-case.
17644    pub fn tag() -> &'static str {
17645        "b"
17646    }
17647    /// Sets an attribute of the element.
17648    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
17649    /// If the `alloc` feature is disabled, this function will silently fail.
17650    ///
17651    /// # Note
17652    /// This only works when the attribute is lowercase.
17653    pub fn set_attr(
17654        &mut self,
17655        name: &'life str,
17656        value: impl core::convert::Into<AttributeValue<'life>>,
17657    ) {
17658        match name {
17659            "accesskey" => self.accesskey = Some(value.into()),
17660            "autocapitalize" => self.autocapitalize = Some(value.into()),
17661            "autofocus" => self.autofocus = Some(value.into()),
17662            "class" => self.class = Some(value.into()),
17663            "contenteditable" => self.contenteditable = Some(value.into()),
17664            "contextmenu" => self.contextmenu = Some(value.into()),
17665            "dir" => self.dir = Some(value.into()),
17666            "draggable" => self.draggable = Some(value.into()),
17667            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
17668            "exportparts" => self.exportparts = Some(value.into()),
17669            "hidden" => self.hidden = Some(value.into()),
17670            "id" => self.id = Some(value.into()),
17671            "inert" => self.inert = Some(value.into()),
17672            "inputmode" => self.inputmode = Some(value.into()),
17673            "is" => self.is = Some(value.into()),
17674            "itemid" => self.itemid = Some(value.into()),
17675            "itemprop" => self.itemprop = Some(value.into()),
17676            "itemref" => self.itemref = Some(value.into()),
17677            "itemscope" => self.itemscope = Some(value.into()),
17678            "itemtype" => self.itemtype = Some(value.into()),
17679            "lang" => self.lang = Some(value.into()),
17680            "nonce" => self.nonce = Some(value.into()),
17681            "part" => self.part = Some(value.into()),
17682            "popover" => self.popover = Some(value.into()),
17683            "role" => self.role = Some(value.into()),
17684            "slot" => self.slot = Some(value.into()),
17685            "spellcheck" => self.spellcheck = Some(value.into()),
17686            "style" => self.style = Some(value.into()),
17687            "tabindex" => self.tabindex = Some(value.into()),
17688            "title" => self.title = Some(value.into()),
17689            "translate" => self.translate = Some(value.into()),
17690            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
17691            #[cfg(feature = "alloc")]
17692            _ => {
17693                #[allow(clippy::useless_conversion)]
17694                self.extra.insert(name.into(), value.into());
17695            }
17696            #[cfg(not(feature = "alloc"))]
17697            _ => {}
17698        }
17699    }
17700}
17701/// The <strong><code>&lt;b&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element is used to draw the reader's attention to the element's contents, which are not otherwise granted special importance. This was formerly known as the Boldface element, and most browsers still draw the text in boldface. However, you should not use <code>&lt;b&gt;</code> for styling text or granting importance. If you wish to create boldface text, you should use the CSS <a href="/en-US/docs/Web/CSS/font-weight"><code>font-weight</code></a> property. If you wish to indicate an element is of special importance, you should use the <a href="/en-US/docs/Web/HTML/Element/strong"><code>&lt;strong&gt;</code></a> element.
17702///
17703/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/b>
17704
17705#[cfg(feature = "alloc")]
17706#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
17707pub struct BOwned {
17708    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
17709    ///   
17710    pub accesskey: core::option::Option<AttributeValueOwned>,
17711    ///
17712    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
17713    ///     <ul>
17714    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
17715    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
17716    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
17717    ///       <li><code>characters</code>, all letters should default to uppercase</li>
17718    ///     </ul>
17719    ///   
17720    pub autocapitalize: core::option::Option<AttributeValueOwned>,
17721    ///
17722    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
17723    ///   
17724    pub autofocus: core::option::Option<AttributeValueOwned>,
17725    ///
17726    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
17727    ///   
17728    pub class: core::option::Option<AttributeValueOwned>,
17729    ///
17730    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
17731    ///     <ul>
17732    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
17733    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
17734    ///     </ul>
17735    ///   
17736    pub contenteditable: core::option::Option<AttributeValueOwned>,
17737    ///
17738    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
17739    ///   
17740    pub contextmenu: core::option::Option<AttributeValueOwned>,
17741    ///
17742    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
17743    ///   
17744    #[cfg(feature = "alloc")]
17745    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
17746    ///
17747    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
17748    ///     <ul>
17749    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
17750    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
17751    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
17752    ///     </ul>
17753    ///   
17754    pub dir: core::option::Option<AttributeValueOwned>,
17755    ///
17756    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
17757    ///     <ul>
17758    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
17759    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
17760    ///     </ul>
17761    ///   
17762    pub draggable: core::option::Option<AttributeValueOwned>,
17763    ///
17764    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
17765    ///   
17766    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
17767    ///
17768    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
17769    ///   
17770    pub exportparts: core::option::Option<AttributeValueOwned>,
17771    /// /// Extra attributes of the element.
17772
17773    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
17774    #[cfg(feature = "alloc")]
17775    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
17776    ///
17777    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
17778    ///   
17779    pub hidden: core::option::Option<AttributeValueOwned>,
17780    ///
17781    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
17782    ///   
17783    pub id: core::option::Option<AttributeValueOwned>,
17784    ///
17785    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
17786    ///   
17787    pub inert: core::option::Option<AttributeValueOwned>,
17788    ///
17789    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
17790    ///   
17791    pub inputmode: core::option::Option<AttributeValueOwned>,
17792    ///
17793    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
17794    ///   
17795    pub is: core::option::Option<AttributeValueOwned>,
17796    ///
17797    ///     <p>The unique, global identifier of an item.</p>
17798    ///   
17799    pub itemid: core::option::Option<AttributeValueOwned>,
17800    ///
17801    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
17802    ///   
17803    pub itemprop: core::option::Option<AttributeValueOwned>,
17804    ///
17805    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
17806    ///   
17807    pub itemref: core::option::Option<AttributeValueOwned>,
17808    ///
17809    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
17810    ///   
17811    pub itemscope: core::option::Option<AttributeValueOwned>,
17812    ///
17813    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
17814    ///   
17815    pub itemtype: core::option::Option<AttributeValueOwned>,
17816    ///
17817    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
17818    ///   
17819    pub lang: core::option::Option<AttributeValueOwned>,
17820    ///
17821    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
17822    ///   
17823    pub nonce: core::option::Option<AttributeValueOwned>,
17824    ///
17825    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
17826    ///   
17827    pub part: core::option::Option<AttributeValueOwned>,
17828    ///
17829    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
17830    ///   
17831    pub popover: core::option::Option<AttributeValueOwned>,
17832    ///
17833    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
17834    ///   
17835    pub role: core::option::Option<AttributeValueOwned>,
17836    ///
17837    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
17838    ///   
17839    pub slot: core::option::Option<AttributeValueOwned>,
17840    ///
17841    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
17842    ///     <ul>
17843    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
17844    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
17845    ///     </ul>
17846    ///   
17847    pub spellcheck: core::option::Option<AttributeValueOwned>,
17848    ///
17849    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
17850    ///   
17851    pub style: core::option::Option<AttributeValueOwned>,
17852    ///
17853    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
17854    ///     <ul>
17855    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
17856    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
17857    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
17858    ///     </ul>
17859    ///   
17860    pub tabindex: core::option::Option<AttributeValueOwned>,
17861    ///
17862    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
17863    ///   
17864    pub title: core::option::Option<AttributeValueOwned>,
17865    ///
17866    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
17867    ///     <ul>
17868    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
17869    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
17870    ///     </ul>
17871    ///   
17872    pub translate: core::option::Option<AttributeValueOwned>,
17873    ///
17874    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
17875    ///     <ul>
17876    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
17877    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
17878    ///     </ul>
17879    ///   
17880    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
17881}
17882#[allow(deprecated)]
17883#[cfg(feature = "alloc")]
17884impl BOwned {
17885    /// Get the tag name of the element.
17886    /// This is the same as the name of the struct, in kebab-case.
17887    pub fn tag() -> &'static str {
17888        "b"
17889    }
17890    /// Sets an attribute of the element.
17891    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
17892    /// If the `alloc` feature is disabled, this function will silently fail.
17893    ///
17894    /// # Note
17895    /// This only works when the attribute is lowercase.
17896    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
17897        match name {
17898            "accesskey" => self.accesskey = Some(value.into()),
17899            "autocapitalize" => self.autocapitalize = Some(value.into()),
17900            "autofocus" => self.autofocus = Some(value.into()),
17901            "class" => self.class = Some(value.into()),
17902            "contenteditable" => self.contenteditable = Some(value.into()),
17903            "contextmenu" => self.contextmenu = Some(value.into()),
17904            "dir" => self.dir = Some(value.into()),
17905            "draggable" => self.draggable = Some(value.into()),
17906            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
17907            "exportparts" => self.exportparts = Some(value.into()),
17908            "hidden" => self.hidden = Some(value.into()),
17909            "id" => self.id = Some(value.into()),
17910            "inert" => self.inert = Some(value.into()),
17911            "inputmode" => self.inputmode = Some(value.into()),
17912            "is" => self.is = Some(value.into()),
17913            "itemid" => self.itemid = Some(value.into()),
17914            "itemprop" => self.itemprop = Some(value.into()),
17915            "itemref" => self.itemref = Some(value.into()),
17916            "itemscope" => self.itemscope = Some(value.into()),
17917            "itemtype" => self.itemtype = Some(value.into()),
17918            "lang" => self.lang = Some(value.into()),
17919            "nonce" => self.nonce = Some(value.into()),
17920            "part" => self.part = Some(value.into()),
17921            "popover" => self.popover = Some(value.into()),
17922            "role" => self.role = Some(value.into()),
17923            "slot" => self.slot = Some(value.into()),
17924            "spellcheck" => self.spellcheck = Some(value.into()),
17925            "style" => self.style = Some(value.into()),
17926            "tabindex" => self.tabindex = Some(value.into()),
17927            "title" => self.title = Some(value.into()),
17928            "translate" => self.translate = Some(value.into()),
17929            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
17930            #[cfg(feature = "alloc")]
17931            _ => {
17932                #[allow(clippy::useless_conversion)]
17933                self.extra.insert(name.into(), value.into());
17934            }
17935            #[cfg(not(feature = "alloc"))]
17936            _ => {}
17937        }
17938    }
17939}
17940/// The <strong><code>&lt;bdi&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element tells the browser's bidirectional algorithm to treat the text it contains in isolation from its surrounding text. It's particularly useful when a website dynamically inserts some text and doesn't know the directionality of the text being inserted.
17941///
17942/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/bdi>
17943
17944#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
17945pub struct Bdi<'life> {
17946    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
17947    ///   
17948    pub accesskey: core::option::Option<AttributeValue<'life>>,
17949    ///
17950    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
17951    ///     <ul>
17952    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
17953    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
17954    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
17955    ///       <li><code>characters</code>, all letters should default to uppercase</li>
17956    ///     </ul>
17957    ///   
17958    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
17959    ///
17960    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
17961    ///   
17962    pub autofocus: core::option::Option<AttributeValue<'life>>,
17963    ///
17964    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
17965    ///   
17966    pub class: core::option::Option<AttributeValue<'life>>,
17967    ///
17968    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
17969    ///     <ul>
17970    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
17971    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
17972    ///     </ul>
17973    ///   
17974    pub contenteditable: core::option::Option<AttributeValue<'life>>,
17975    ///
17976    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
17977    ///   
17978    pub contextmenu: core::option::Option<AttributeValue<'life>>,
17979    ///
17980    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
17981    ///   
17982    #[cfg(feature = "alloc")]
17983    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
17984    ///
17985    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
17986    ///     <ul>
17987    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
17988    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
17989    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
17990    ///     </ul>
17991    ///   
17992    pub dir: core::option::Option<AttributeValue<'life>>,
17993    ///
17994    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
17995    ///     <ul>
17996    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
17997    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
17998    ///     </ul>
17999    ///   
18000    pub draggable: core::option::Option<AttributeValue<'life>>,
18001    ///
18002    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
18003    ///   
18004    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
18005    ///
18006    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
18007    ///   
18008    pub exportparts: core::option::Option<AttributeValue<'life>>,
18009    /// /// Extra attributes of the element.
18010
18011    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
18012    #[cfg(feature = "alloc")]
18013    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
18014    ///
18015    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
18016    ///   
18017    pub hidden: core::option::Option<AttributeValue<'life>>,
18018    ///
18019    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
18020    ///   
18021    pub id: core::option::Option<AttributeValue<'life>>,
18022    ///
18023    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
18024    ///   
18025    pub inert: core::option::Option<AttributeValue<'life>>,
18026    ///
18027    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
18028    ///   
18029    pub inputmode: core::option::Option<AttributeValue<'life>>,
18030    ///
18031    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
18032    ///   
18033    pub is: core::option::Option<AttributeValue<'life>>,
18034    ///
18035    ///     <p>The unique, global identifier of an item.</p>
18036    ///   
18037    pub itemid: core::option::Option<AttributeValue<'life>>,
18038    ///
18039    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
18040    ///   
18041    pub itemprop: core::option::Option<AttributeValue<'life>>,
18042    ///
18043    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
18044    ///   
18045    pub itemref: core::option::Option<AttributeValue<'life>>,
18046    ///
18047    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
18048    ///   
18049    pub itemscope: core::option::Option<AttributeValue<'life>>,
18050    ///
18051    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
18052    ///   
18053    pub itemtype: core::option::Option<AttributeValue<'life>>,
18054    ///
18055    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
18056    ///   
18057    pub lang: core::option::Option<AttributeValue<'life>>,
18058    ///
18059    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
18060    ///   
18061    pub nonce: core::option::Option<AttributeValue<'life>>,
18062    ///
18063    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
18064    ///   
18065    pub part: core::option::Option<AttributeValue<'life>>,
18066    ///
18067    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
18068    ///   
18069    pub popover: core::option::Option<AttributeValue<'life>>,
18070    ///
18071    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
18072    ///   
18073    pub role: core::option::Option<AttributeValue<'life>>,
18074    ///
18075    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
18076    ///   
18077    pub slot: core::option::Option<AttributeValue<'life>>,
18078    ///
18079    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
18080    ///     <ul>
18081    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
18082    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
18083    ///     </ul>
18084    ///   
18085    pub spellcheck: core::option::Option<AttributeValue<'life>>,
18086    ///
18087    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
18088    ///   
18089    pub style: core::option::Option<AttributeValue<'life>>,
18090    ///
18091    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
18092    ///     <ul>
18093    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
18094    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
18095    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
18096    ///     </ul>
18097    ///   
18098    pub tabindex: core::option::Option<AttributeValue<'life>>,
18099    ///
18100    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
18101    ///   
18102    pub title: core::option::Option<AttributeValue<'life>>,
18103    ///
18104    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
18105    ///     <ul>
18106    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
18107    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
18108    ///     </ul>
18109    ///   
18110    pub translate: core::option::Option<AttributeValue<'life>>,
18111    ///
18112    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
18113    ///     <ul>
18114    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
18115    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
18116    ///     </ul>
18117    ///   
18118    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
18119}
18120#[allow(deprecated)]
18121
18122impl<'life> Bdi<'life> {
18123    /// Get the tag name of the element.
18124    /// This is the same as the name of the struct, in kebab-case.
18125    pub fn tag() -> &'static str {
18126        "bdi"
18127    }
18128    /// Sets an attribute of the element.
18129    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
18130    /// If the `alloc` feature is disabled, this function will silently fail.
18131    ///
18132    /// # Note
18133    /// This only works when the attribute is lowercase.
18134    pub fn set_attr(
18135        &mut self,
18136        name: &'life str,
18137        value: impl core::convert::Into<AttributeValue<'life>>,
18138    ) {
18139        match name {
18140            "accesskey" => self.accesskey = Some(value.into()),
18141            "autocapitalize" => self.autocapitalize = Some(value.into()),
18142            "autofocus" => self.autofocus = Some(value.into()),
18143            "class" => self.class = Some(value.into()),
18144            "contenteditable" => self.contenteditable = Some(value.into()),
18145            "contextmenu" => self.contextmenu = Some(value.into()),
18146            "dir" => self.dir = Some(value.into()),
18147            "draggable" => self.draggable = Some(value.into()),
18148            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
18149            "exportparts" => self.exportparts = Some(value.into()),
18150            "hidden" => self.hidden = Some(value.into()),
18151            "id" => self.id = Some(value.into()),
18152            "inert" => self.inert = Some(value.into()),
18153            "inputmode" => self.inputmode = Some(value.into()),
18154            "is" => self.is = Some(value.into()),
18155            "itemid" => self.itemid = Some(value.into()),
18156            "itemprop" => self.itemprop = Some(value.into()),
18157            "itemref" => self.itemref = Some(value.into()),
18158            "itemscope" => self.itemscope = Some(value.into()),
18159            "itemtype" => self.itemtype = Some(value.into()),
18160            "lang" => self.lang = Some(value.into()),
18161            "nonce" => self.nonce = Some(value.into()),
18162            "part" => self.part = Some(value.into()),
18163            "popover" => self.popover = Some(value.into()),
18164            "role" => self.role = Some(value.into()),
18165            "slot" => self.slot = Some(value.into()),
18166            "spellcheck" => self.spellcheck = Some(value.into()),
18167            "style" => self.style = Some(value.into()),
18168            "tabindex" => self.tabindex = Some(value.into()),
18169            "title" => self.title = Some(value.into()),
18170            "translate" => self.translate = Some(value.into()),
18171            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
18172            #[cfg(feature = "alloc")]
18173            _ => {
18174                #[allow(clippy::useless_conversion)]
18175                self.extra.insert(name.into(), value.into());
18176            }
18177            #[cfg(not(feature = "alloc"))]
18178            _ => {}
18179        }
18180    }
18181}
18182/// The <strong><code>&lt;bdi&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element tells the browser's bidirectional algorithm to treat the text it contains in isolation from its surrounding text. It's particularly useful when a website dynamically inserts some text and doesn't know the directionality of the text being inserted.
18183///
18184/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/bdi>
18185
18186#[cfg(feature = "alloc")]
18187#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
18188pub struct BdiOwned {
18189    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
18190    ///   
18191    pub accesskey: core::option::Option<AttributeValueOwned>,
18192    ///
18193    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
18194    ///     <ul>
18195    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
18196    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
18197    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
18198    ///       <li><code>characters</code>, all letters should default to uppercase</li>
18199    ///     </ul>
18200    ///   
18201    pub autocapitalize: core::option::Option<AttributeValueOwned>,
18202    ///
18203    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
18204    ///   
18205    pub autofocus: core::option::Option<AttributeValueOwned>,
18206    ///
18207    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
18208    ///   
18209    pub class: core::option::Option<AttributeValueOwned>,
18210    ///
18211    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
18212    ///     <ul>
18213    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
18214    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
18215    ///     </ul>
18216    ///   
18217    pub contenteditable: core::option::Option<AttributeValueOwned>,
18218    ///
18219    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
18220    ///   
18221    pub contextmenu: core::option::Option<AttributeValueOwned>,
18222    ///
18223    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
18224    ///   
18225    #[cfg(feature = "alloc")]
18226    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
18227    ///
18228    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
18229    ///     <ul>
18230    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
18231    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
18232    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
18233    ///     </ul>
18234    ///   
18235    pub dir: core::option::Option<AttributeValueOwned>,
18236    ///
18237    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
18238    ///     <ul>
18239    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
18240    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
18241    ///     </ul>
18242    ///   
18243    pub draggable: core::option::Option<AttributeValueOwned>,
18244    ///
18245    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
18246    ///   
18247    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
18248    ///
18249    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
18250    ///   
18251    pub exportparts: core::option::Option<AttributeValueOwned>,
18252    /// /// Extra attributes of the element.
18253
18254    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
18255    #[cfg(feature = "alloc")]
18256    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
18257    ///
18258    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
18259    ///   
18260    pub hidden: core::option::Option<AttributeValueOwned>,
18261    ///
18262    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
18263    ///   
18264    pub id: core::option::Option<AttributeValueOwned>,
18265    ///
18266    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
18267    ///   
18268    pub inert: core::option::Option<AttributeValueOwned>,
18269    ///
18270    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
18271    ///   
18272    pub inputmode: core::option::Option<AttributeValueOwned>,
18273    ///
18274    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
18275    ///   
18276    pub is: core::option::Option<AttributeValueOwned>,
18277    ///
18278    ///     <p>The unique, global identifier of an item.</p>
18279    ///   
18280    pub itemid: core::option::Option<AttributeValueOwned>,
18281    ///
18282    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
18283    ///   
18284    pub itemprop: core::option::Option<AttributeValueOwned>,
18285    ///
18286    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
18287    ///   
18288    pub itemref: core::option::Option<AttributeValueOwned>,
18289    ///
18290    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
18291    ///   
18292    pub itemscope: core::option::Option<AttributeValueOwned>,
18293    ///
18294    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
18295    ///   
18296    pub itemtype: core::option::Option<AttributeValueOwned>,
18297    ///
18298    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
18299    ///   
18300    pub lang: core::option::Option<AttributeValueOwned>,
18301    ///
18302    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
18303    ///   
18304    pub nonce: core::option::Option<AttributeValueOwned>,
18305    ///
18306    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
18307    ///   
18308    pub part: core::option::Option<AttributeValueOwned>,
18309    ///
18310    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
18311    ///   
18312    pub popover: core::option::Option<AttributeValueOwned>,
18313    ///
18314    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
18315    ///   
18316    pub role: core::option::Option<AttributeValueOwned>,
18317    ///
18318    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
18319    ///   
18320    pub slot: core::option::Option<AttributeValueOwned>,
18321    ///
18322    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
18323    ///     <ul>
18324    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
18325    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
18326    ///     </ul>
18327    ///   
18328    pub spellcheck: core::option::Option<AttributeValueOwned>,
18329    ///
18330    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
18331    ///   
18332    pub style: core::option::Option<AttributeValueOwned>,
18333    ///
18334    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
18335    ///     <ul>
18336    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
18337    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
18338    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
18339    ///     </ul>
18340    ///   
18341    pub tabindex: core::option::Option<AttributeValueOwned>,
18342    ///
18343    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
18344    ///   
18345    pub title: core::option::Option<AttributeValueOwned>,
18346    ///
18347    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
18348    ///     <ul>
18349    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
18350    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
18351    ///     </ul>
18352    ///   
18353    pub translate: core::option::Option<AttributeValueOwned>,
18354    ///
18355    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
18356    ///     <ul>
18357    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
18358    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
18359    ///     </ul>
18360    ///   
18361    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
18362}
18363#[allow(deprecated)]
18364#[cfg(feature = "alloc")]
18365impl BdiOwned {
18366    /// Get the tag name of the element.
18367    /// This is the same as the name of the struct, in kebab-case.
18368    pub fn tag() -> &'static str {
18369        "bdi"
18370    }
18371    /// Sets an attribute of the element.
18372    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
18373    /// If the `alloc` feature is disabled, this function will silently fail.
18374    ///
18375    /// # Note
18376    /// This only works when the attribute is lowercase.
18377    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
18378        match name {
18379            "accesskey" => self.accesskey = Some(value.into()),
18380            "autocapitalize" => self.autocapitalize = Some(value.into()),
18381            "autofocus" => self.autofocus = Some(value.into()),
18382            "class" => self.class = Some(value.into()),
18383            "contenteditable" => self.contenteditable = Some(value.into()),
18384            "contextmenu" => self.contextmenu = Some(value.into()),
18385            "dir" => self.dir = Some(value.into()),
18386            "draggable" => self.draggable = Some(value.into()),
18387            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
18388            "exportparts" => self.exportparts = Some(value.into()),
18389            "hidden" => self.hidden = Some(value.into()),
18390            "id" => self.id = Some(value.into()),
18391            "inert" => self.inert = Some(value.into()),
18392            "inputmode" => self.inputmode = Some(value.into()),
18393            "is" => self.is = Some(value.into()),
18394            "itemid" => self.itemid = Some(value.into()),
18395            "itemprop" => self.itemprop = Some(value.into()),
18396            "itemref" => self.itemref = Some(value.into()),
18397            "itemscope" => self.itemscope = Some(value.into()),
18398            "itemtype" => self.itemtype = Some(value.into()),
18399            "lang" => self.lang = Some(value.into()),
18400            "nonce" => self.nonce = Some(value.into()),
18401            "part" => self.part = Some(value.into()),
18402            "popover" => self.popover = Some(value.into()),
18403            "role" => self.role = Some(value.into()),
18404            "slot" => self.slot = Some(value.into()),
18405            "spellcheck" => self.spellcheck = Some(value.into()),
18406            "style" => self.style = Some(value.into()),
18407            "tabindex" => self.tabindex = Some(value.into()),
18408            "title" => self.title = Some(value.into()),
18409            "translate" => self.translate = Some(value.into()),
18410            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
18411            #[cfg(feature = "alloc")]
18412            _ => {
18413                #[allow(clippy::useless_conversion)]
18414                self.extra.insert(name.into(), value.into());
18415            }
18416            #[cfg(not(feature = "alloc"))]
18417            _ => {}
18418        }
18419    }
18420}
18421/// The <strong><code>&lt;bdo&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element overrides the current directionality of text, so that the text within is rendered in a different direction.
18422///
18423/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/bdo>
18424
18425#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
18426pub struct Bdo<'life> {
18427    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
18428    ///   
18429    pub accesskey: core::option::Option<AttributeValue<'life>>,
18430    ///
18431    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
18432    ///     <ul>
18433    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
18434    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
18435    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
18436    ///       <li><code>characters</code>, all letters should default to uppercase</li>
18437    ///     </ul>
18438    ///   
18439    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
18440    ///
18441    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
18442    ///   
18443    pub autofocus: core::option::Option<AttributeValue<'life>>,
18444    ///
18445    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
18446    ///   
18447    pub class: core::option::Option<AttributeValue<'life>>,
18448    ///
18449    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
18450    ///     <ul>
18451    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
18452    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
18453    ///     </ul>
18454    ///   
18455    pub contenteditable: core::option::Option<AttributeValue<'life>>,
18456    ///
18457    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
18458    ///   
18459    pub contextmenu: core::option::Option<AttributeValue<'life>>,
18460    ///
18461    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
18462    ///   
18463    #[cfg(feature = "alloc")]
18464    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
18465    ///
18466    ///     <p>The direction in which text should be rendered in this element's contents. Possible values are:</p>
18467    ///     <ul>
18468    ///       <li><code>ltr</code>: Indicates that the text should go in a left-to-right direction.</li>
18469    ///       <li><code>rtl</code>: Indicates that the text should go in a right-to-left direction.</li>
18470    ///     </ul>
18471    ///   
18472    pub dir: core::option::Option<AttributeValue<'life>>,
18473    ///
18474    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
18475    ///     <ul>
18476    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
18477    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
18478    ///     </ul>
18479    ///   
18480    pub draggable: core::option::Option<AttributeValue<'life>>,
18481    ///
18482    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
18483    ///   
18484    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
18485    ///
18486    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
18487    ///   
18488    pub exportparts: core::option::Option<AttributeValue<'life>>,
18489    /// /// Extra attributes of the element.
18490
18491    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
18492    #[cfg(feature = "alloc")]
18493    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
18494    ///
18495    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
18496    ///   
18497    pub hidden: core::option::Option<AttributeValue<'life>>,
18498    ///
18499    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
18500    ///   
18501    pub id: core::option::Option<AttributeValue<'life>>,
18502    ///
18503    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
18504    ///   
18505    pub inert: core::option::Option<AttributeValue<'life>>,
18506    ///
18507    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
18508    ///   
18509    pub inputmode: core::option::Option<AttributeValue<'life>>,
18510    ///
18511    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
18512    ///   
18513    pub is: core::option::Option<AttributeValue<'life>>,
18514    ///
18515    ///     <p>The unique, global identifier of an item.</p>
18516    ///   
18517    pub itemid: core::option::Option<AttributeValue<'life>>,
18518    ///
18519    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
18520    ///   
18521    pub itemprop: core::option::Option<AttributeValue<'life>>,
18522    ///
18523    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
18524    ///   
18525    pub itemref: core::option::Option<AttributeValue<'life>>,
18526    ///
18527    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
18528    ///   
18529    pub itemscope: core::option::Option<AttributeValue<'life>>,
18530    ///
18531    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
18532    ///   
18533    pub itemtype: core::option::Option<AttributeValue<'life>>,
18534    ///
18535    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
18536    ///   
18537    pub lang: core::option::Option<AttributeValue<'life>>,
18538    ///
18539    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
18540    ///   
18541    pub nonce: core::option::Option<AttributeValue<'life>>,
18542    ///
18543    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
18544    ///   
18545    pub part: core::option::Option<AttributeValue<'life>>,
18546    ///
18547    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
18548    ///   
18549    pub popover: core::option::Option<AttributeValue<'life>>,
18550    ///
18551    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
18552    ///   
18553    pub role: core::option::Option<AttributeValue<'life>>,
18554    ///
18555    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
18556    ///   
18557    pub slot: core::option::Option<AttributeValue<'life>>,
18558    ///
18559    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
18560    ///     <ul>
18561    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
18562    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
18563    ///     </ul>
18564    ///   
18565    pub spellcheck: core::option::Option<AttributeValue<'life>>,
18566    ///
18567    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
18568    ///   
18569    pub style: core::option::Option<AttributeValue<'life>>,
18570    ///
18571    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
18572    ///     <ul>
18573    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
18574    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
18575    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
18576    ///     </ul>
18577    ///   
18578    pub tabindex: core::option::Option<AttributeValue<'life>>,
18579    ///
18580    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
18581    ///   
18582    pub title: core::option::Option<AttributeValue<'life>>,
18583    ///
18584    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
18585    ///     <ul>
18586    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
18587    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
18588    ///     </ul>
18589    ///   
18590    pub translate: core::option::Option<AttributeValue<'life>>,
18591    ///
18592    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
18593    ///     <ul>
18594    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
18595    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
18596    ///     </ul>
18597    ///   
18598    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
18599}
18600#[allow(deprecated)]
18601
18602impl<'life> Bdo<'life> {
18603    /// Get the tag name of the element.
18604    /// This is the same as the name of the struct, in kebab-case.
18605    pub fn tag() -> &'static str {
18606        "bdo"
18607    }
18608    /// Sets an attribute of the element.
18609    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
18610    /// If the `alloc` feature is disabled, this function will silently fail.
18611    ///
18612    /// # Note
18613    /// This only works when the attribute is lowercase.
18614    pub fn set_attr(
18615        &mut self,
18616        name: &'life str,
18617        value: impl core::convert::Into<AttributeValue<'life>>,
18618    ) {
18619        match name {
18620            "accesskey" => self.accesskey = Some(value.into()),
18621            "autocapitalize" => self.autocapitalize = Some(value.into()),
18622            "autofocus" => self.autofocus = Some(value.into()),
18623            "class" => self.class = Some(value.into()),
18624            "contenteditable" => self.contenteditable = Some(value.into()),
18625            "contextmenu" => self.contextmenu = Some(value.into()),
18626            "dir" => self.dir = Some(value.into()),
18627            "draggable" => self.draggable = Some(value.into()),
18628            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
18629            "exportparts" => self.exportparts = Some(value.into()),
18630            "hidden" => self.hidden = Some(value.into()),
18631            "id" => self.id = Some(value.into()),
18632            "inert" => self.inert = Some(value.into()),
18633            "inputmode" => self.inputmode = Some(value.into()),
18634            "is" => self.is = Some(value.into()),
18635            "itemid" => self.itemid = Some(value.into()),
18636            "itemprop" => self.itemprop = Some(value.into()),
18637            "itemref" => self.itemref = Some(value.into()),
18638            "itemscope" => self.itemscope = Some(value.into()),
18639            "itemtype" => self.itemtype = Some(value.into()),
18640            "lang" => self.lang = Some(value.into()),
18641            "nonce" => self.nonce = Some(value.into()),
18642            "part" => self.part = Some(value.into()),
18643            "popover" => self.popover = Some(value.into()),
18644            "role" => self.role = Some(value.into()),
18645            "slot" => self.slot = Some(value.into()),
18646            "spellcheck" => self.spellcheck = Some(value.into()),
18647            "style" => self.style = Some(value.into()),
18648            "tabindex" => self.tabindex = Some(value.into()),
18649            "title" => self.title = Some(value.into()),
18650            "translate" => self.translate = Some(value.into()),
18651            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
18652            #[cfg(feature = "alloc")]
18653            _ => {
18654                #[allow(clippy::useless_conversion)]
18655                self.extra.insert(name.into(), value.into());
18656            }
18657            #[cfg(not(feature = "alloc"))]
18658            _ => {}
18659        }
18660    }
18661}
18662/// The <strong><code>&lt;bdo&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element overrides the current directionality of text, so that the text within is rendered in a different direction.
18663///
18664/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/bdo>
18665
18666#[cfg(feature = "alloc")]
18667#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
18668pub struct BdoOwned {
18669    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
18670    ///   
18671    pub accesskey: core::option::Option<AttributeValueOwned>,
18672    ///
18673    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
18674    ///     <ul>
18675    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
18676    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
18677    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
18678    ///       <li><code>characters</code>, all letters should default to uppercase</li>
18679    ///     </ul>
18680    ///   
18681    pub autocapitalize: core::option::Option<AttributeValueOwned>,
18682    ///
18683    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
18684    ///   
18685    pub autofocus: core::option::Option<AttributeValueOwned>,
18686    ///
18687    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
18688    ///   
18689    pub class: core::option::Option<AttributeValueOwned>,
18690    ///
18691    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
18692    ///     <ul>
18693    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
18694    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
18695    ///     </ul>
18696    ///   
18697    pub contenteditable: core::option::Option<AttributeValueOwned>,
18698    ///
18699    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
18700    ///   
18701    pub contextmenu: core::option::Option<AttributeValueOwned>,
18702    ///
18703    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
18704    ///   
18705    #[cfg(feature = "alloc")]
18706    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
18707    ///
18708    ///     <p>The direction in which text should be rendered in this element's contents. Possible values are:</p>
18709    ///     <ul>
18710    ///       <li><code>ltr</code>: Indicates that the text should go in a left-to-right direction.</li>
18711    ///       <li><code>rtl</code>: Indicates that the text should go in a right-to-left direction.</li>
18712    ///     </ul>
18713    ///   
18714    pub dir: core::option::Option<AttributeValueOwned>,
18715    ///
18716    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
18717    ///     <ul>
18718    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
18719    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
18720    ///     </ul>
18721    ///   
18722    pub draggable: core::option::Option<AttributeValueOwned>,
18723    ///
18724    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
18725    ///   
18726    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
18727    ///
18728    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
18729    ///   
18730    pub exportparts: core::option::Option<AttributeValueOwned>,
18731    /// /// Extra attributes of the element.
18732
18733    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
18734    #[cfg(feature = "alloc")]
18735    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
18736    ///
18737    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
18738    ///   
18739    pub hidden: core::option::Option<AttributeValueOwned>,
18740    ///
18741    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
18742    ///   
18743    pub id: core::option::Option<AttributeValueOwned>,
18744    ///
18745    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
18746    ///   
18747    pub inert: core::option::Option<AttributeValueOwned>,
18748    ///
18749    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
18750    ///   
18751    pub inputmode: core::option::Option<AttributeValueOwned>,
18752    ///
18753    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
18754    ///   
18755    pub is: core::option::Option<AttributeValueOwned>,
18756    ///
18757    ///     <p>The unique, global identifier of an item.</p>
18758    ///   
18759    pub itemid: core::option::Option<AttributeValueOwned>,
18760    ///
18761    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
18762    ///   
18763    pub itemprop: core::option::Option<AttributeValueOwned>,
18764    ///
18765    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
18766    ///   
18767    pub itemref: core::option::Option<AttributeValueOwned>,
18768    ///
18769    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
18770    ///   
18771    pub itemscope: core::option::Option<AttributeValueOwned>,
18772    ///
18773    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
18774    ///   
18775    pub itemtype: core::option::Option<AttributeValueOwned>,
18776    ///
18777    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
18778    ///   
18779    pub lang: core::option::Option<AttributeValueOwned>,
18780    ///
18781    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
18782    ///   
18783    pub nonce: core::option::Option<AttributeValueOwned>,
18784    ///
18785    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
18786    ///   
18787    pub part: core::option::Option<AttributeValueOwned>,
18788    ///
18789    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
18790    ///   
18791    pub popover: core::option::Option<AttributeValueOwned>,
18792    ///
18793    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
18794    ///   
18795    pub role: core::option::Option<AttributeValueOwned>,
18796    ///
18797    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
18798    ///   
18799    pub slot: core::option::Option<AttributeValueOwned>,
18800    ///
18801    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
18802    ///     <ul>
18803    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
18804    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
18805    ///     </ul>
18806    ///   
18807    pub spellcheck: core::option::Option<AttributeValueOwned>,
18808    ///
18809    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
18810    ///   
18811    pub style: core::option::Option<AttributeValueOwned>,
18812    ///
18813    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
18814    ///     <ul>
18815    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
18816    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
18817    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
18818    ///     </ul>
18819    ///   
18820    pub tabindex: core::option::Option<AttributeValueOwned>,
18821    ///
18822    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
18823    ///   
18824    pub title: core::option::Option<AttributeValueOwned>,
18825    ///
18826    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
18827    ///     <ul>
18828    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
18829    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
18830    ///     </ul>
18831    ///   
18832    pub translate: core::option::Option<AttributeValueOwned>,
18833    ///
18834    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
18835    ///     <ul>
18836    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
18837    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
18838    ///     </ul>
18839    ///   
18840    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
18841}
18842#[allow(deprecated)]
18843#[cfg(feature = "alloc")]
18844impl BdoOwned {
18845    /// Get the tag name of the element.
18846    /// This is the same as the name of the struct, in kebab-case.
18847    pub fn tag() -> &'static str {
18848        "bdo"
18849    }
18850    /// Sets an attribute of the element.
18851    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
18852    /// If the `alloc` feature is disabled, this function will silently fail.
18853    ///
18854    /// # Note
18855    /// This only works when the attribute is lowercase.
18856    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
18857        match name {
18858            "accesskey" => self.accesskey = Some(value.into()),
18859            "autocapitalize" => self.autocapitalize = Some(value.into()),
18860            "autofocus" => self.autofocus = Some(value.into()),
18861            "class" => self.class = Some(value.into()),
18862            "contenteditable" => self.contenteditable = Some(value.into()),
18863            "contextmenu" => self.contextmenu = Some(value.into()),
18864            "dir" => self.dir = Some(value.into()),
18865            "draggable" => self.draggable = Some(value.into()),
18866            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
18867            "exportparts" => self.exportparts = Some(value.into()),
18868            "hidden" => self.hidden = Some(value.into()),
18869            "id" => self.id = Some(value.into()),
18870            "inert" => self.inert = Some(value.into()),
18871            "inputmode" => self.inputmode = Some(value.into()),
18872            "is" => self.is = Some(value.into()),
18873            "itemid" => self.itemid = Some(value.into()),
18874            "itemprop" => self.itemprop = Some(value.into()),
18875            "itemref" => self.itemref = Some(value.into()),
18876            "itemscope" => self.itemscope = Some(value.into()),
18877            "itemtype" => self.itemtype = Some(value.into()),
18878            "lang" => self.lang = Some(value.into()),
18879            "nonce" => self.nonce = Some(value.into()),
18880            "part" => self.part = Some(value.into()),
18881            "popover" => self.popover = Some(value.into()),
18882            "role" => self.role = Some(value.into()),
18883            "slot" => self.slot = Some(value.into()),
18884            "spellcheck" => self.spellcheck = Some(value.into()),
18885            "style" => self.style = Some(value.into()),
18886            "tabindex" => self.tabindex = Some(value.into()),
18887            "title" => self.title = Some(value.into()),
18888            "translate" => self.translate = Some(value.into()),
18889            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
18890            #[cfg(feature = "alloc")]
18891            _ => {
18892                #[allow(clippy::useless_conversion)]
18893                self.extra.insert(name.into(), value.into());
18894            }
18895            #[cfg(not(feature = "alloc"))]
18896            _ => {}
18897        }
18898    }
18899}
18900/// The <strong><code>&lt;br&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element produces a line break in text (carriage-return). It is useful for writing a poem or an address, where the division of lines is significant.
18901///
18902/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/br>
18903
18904#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
18905pub struct Br<'life> {
18906    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
18907    ///   
18908    pub accesskey: core::option::Option<AttributeValue<'life>>,
18909    ///
18910    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
18911    ///     <ul>
18912    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
18913    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
18914    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
18915    ///       <li><code>characters</code>, all letters should default to uppercase</li>
18916    ///     </ul>
18917    ///   
18918    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
18919    ///
18920    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
18921    ///   
18922    pub autofocus: core::option::Option<AttributeValue<'life>>,
18923    ///
18924    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
18925    ///   
18926    pub class: core::option::Option<AttributeValue<'life>>,
18927    ///
18928    ///     <p>Indicates where to begin the next line after the break.</p>
18929    ///   
18930    pub clear: core::option::Option<AttributeValue<'life>>,
18931    ///
18932    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
18933    ///     <ul>
18934    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
18935    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
18936    ///     </ul>
18937    ///   
18938    pub contenteditable: core::option::Option<AttributeValue<'life>>,
18939    ///
18940    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
18941    ///   
18942    pub contextmenu: core::option::Option<AttributeValue<'life>>,
18943    ///
18944    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
18945    ///   
18946    #[cfg(feature = "alloc")]
18947    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
18948    ///
18949    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
18950    ///     <ul>
18951    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
18952    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
18953    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
18954    ///     </ul>
18955    ///   
18956    pub dir: core::option::Option<AttributeValue<'life>>,
18957    ///
18958    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
18959    ///     <ul>
18960    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
18961    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
18962    ///     </ul>
18963    ///   
18964    pub draggable: core::option::Option<AttributeValue<'life>>,
18965    ///
18966    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
18967    ///   
18968    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
18969    ///
18970    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
18971    ///   
18972    pub exportparts: core::option::Option<AttributeValue<'life>>,
18973    /// /// Extra attributes of the element.
18974
18975    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
18976    #[cfg(feature = "alloc")]
18977    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
18978    ///
18979    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
18980    ///   
18981    pub hidden: core::option::Option<AttributeValue<'life>>,
18982    ///
18983    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
18984    ///   
18985    pub id: core::option::Option<AttributeValue<'life>>,
18986    ///
18987    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
18988    ///   
18989    pub inert: core::option::Option<AttributeValue<'life>>,
18990    ///
18991    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
18992    ///   
18993    pub inputmode: core::option::Option<AttributeValue<'life>>,
18994    ///
18995    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
18996    ///   
18997    pub is: core::option::Option<AttributeValue<'life>>,
18998    ///
18999    ///     <p>The unique, global identifier of an item.</p>
19000    ///   
19001    pub itemid: core::option::Option<AttributeValue<'life>>,
19002    ///
19003    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
19004    ///   
19005    pub itemprop: core::option::Option<AttributeValue<'life>>,
19006    ///
19007    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
19008    ///   
19009    pub itemref: core::option::Option<AttributeValue<'life>>,
19010    ///
19011    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
19012    ///   
19013    pub itemscope: core::option::Option<AttributeValue<'life>>,
19014    ///
19015    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
19016    ///   
19017    pub itemtype: core::option::Option<AttributeValue<'life>>,
19018    ///
19019    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
19020    ///   
19021    pub lang: core::option::Option<AttributeValue<'life>>,
19022    ///
19023    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
19024    ///   
19025    pub nonce: core::option::Option<AttributeValue<'life>>,
19026    ///
19027    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
19028    ///   
19029    pub part: core::option::Option<AttributeValue<'life>>,
19030    ///
19031    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
19032    ///   
19033    pub popover: core::option::Option<AttributeValue<'life>>,
19034    ///
19035    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
19036    ///   
19037    pub role: core::option::Option<AttributeValue<'life>>,
19038    ///
19039    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
19040    ///   
19041    pub slot: core::option::Option<AttributeValue<'life>>,
19042    ///
19043    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
19044    ///     <ul>
19045    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
19046    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
19047    ///     </ul>
19048    ///   
19049    pub spellcheck: core::option::Option<AttributeValue<'life>>,
19050    ///
19051    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
19052    ///   
19053    pub style: core::option::Option<AttributeValue<'life>>,
19054    ///
19055    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
19056    ///     <ul>
19057    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
19058    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
19059    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
19060    ///     </ul>
19061    ///   
19062    pub tabindex: core::option::Option<AttributeValue<'life>>,
19063    ///
19064    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
19065    ///   
19066    pub title: core::option::Option<AttributeValue<'life>>,
19067    ///
19068    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
19069    ///     <ul>
19070    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
19071    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
19072    ///     </ul>
19073    ///   
19074    pub translate: core::option::Option<AttributeValue<'life>>,
19075    ///
19076    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
19077    ///     <ul>
19078    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
19079    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
19080    ///     </ul>
19081    ///   
19082    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
19083}
19084#[allow(deprecated)]
19085
19086impl<'life> Br<'life> {
19087    /// Get the tag name of the element.
19088    /// This is the same as the name of the struct, in kebab-case.
19089    pub fn tag() -> &'static str {
19090        "br"
19091    }
19092    /// Sets an attribute of the element.
19093    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
19094    /// If the `alloc` feature is disabled, this function will silently fail.
19095    ///
19096    /// # Note
19097    /// This only works when the attribute is lowercase.
19098    pub fn set_attr(
19099        &mut self,
19100        name: &'life str,
19101        value: impl core::convert::Into<AttributeValue<'life>>,
19102    ) {
19103        match name {
19104            "accesskey" => self.accesskey = Some(value.into()),
19105            "autocapitalize" => self.autocapitalize = Some(value.into()),
19106            "autofocus" => self.autofocus = Some(value.into()),
19107            "class" => self.class = Some(value.into()),
19108            "clear" => self.clear = Some(value.into()),
19109            "contenteditable" => self.contenteditable = Some(value.into()),
19110            "contextmenu" => self.contextmenu = Some(value.into()),
19111            "dir" => self.dir = Some(value.into()),
19112            "draggable" => self.draggable = Some(value.into()),
19113            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
19114            "exportparts" => self.exportparts = Some(value.into()),
19115            "hidden" => self.hidden = Some(value.into()),
19116            "id" => self.id = Some(value.into()),
19117            "inert" => self.inert = Some(value.into()),
19118            "inputmode" => self.inputmode = Some(value.into()),
19119            "is" => self.is = Some(value.into()),
19120            "itemid" => self.itemid = Some(value.into()),
19121            "itemprop" => self.itemprop = Some(value.into()),
19122            "itemref" => self.itemref = Some(value.into()),
19123            "itemscope" => self.itemscope = Some(value.into()),
19124            "itemtype" => self.itemtype = Some(value.into()),
19125            "lang" => self.lang = Some(value.into()),
19126            "nonce" => self.nonce = Some(value.into()),
19127            "part" => self.part = Some(value.into()),
19128            "popover" => self.popover = Some(value.into()),
19129            "role" => self.role = Some(value.into()),
19130            "slot" => self.slot = Some(value.into()),
19131            "spellcheck" => self.spellcheck = Some(value.into()),
19132            "style" => self.style = Some(value.into()),
19133            "tabindex" => self.tabindex = Some(value.into()),
19134            "title" => self.title = Some(value.into()),
19135            "translate" => self.translate = Some(value.into()),
19136            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
19137            #[cfg(feature = "alloc")]
19138            _ => {
19139                #[allow(clippy::useless_conversion)]
19140                self.extra.insert(name.into(), value.into());
19141            }
19142            #[cfg(not(feature = "alloc"))]
19143            _ => {}
19144        }
19145    }
19146}
19147/// The <strong><code>&lt;br&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element produces a line break in text (carriage-return). It is useful for writing a poem or an address, where the division of lines is significant.
19148///
19149/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/br>
19150
19151#[cfg(feature = "alloc")]
19152#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
19153pub struct BrOwned {
19154    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
19155    ///   
19156    pub accesskey: core::option::Option<AttributeValueOwned>,
19157    ///
19158    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
19159    ///     <ul>
19160    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
19161    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
19162    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
19163    ///       <li><code>characters</code>, all letters should default to uppercase</li>
19164    ///     </ul>
19165    ///   
19166    pub autocapitalize: core::option::Option<AttributeValueOwned>,
19167    ///
19168    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
19169    ///   
19170    pub autofocus: core::option::Option<AttributeValueOwned>,
19171    ///
19172    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
19173    ///   
19174    pub class: core::option::Option<AttributeValueOwned>,
19175    ///
19176    ///     <p>Indicates where to begin the next line after the break.</p>
19177    ///   
19178    pub clear: core::option::Option<AttributeValueOwned>,
19179    ///
19180    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
19181    ///     <ul>
19182    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
19183    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
19184    ///     </ul>
19185    ///   
19186    pub contenteditable: core::option::Option<AttributeValueOwned>,
19187    ///
19188    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
19189    ///   
19190    pub contextmenu: core::option::Option<AttributeValueOwned>,
19191    ///
19192    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
19193    ///   
19194    #[cfg(feature = "alloc")]
19195    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
19196    ///
19197    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
19198    ///     <ul>
19199    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
19200    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
19201    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
19202    ///     </ul>
19203    ///   
19204    pub dir: core::option::Option<AttributeValueOwned>,
19205    ///
19206    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
19207    ///     <ul>
19208    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
19209    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
19210    ///     </ul>
19211    ///   
19212    pub draggable: core::option::Option<AttributeValueOwned>,
19213    ///
19214    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
19215    ///   
19216    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
19217    ///
19218    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
19219    ///   
19220    pub exportparts: core::option::Option<AttributeValueOwned>,
19221    /// /// Extra attributes of the element.
19222
19223    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
19224    #[cfg(feature = "alloc")]
19225    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
19226    ///
19227    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
19228    ///   
19229    pub hidden: core::option::Option<AttributeValueOwned>,
19230    ///
19231    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
19232    ///   
19233    pub id: core::option::Option<AttributeValueOwned>,
19234    ///
19235    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
19236    ///   
19237    pub inert: core::option::Option<AttributeValueOwned>,
19238    ///
19239    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
19240    ///   
19241    pub inputmode: core::option::Option<AttributeValueOwned>,
19242    ///
19243    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
19244    ///   
19245    pub is: core::option::Option<AttributeValueOwned>,
19246    ///
19247    ///     <p>The unique, global identifier of an item.</p>
19248    ///   
19249    pub itemid: core::option::Option<AttributeValueOwned>,
19250    ///
19251    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
19252    ///   
19253    pub itemprop: core::option::Option<AttributeValueOwned>,
19254    ///
19255    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
19256    ///   
19257    pub itemref: core::option::Option<AttributeValueOwned>,
19258    ///
19259    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
19260    ///   
19261    pub itemscope: core::option::Option<AttributeValueOwned>,
19262    ///
19263    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
19264    ///   
19265    pub itemtype: core::option::Option<AttributeValueOwned>,
19266    ///
19267    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
19268    ///   
19269    pub lang: core::option::Option<AttributeValueOwned>,
19270    ///
19271    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
19272    ///   
19273    pub nonce: core::option::Option<AttributeValueOwned>,
19274    ///
19275    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
19276    ///   
19277    pub part: core::option::Option<AttributeValueOwned>,
19278    ///
19279    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
19280    ///   
19281    pub popover: core::option::Option<AttributeValueOwned>,
19282    ///
19283    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
19284    ///   
19285    pub role: core::option::Option<AttributeValueOwned>,
19286    ///
19287    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
19288    ///   
19289    pub slot: core::option::Option<AttributeValueOwned>,
19290    ///
19291    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
19292    ///     <ul>
19293    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
19294    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
19295    ///     </ul>
19296    ///   
19297    pub spellcheck: core::option::Option<AttributeValueOwned>,
19298    ///
19299    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
19300    ///   
19301    pub style: core::option::Option<AttributeValueOwned>,
19302    ///
19303    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
19304    ///     <ul>
19305    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
19306    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
19307    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
19308    ///     </ul>
19309    ///   
19310    pub tabindex: core::option::Option<AttributeValueOwned>,
19311    ///
19312    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
19313    ///   
19314    pub title: core::option::Option<AttributeValueOwned>,
19315    ///
19316    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
19317    ///     <ul>
19318    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
19319    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
19320    ///     </ul>
19321    ///   
19322    pub translate: core::option::Option<AttributeValueOwned>,
19323    ///
19324    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
19325    ///     <ul>
19326    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
19327    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
19328    ///     </ul>
19329    ///   
19330    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
19331}
19332#[allow(deprecated)]
19333#[cfg(feature = "alloc")]
19334impl BrOwned {
19335    /// Get the tag name of the element.
19336    /// This is the same as the name of the struct, in kebab-case.
19337    pub fn tag() -> &'static str {
19338        "br"
19339    }
19340    /// Sets an attribute of the element.
19341    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
19342    /// If the `alloc` feature is disabled, this function will silently fail.
19343    ///
19344    /// # Note
19345    /// This only works when the attribute is lowercase.
19346    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
19347        match name {
19348            "accesskey" => self.accesskey = Some(value.into()),
19349            "autocapitalize" => self.autocapitalize = Some(value.into()),
19350            "autofocus" => self.autofocus = Some(value.into()),
19351            "class" => self.class = Some(value.into()),
19352            "clear" => self.clear = Some(value.into()),
19353            "contenteditable" => self.contenteditable = Some(value.into()),
19354            "contextmenu" => self.contextmenu = Some(value.into()),
19355            "dir" => self.dir = Some(value.into()),
19356            "draggable" => self.draggable = Some(value.into()),
19357            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
19358            "exportparts" => self.exportparts = Some(value.into()),
19359            "hidden" => self.hidden = Some(value.into()),
19360            "id" => self.id = Some(value.into()),
19361            "inert" => self.inert = Some(value.into()),
19362            "inputmode" => self.inputmode = Some(value.into()),
19363            "is" => self.is = Some(value.into()),
19364            "itemid" => self.itemid = Some(value.into()),
19365            "itemprop" => self.itemprop = Some(value.into()),
19366            "itemref" => self.itemref = Some(value.into()),
19367            "itemscope" => self.itemscope = Some(value.into()),
19368            "itemtype" => self.itemtype = Some(value.into()),
19369            "lang" => self.lang = Some(value.into()),
19370            "nonce" => self.nonce = Some(value.into()),
19371            "part" => self.part = Some(value.into()),
19372            "popover" => self.popover = Some(value.into()),
19373            "role" => self.role = Some(value.into()),
19374            "slot" => self.slot = Some(value.into()),
19375            "spellcheck" => self.spellcheck = Some(value.into()),
19376            "style" => self.style = Some(value.into()),
19377            "tabindex" => self.tabindex = Some(value.into()),
19378            "title" => self.title = Some(value.into()),
19379            "translate" => self.translate = Some(value.into()),
19380            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
19381            #[cfg(feature = "alloc")]
19382            _ => {
19383                #[allow(clippy::useless_conversion)]
19384                self.extra.insert(name.into(), value.into());
19385            }
19386            #[cfg(not(feature = "alloc"))]
19387            _ => {}
19388        }
19389    }
19390}
19391/// The <strong><code>&lt;cite&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element is used to mark up the title of a cited creative work. The reference may be in an abbreviated form according to context-appropriate conventions related to citation metadata.
19392///
19393/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/cite>
19394
19395#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
19396pub struct Cite<'life> {
19397    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
19398    ///   
19399    pub accesskey: core::option::Option<AttributeValue<'life>>,
19400    ///
19401    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
19402    ///     <ul>
19403    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
19404    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
19405    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
19406    ///       <li><code>characters</code>, all letters should default to uppercase</li>
19407    ///     </ul>
19408    ///   
19409    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
19410    ///
19411    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
19412    ///   
19413    pub autofocus: core::option::Option<AttributeValue<'life>>,
19414    ///
19415    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
19416    ///   
19417    pub class: core::option::Option<AttributeValue<'life>>,
19418    ///
19419    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
19420    ///     <ul>
19421    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
19422    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
19423    ///     </ul>
19424    ///   
19425    pub contenteditable: core::option::Option<AttributeValue<'life>>,
19426    ///
19427    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
19428    ///   
19429    pub contextmenu: core::option::Option<AttributeValue<'life>>,
19430    ///
19431    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
19432    ///   
19433    #[cfg(feature = "alloc")]
19434    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
19435    ///
19436    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
19437    ///     <ul>
19438    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
19439    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
19440    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
19441    ///     </ul>
19442    ///   
19443    pub dir: core::option::Option<AttributeValue<'life>>,
19444    ///
19445    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
19446    ///     <ul>
19447    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
19448    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
19449    ///     </ul>
19450    ///   
19451    pub draggable: core::option::Option<AttributeValue<'life>>,
19452    ///
19453    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
19454    ///   
19455    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
19456    ///
19457    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
19458    ///   
19459    pub exportparts: core::option::Option<AttributeValue<'life>>,
19460    /// /// Extra attributes of the element.
19461
19462    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
19463    #[cfg(feature = "alloc")]
19464    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
19465    ///
19466    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
19467    ///   
19468    pub hidden: core::option::Option<AttributeValue<'life>>,
19469    ///
19470    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
19471    ///   
19472    pub id: core::option::Option<AttributeValue<'life>>,
19473    ///
19474    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
19475    ///   
19476    pub inert: core::option::Option<AttributeValue<'life>>,
19477    ///
19478    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
19479    ///   
19480    pub inputmode: core::option::Option<AttributeValue<'life>>,
19481    ///
19482    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
19483    ///   
19484    pub is: core::option::Option<AttributeValue<'life>>,
19485    ///
19486    ///     <p>The unique, global identifier of an item.</p>
19487    ///   
19488    pub itemid: core::option::Option<AttributeValue<'life>>,
19489    ///
19490    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
19491    ///   
19492    pub itemprop: core::option::Option<AttributeValue<'life>>,
19493    ///
19494    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
19495    ///   
19496    pub itemref: core::option::Option<AttributeValue<'life>>,
19497    ///
19498    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
19499    ///   
19500    pub itemscope: core::option::Option<AttributeValue<'life>>,
19501    ///
19502    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
19503    ///   
19504    pub itemtype: core::option::Option<AttributeValue<'life>>,
19505    ///
19506    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
19507    ///   
19508    pub lang: core::option::Option<AttributeValue<'life>>,
19509    ///
19510    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
19511    ///   
19512    pub nonce: core::option::Option<AttributeValue<'life>>,
19513    ///
19514    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
19515    ///   
19516    pub part: core::option::Option<AttributeValue<'life>>,
19517    ///
19518    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
19519    ///   
19520    pub popover: core::option::Option<AttributeValue<'life>>,
19521    ///
19522    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
19523    ///   
19524    pub role: core::option::Option<AttributeValue<'life>>,
19525    ///
19526    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
19527    ///   
19528    pub slot: core::option::Option<AttributeValue<'life>>,
19529    ///
19530    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
19531    ///     <ul>
19532    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
19533    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
19534    ///     </ul>
19535    ///   
19536    pub spellcheck: core::option::Option<AttributeValue<'life>>,
19537    ///
19538    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
19539    ///   
19540    pub style: core::option::Option<AttributeValue<'life>>,
19541    ///
19542    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
19543    ///     <ul>
19544    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
19545    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
19546    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
19547    ///     </ul>
19548    ///   
19549    pub tabindex: core::option::Option<AttributeValue<'life>>,
19550    ///
19551    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
19552    ///   
19553    pub title: core::option::Option<AttributeValue<'life>>,
19554    ///
19555    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
19556    ///     <ul>
19557    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
19558    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
19559    ///     </ul>
19560    ///   
19561    pub translate: core::option::Option<AttributeValue<'life>>,
19562    ///
19563    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
19564    ///     <ul>
19565    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
19566    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
19567    ///     </ul>
19568    ///   
19569    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
19570}
19571#[allow(deprecated)]
19572
19573impl<'life> Cite<'life> {
19574    /// Get the tag name of the element.
19575    /// This is the same as the name of the struct, in kebab-case.
19576    pub fn tag() -> &'static str {
19577        "cite"
19578    }
19579    /// Sets an attribute of the element.
19580    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
19581    /// If the `alloc` feature is disabled, this function will silently fail.
19582    ///
19583    /// # Note
19584    /// This only works when the attribute is lowercase.
19585    pub fn set_attr(
19586        &mut self,
19587        name: &'life str,
19588        value: impl core::convert::Into<AttributeValue<'life>>,
19589    ) {
19590        match name {
19591            "accesskey" => self.accesskey = Some(value.into()),
19592            "autocapitalize" => self.autocapitalize = Some(value.into()),
19593            "autofocus" => self.autofocus = Some(value.into()),
19594            "class" => self.class = Some(value.into()),
19595            "contenteditable" => self.contenteditable = Some(value.into()),
19596            "contextmenu" => self.contextmenu = Some(value.into()),
19597            "dir" => self.dir = Some(value.into()),
19598            "draggable" => self.draggable = Some(value.into()),
19599            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
19600            "exportparts" => self.exportparts = Some(value.into()),
19601            "hidden" => self.hidden = Some(value.into()),
19602            "id" => self.id = Some(value.into()),
19603            "inert" => self.inert = Some(value.into()),
19604            "inputmode" => self.inputmode = Some(value.into()),
19605            "is" => self.is = Some(value.into()),
19606            "itemid" => self.itemid = Some(value.into()),
19607            "itemprop" => self.itemprop = Some(value.into()),
19608            "itemref" => self.itemref = Some(value.into()),
19609            "itemscope" => self.itemscope = Some(value.into()),
19610            "itemtype" => self.itemtype = Some(value.into()),
19611            "lang" => self.lang = Some(value.into()),
19612            "nonce" => self.nonce = Some(value.into()),
19613            "part" => self.part = Some(value.into()),
19614            "popover" => self.popover = Some(value.into()),
19615            "role" => self.role = Some(value.into()),
19616            "slot" => self.slot = Some(value.into()),
19617            "spellcheck" => self.spellcheck = Some(value.into()),
19618            "style" => self.style = Some(value.into()),
19619            "tabindex" => self.tabindex = Some(value.into()),
19620            "title" => self.title = Some(value.into()),
19621            "translate" => self.translate = Some(value.into()),
19622            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
19623            #[cfg(feature = "alloc")]
19624            _ => {
19625                #[allow(clippy::useless_conversion)]
19626                self.extra.insert(name.into(), value.into());
19627            }
19628            #[cfg(not(feature = "alloc"))]
19629            _ => {}
19630        }
19631    }
19632}
19633/// The <strong><code>&lt;cite&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element is used to mark up the title of a cited creative work. The reference may be in an abbreviated form according to context-appropriate conventions related to citation metadata.
19634///
19635/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/cite>
19636
19637#[cfg(feature = "alloc")]
19638#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
19639pub struct CiteOwned {
19640    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
19641    ///   
19642    pub accesskey: core::option::Option<AttributeValueOwned>,
19643    ///
19644    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
19645    ///     <ul>
19646    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
19647    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
19648    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
19649    ///       <li><code>characters</code>, all letters should default to uppercase</li>
19650    ///     </ul>
19651    ///   
19652    pub autocapitalize: core::option::Option<AttributeValueOwned>,
19653    ///
19654    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
19655    ///   
19656    pub autofocus: core::option::Option<AttributeValueOwned>,
19657    ///
19658    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
19659    ///   
19660    pub class: core::option::Option<AttributeValueOwned>,
19661    ///
19662    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
19663    ///     <ul>
19664    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
19665    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
19666    ///     </ul>
19667    ///   
19668    pub contenteditable: core::option::Option<AttributeValueOwned>,
19669    ///
19670    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
19671    ///   
19672    pub contextmenu: core::option::Option<AttributeValueOwned>,
19673    ///
19674    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
19675    ///   
19676    #[cfg(feature = "alloc")]
19677    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
19678    ///
19679    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
19680    ///     <ul>
19681    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
19682    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
19683    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
19684    ///     </ul>
19685    ///   
19686    pub dir: core::option::Option<AttributeValueOwned>,
19687    ///
19688    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
19689    ///     <ul>
19690    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
19691    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
19692    ///     </ul>
19693    ///   
19694    pub draggable: core::option::Option<AttributeValueOwned>,
19695    ///
19696    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
19697    ///   
19698    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
19699    ///
19700    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
19701    ///   
19702    pub exportparts: core::option::Option<AttributeValueOwned>,
19703    /// /// Extra attributes of the element.
19704
19705    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
19706    #[cfg(feature = "alloc")]
19707    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
19708    ///
19709    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
19710    ///   
19711    pub hidden: core::option::Option<AttributeValueOwned>,
19712    ///
19713    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
19714    ///   
19715    pub id: core::option::Option<AttributeValueOwned>,
19716    ///
19717    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
19718    ///   
19719    pub inert: core::option::Option<AttributeValueOwned>,
19720    ///
19721    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
19722    ///   
19723    pub inputmode: core::option::Option<AttributeValueOwned>,
19724    ///
19725    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
19726    ///   
19727    pub is: core::option::Option<AttributeValueOwned>,
19728    ///
19729    ///     <p>The unique, global identifier of an item.</p>
19730    ///   
19731    pub itemid: core::option::Option<AttributeValueOwned>,
19732    ///
19733    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
19734    ///   
19735    pub itemprop: core::option::Option<AttributeValueOwned>,
19736    ///
19737    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
19738    ///   
19739    pub itemref: core::option::Option<AttributeValueOwned>,
19740    ///
19741    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
19742    ///   
19743    pub itemscope: core::option::Option<AttributeValueOwned>,
19744    ///
19745    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
19746    ///   
19747    pub itemtype: core::option::Option<AttributeValueOwned>,
19748    ///
19749    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
19750    ///   
19751    pub lang: core::option::Option<AttributeValueOwned>,
19752    ///
19753    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
19754    ///   
19755    pub nonce: core::option::Option<AttributeValueOwned>,
19756    ///
19757    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
19758    ///   
19759    pub part: core::option::Option<AttributeValueOwned>,
19760    ///
19761    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
19762    ///   
19763    pub popover: core::option::Option<AttributeValueOwned>,
19764    ///
19765    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
19766    ///   
19767    pub role: core::option::Option<AttributeValueOwned>,
19768    ///
19769    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
19770    ///   
19771    pub slot: core::option::Option<AttributeValueOwned>,
19772    ///
19773    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
19774    ///     <ul>
19775    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
19776    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
19777    ///     </ul>
19778    ///   
19779    pub spellcheck: core::option::Option<AttributeValueOwned>,
19780    ///
19781    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
19782    ///   
19783    pub style: core::option::Option<AttributeValueOwned>,
19784    ///
19785    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
19786    ///     <ul>
19787    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
19788    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
19789    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
19790    ///     </ul>
19791    ///   
19792    pub tabindex: core::option::Option<AttributeValueOwned>,
19793    ///
19794    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
19795    ///   
19796    pub title: core::option::Option<AttributeValueOwned>,
19797    ///
19798    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
19799    ///     <ul>
19800    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
19801    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
19802    ///     </ul>
19803    ///   
19804    pub translate: core::option::Option<AttributeValueOwned>,
19805    ///
19806    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
19807    ///     <ul>
19808    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
19809    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
19810    ///     </ul>
19811    ///   
19812    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
19813}
19814#[allow(deprecated)]
19815#[cfg(feature = "alloc")]
19816impl CiteOwned {
19817    /// Get the tag name of the element.
19818    /// This is the same as the name of the struct, in kebab-case.
19819    pub fn tag() -> &'static str {
19820        "cite"
19821    }
19822    /// Sets an attribute of the element.
19823    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
19824    /// If the `alloc` feature is disabled, this function will silently fail.
19825    ///
19826    /// # Note
19827    /// This only works when the attribute is lowercase.
19828    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
19829        match name {
19830            "accesskey" => self.accesskey = Some(value.into()),
19831            "autocapitalize" => self.autocapitalize = Some(value.into()),
19832            "autofocus" => self.autofocus = Some(value.into()),
19833            "class" => self.class = Some(value.into()),
19834            "contenteditable" => self.contenteditable = Some(value.into()),
19835            "contextmenu" => self.contextmenu = Some(value.into()),
19836            "dir" => self.dir = Some(value.into()),
19837            "draggable" => self.draggable = Some(value.into()),
19838            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
19839            "exportparts" => self.exportparts = Some(value.into()),
19840            "hidden" => self.hidden = Some(value.into()),
19841            "id" => self.id = Some(value.into()),
19842            "inert" => self.inert = Some(value.into()),
19843            "inputmode" => self.inputmode = Some(value.into()),
19844            "is" => self.is = Some(value.into()),
19845            "itemid" => self.itemid = Some(value.into()),
19846            "itemprop" => self.itemprop = Some(value.into()),
19847            "itemref" => self.itemref = Some(value.into()),
19848            "itemscope" => self.itemscope = Some(value.into()),
19849            "itemtype" => self.itemtype = Some(value.into()),
19850            "lang" => self.lang = Some(value.into()),
19851            "nonce" => self.nonce = Some(value.into()),
19852            "part" => self.part = Some(value.into()),
19853            "popover" => self.popover = Some(value.into()),
19854            "role" => self.role = Some(value.into()),
19855            "slot" => self.slot = Some(value.into()),
19856            "spellcheck" => self.spellcheck = Some(value.into()),
19857            "style" => self.style = Some(value.into()),
19858            "tabindex" => self.tabindex = Some(value.into()),
19859            "title" => self.title = Some(value.into()),
19860            "translate" => self.translate = Some(value.into()),
19861            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
19862            #[cfg(feature = "alloc")]
19863            _ => {
19864                #[allow(clippy::useless_conversion)]
19865                self.extra.insert(name.into(), value.into());
19866            }
19867            #[cfg(not(feature = "alloc"))]
19868            _ => {}
19869        }
19870    }
19871}
19872/// The <strong><code>&lt;code&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element displays its contents styled in a fashion intended to indicate that the text is a short fragment of computer code. By default, the content text is displayed using the <a href="/en-US/docs/Glossary/User_agent">user agent's</a> default monospace font.
19873///
19874/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/code>
19875
19876#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
19877pub struct Code<'life> {
19878    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
19879    ///   
19880    pub accesskey: core::option::Option<AttributeValue<'life>>,
19881    ///
19882    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
19883    ///     <ul>
19884    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
19885    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
19886    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
19887    ///       <li><code>characters</code>, all letters should default to uppercase</li>
19888    ///     </ul>
19889    ///   
19890    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
19891    ///
19892    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
19893    ///   
19894    pub autofocus: core::option::Option<AttributeValue<'life>>,
19895    ///
19896    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
19897    ///   
19898    pub class: core::option::Option<AttributeValue<'life>>,
19899    ///
19900    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
19901    ///     <ul>
19902    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
19903    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
19904    ///     </ul>
19905    ///   
19906    pub contenteditable: core::option::Option<AttributeValue<'life>>,
19907    ///
19908    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
19909    ///   
19910    pub contextmenu: core::option::Option<AttributeValue<'life>>,
19911    ///
19912    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
19913    ///   
19914    #[cfg(feature = "alloc")]
19915    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
19916    ///
19917    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
19918    ///     <ul>
19919    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
19920    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
19921    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
19922    ///     </ul>
19923    ///   
19924    pub dir: core::option::Option<AttributeValue<'life>>,
19925    ///
19926    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
19927    ///     <ul>
19928    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
19929    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
19930    ///     </ul>
19931    ///   
19932    pub draggable: core::option::Option<AttributeValue<'life>>,
19933    ///
19934    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
19935    ///   
19936    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
19937    ///
19938    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
19939    ///   
19940    pub exportparts: core::option::Option<AttributeValue<'life>>,
19941    /// /// Extra attributes of the element.
19942
19943    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
19944    #[cfg(feature = "alloc")]
19945    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
19946    ///
19947    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
19948    ///   
19949    pub hidden: core::option::Option<AttributeValue<'life>>,
19950    ///
19951    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
19952    ///   
19953    pub id: core::option::Option<AttributeValue<'life>>,
19954    ///
19955    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
19956    ///   
19957    pub inert: core::option::Option<AttributeValue<'life>>,
19958    ///
19959    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
19960    ///   
19961    pub inputmode: core::option::Option<AttributeValue<'life>>,
19962    ///
19963    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
19964    ///   
19965    pub is: core::option::Option<AttributeValue<'life>>,
19966    ///
19967    ///     <p>The unique, global identifier of an item.</p>
19968    ///   
19969    pub itemid: core::option::Option<AttributeValue<'life>>,
19970    ///
19971    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
19972    ///   
19973    pub itemprop: core::option::Option<AttributeValue<'life>>,
19974    ///
19975    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
19976    ///   
19977    pub itemref: core::option::Option<AttributeValue<'life>>,
19978    ///
19979    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
19980    ///   
19981    pub itemscope: core::option::Option<AttributeValue<'life>>,
19982    ///
19983    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
19984    ///   
19985    pub itemtype: core::option::Option<AttributeValue<'life>>,
19986    ///
19987    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
19988    ///   
19989    pub lang: core::option::Option<AttributeValue<'life>>,
19990    ///
19991    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
19992    ///   
19993    pub nonce: core::option::Option<AttributeValue<'life>>,
19994    ///
19995    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
19996    ///   
19997    pub part: core::option::Option<AttributeValue<'life>>,
19998    ///
19999    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
20000    ///   
20001    pub popover: core::option::Option<AttributeValue<'life>>,
20002    ///
20003    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
20004    ///   
20005    pub role: core::option::Option<AttributeValue<'life>>,
20006    ///
20007    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
20008    ///   
20009    pub slot: core::option::Option<AttributeValue<'life>>,
20010    ///
20011    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
20012    ///     <ul>
20013    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
20014    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
20015    ///     </ul>
20016    ///   
20017    pub spellcheck: core::option::Option<AttributeValue<'life>>,
20018    ///
20019    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
20020    ///   
20021    pub style: core::option::Option<AttributeValue<'life>>,
20022    ///
20023    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
20024    ///     <ul>
20025    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
20026    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
20027    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
20028    ///     </ul>
20029    ///   
20030    pub tabindex: core::option::Option<AttributeValue<'life>>,
20031    ///
20032    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
20033    ///   
20034    pub title: core::option::Option<AttributeValue<'life>>,
20035    ///
20036    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
20037    ///     <ul>
20038    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
20039    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
20040    ///     </ul>
20041    ///   
20042    pub translate: core::option::Option<AttributeValue<'life>>,
20043    ///
20044    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
20045    ///     <ul>
20046    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
20047    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
20048    ///     </ul>
20049    ///   
20050    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
20051}
20052#[allow(deprecated)]
20053
20054impl<'life> Code<'life> {
20055    /// Get the tag name of the element.
20056    /// This is the same as the name of the struct, in kebab-case.
20057    pub fn tag() -> &'static str {
20058        "code"
20059    }
20060    /// Sets an attribute of the element.
20061    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
20062    /// If the `alloc` feature is disabled, this function will silently fail.
20063    ///
20064    /// # Note
20065    /// This only works when the attribute is lowercase.
20066    pub fn set_attr(
20067        &mut self,
20068        name: &'life str,
20069        value: impl core::convert::Into<AttributeValue<'life>>,
20070    ) {
20071        match name {
20072            "accesskey" => self.accesskey = Some(value.into()),
20073            "autocapitalize" => self.autocapitalize = Some(value.into()),
20074            "autofocus" => self.autofocus = Some(value.into()),
20075            "class" => self.class = Some(value.into()),
20076            "contenteditable" => self.contenteditable = Some(value.into()),
20077            "contextmenu" => self.contextmenu = Some(value.into()),
20078            "dir" => self.dir = Some(value.into()),
20079            "draggable" => self.draggable = Some(value.into()),
20080            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
20081            "exportparts" => self.exportparts = Some(value.into()),
20082            "hidden" => self.hidden = Some(value.into()),
20083            "id" => self.id = Some(value.into()),
20084            "inert" => self.inert = Some(value.into()),
20085            "inputmode" => self.inputmode = Some(value.into()),
20086            "is" => self.is = Some(value.into()),
20087            "itemid" => self.itemid = Some(value.into()),
20088            "itemprop" => self.itemprop = Some(value.into()),
20089            "itemref" => self.itemref = Some(value.into()),
20090            "itemscope" => self.itemscope = Some(value.into()),
20091            "itemtype" => self.itemtype = Some(value.into()),
20092            "lang" => self.lang = Some(value.into()),
20093            "nonce" => self.nonce = Some(value.into()),
20094            "part" => self.part = Some(value.into()),
20095            "popover" => self.popover = Some(value.into()),
20096            "role" => self.role = Some(value.into()),
20097            "slot" => self.slot = Some(value.into()),
20098            "spellcheck" => self.spellcheck = Some(value.into()),
20099            "style" => self.style = Some(value.into()),
20100            "tabindex" => self.tabindex = Some(value.into()),
20101            "title" => self.title = Some(value.into()),
20102            "translate" => self.translate = Some(value.into()),
20103            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
20104            #[cfg(feature = "alloc")]
20105            _ => {
20106                #[allow(clippy::useless_conversion)]
20107                self.extra.insert(name.into(), value.into());
20108            }
20109            #[cfg(not(feature = "alloc"))]
20110            _ => {}
20111        }
20112    }
20113}
20114/// The <strong><code>&lt;code&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element displays its contents styled in a fashion intended to indicate that the text is a short fragment of computer code. By default, the content text is displayed using the <a href="/en-US/docs/Glossary/User_agent">user agent's</a> default monospace font.
20115///
20116/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/code>
20117
20118#[cfg(feature = "alloc")]
20119#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
20120pub struct CodeOwned {
20121    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
20122    ///   
20123    pub accesskey: core::option::Option<AttributeValueOwned>,
20124    ///
20125    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
20126    ///     <ul>
20127    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
20128    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
20129    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
20130    ///       <li><code>characters</code>, all letters should default to uppercase</li>
20131    ///     </ul>
20132    ///   
20133    pub autocapitalize: core::option::Option<AttributeValueOwned>,
20134    ///
20135    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
20136    ///   
20137    pub autofocus: core::option::Option<AttributeValueOwned>,
20138    ///
20139    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
20140    ///   
20141    pub class: core::option::Option<AttributeValueOwned>,
20142    ///
20143    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
20144    ///     <ul>
20145    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
20146    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
20147    ///     </ul>
20148    ///   
20149    pub contenteditable: core::option::Option<AttributeValueOwned>,
20150    ///
20151    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
20152    ///   
20153    pub contextmenu: core::option::Option<AttributeValueOwned>,
20154    ///
20155    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
20156    ///   
20157    #[cfg(feature = "alloc")]
20158    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
20159    ///
20160    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
20161    ///     <ul>
20162    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
20163    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
20164    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
20165    ///     </ul>
20166    ///   
20167    pub dir: core::option::Option<AttributeValueOwned>,
20168    ///
20169    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
20170    ///     <ul>
20171    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
20172    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
20173    ///     </ul>
20174    ///   
20175    pub draggable: core::option::Option<AttributeValueOwned>,
20176    ///
20177    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
20178    ///   
20179    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
20180    ///
20181    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
20182    ///   
20183    pub exportparts: core::option::Option<AttributeValueOwned>,
20184    /// /// Extra attributes of the element.
20185
20186    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
20187    #[cfg(feature = "alloc")]
20188    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
20189    ///
20190    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
20191    ///   
20192    pub hidden: core::option::Option<AttributeValueOwned>,
20193    ///
20194    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
20195    ///   
20196    pub id: core::option::Option<AttributeValueOwned>,
20197    ///
20198    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
20199    ///   
20200    pub inert: core::option::Option<AttributeValueOwned>,
20201    ///
20202    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
20203    ///   
20204    pub inputmode: core::option::Option<AttributeValueOwned>,
20205    ///
20206    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
20207    ///   
20208    pub is: core::option::Option<AttributeValueOwned>,
20209    ///
20210    ///     <p>The unique, global identifier of an item.</p>
20211    ///   
20212    pub itemid: core::option::Option<AttributeValueOwned>,
20213    ///
20214    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
20215    ///   
20216    pub itemprop: core::option::Option<AttributeValueOwned>,
20217    ///
20218    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
20219    ///   
20220    pub itemref: core::option::Option<AttributeValueOwned>,
20221    ///
20222    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
20223    ///   
20224    pub itemscope: core::option::Option<AttributeValueOwned>,
20225    ///
20226    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
20227    ///   
20228    pub itemtype: core::option::Option<AttributeValueOwned>,
20229    ///
20230    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
20231    ///   
20232    pub lang: core::option::Option<AttributeValueOwned>,
20233    ///
20234    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
20235    ///   
20236    pub nonce: core::option::Option<AttributeValueOwned>,
20237    ///
20238    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
20239    ///   
20240    pub part: core::option::Option<AttributeValueOwned>,
20241    ///
20242    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
20243    ///   
20244    pub popover: core::option::Option<AttributeValueOwned>,
20245    ///
20246    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
20247    ///   
20248    pub role: core::option::Option<AttributeValueOwned>,
20249    ///
20250    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
20251    ///   
20252    pub slot: core::option::Option<AttributeValueOwned>,
20253    ///
20254    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
20255    ///     <ul>
20256    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
20257    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
20258    ///     </ul>
20259    ///   
20260    pub spellcheck: core::option::Option<AttributeValueOwned>,
20261    ///
20262    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
20263    ///   
20264    pub style: core::option::Option<AttributeValueOwned>,
20265    ///
20266    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
20267    ///     <ul>
20268    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
20269    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
20270    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
20271    ///     </ul>
20272    ///   
20273    pub tabindex: core::option::Option<AttributeValueOwned>,
20274    ///
20275    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
20276    ///   
20277    pub title: core::option::Option<AttributeValueOwned>,
20278    ///
20279    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
20280    ///     <ul>
20281    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
20282    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
20283    ///     </ul>
20284    ///   
20285    pub translate: core::option::Option<AttributeValueOwned>,
20286    ///
20287    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
20288    ///     <ul>
20289    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
20290    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
20291    ///     </ul>
20292    ///   
20293    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
20294}
20295#[allow(deprecated)]
20296#[cfg(feature = "alloc")]
20297impl CodeOwned {
20298    /// Get the tag name of the element.
20299    /// This is the same as the name of the struct, in kebab-case.
20300    pub fn tag() -> &'static str {
20301        "code"
20302    }
20303    /// Sets an attribute of the element.
20304    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
20305    /// If the `alloc` feature is disabled, this function will silently fail.
20306    ///
20307    /// # Note
20308    /// This only works when the attribute is lowercase.
20309    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
20310        match name {
20311            "accesskey" => self.accesskey = Some(value.into()),
20312            "autocapitalize" => self.autocapitalize = Some(value.into()),
20313            "autofocus" => self.autofocus = Some(value.into()),
20314            "class" => self.class = Some(value.into()),
20315            "contenteditable" => self.contenteditable = Some(value.into()),
20316            "contextmenu" => self.contextmenu = Some(value.into()),
20317            "dir" => self.dir = Some(value.into()),
20318            "draggable" => self.draggable = Some(value.into()),
20319            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
20320            "exportparts" => self.exportparts = Some(value.into()),
20321            "hidden" => self.hidden = Some(value.into()),
20322            "id" => self.id = Some(value.into()),
20323            "inert" => self.inert = Some(value.into()),
20324            "inputmode" => self.inputmode = Some(value.into()),
20325            "is" => self.is = Some(value.into()),
20326            "itemid" => self.itemid = Some(value.into()),
20327            "itemprop" => self.itemprop = Some(value.into()),
20328            "itemref" => self.itemref = Some(value.into()),
20329            "itemscope" => self.itemscope = Some(value.into()),
20330            "itemtype" => self.itemtype = Some(value.into()),
20331            "lang" => self.lang = Some(value.into()),
20332            "nonce" => self.nonce = Some(value.into()),
20333            "part" => self.part = Some(value.into()),
20334            "popover" => self.popover = Some(value.into()),
20335            "role" => self.role = Some(value.into()),
20336            "slot" => self.slot = Some(value.into()),
20337            "spellcheck" => self.spellcheck = Some(value.into()),
20338            "style" => self.style = Some(value.into()),
20339            "tabindex" => self.tabindex = Some(value.into()),
20340            "title" => self.title = Some(value.into()),
20341            "translate" => self.translate = Some(value.into()),
20342            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
20343            #[cfg(feature = "alloc")]
20344            _ => {
20345                #[allow(clippy::useless_conversion)]
20346                self.extra.insert(name.into(), value.into());
20347            }
20348            #[cfg(not(feature = "alloc"))]
20349            _ => {}
20350        }
20351    }
20352}
20353/// The <strong><code>&lt;data&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element links a given piece of content with a machine-readable translation. If the content is time- or date-related, the <a href="/en-US/docs/Web/HTML/Element/time"><code>&lt;time&gt;</code></a> element must be used.
20354///
20355/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/data>
20356
20357#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
20358pub struct Data<'life> {
20359    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
20360    ///   
20361    pub accesskey: core::option::Option<AttributeValue<'life>>,
20362    ///
20363    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
20364    ///     <ul>
20365    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
20366    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
20367    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
20368    ///       <li><code>characters</code>, all letters should default to uppercase</li>
20369    ///     </ul>
20370    ///   
20371    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
20372    ///
20373    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
20374    ///   
20375    pub autofocus: core::option::Option<AttributeValue<'life>>,
20376    ///
20377    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
20378    ///   
20379    pub class: core::option::Option<AttributeValue<'life>>,
20380    ///
20381    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
20382    ///     <ul>
20383    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
20384    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
20385    ///     </ul>
20386    ///   
20387    pub contenteditable: core::option::Option<AttributeValue<'life>>,
20388    ///
20389    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
20390    ///   
20391    pub contextmenu: core::option::Option<AttributeValue<'life>>,
20392    ///
20393    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
20394    ///   
20395    #[cfg(feature = "alloc")]
20396    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
20397    ///
20398    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
20399    ///     <ul>
20400    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
20401    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
20402    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
20403    ///     </ul>
20404    ///   
20405    pub dir: core::option::Option<AttributeValue<'life>>,
20406    ///
20407    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
20408    ///     <ul>
20409    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
20410    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
20411    ///     </ul>
20412    ///   
20413    pub draggable: core::option::Option<AttributeValue<'life>>,
20414    ///
20415    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
20416    ///   
20417    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
20418    ///
20419    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
20420    ///   
20421    pub exportparts: core::option::Option<AttributeValue<'life>>,
20422    /// /// Extra attributes of the element.
20423
20424    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
20425    #[cfg(feature = "alloc")]
20426    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
20427    ///
20428    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
20429    ///   
20430    pub hidden: core::option::Option<AttributeValue<'life>>,
20431    ///
20432    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
20433    ///   
20434    pub id: core::option::Option<AttributeValue<'life>>,
20435    ///
20436    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
20437    ///   
20438    pub inert: core::option::Option<AttributeValue<'life>>,
20439    ///
20440    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
20441    ///   
20442    pub inputmode: core::option::Option<AttributeValue<'life>>,
20443    ///
20444    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
20445    ///   
20446    pub is: core::option::Option<AttributeValue<'life>>,
20447    ///
20448    ///     <p>The unique, global identifier of an item.</p>
20449    ///   
20450    pub itemid: core::option::Option<AttributeValue<'life>>,
20451    ///
20452    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
20453    ///   
20454    pub itemprop: core::option::Option<AttributeValue<'life>>,
20455    ///
20456    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
20457    ///   
20458    pub itemref: core::option::Option<AttributeValue<'life>>,
20459    ///
20460    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
20461    ///   
20462    pub itemscope: core::option::Option<AttributeValue<'life>>,
20463    ///
20464    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
20465    ///   
20466    pub itemtype: core::option::Option<AttributeValue<'life>>,
20467    ///
20468    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
20469    ///   
20470    pub lang: core::option::Option<AttributeValue<'life>>,
20471    ///
20472    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
20473    ///   
20474    pub nonce: core::option::Option<AttributeValue<'life>>,
20475    ///
20476    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
20477    ///   
20478    pub part: core::option::Option<AttributeValue<'life>>,
20479    ///
20480    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
20481    ///   
20482    pub popover: core::option::Option<AttributeValue<'life>>,
20483    ///
20484    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
20485    ///   
20486    pub role: core::option::Option<AttributeValue<'life>>,
20487    ///
20488    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
20489    ///   
20490    pub slot: core::option::Option<AttributeValue<'life>>,
20491    ///
20492    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
20493    ///     <ul>
20494    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
20495    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
20496    ///     </ul>
20497    ///   
20498    pub spellcheck: core::option::Option<AttributeValue<'life>>,
20499    ///
20500    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
20501    ///   
20502    pub style: core::option::Option<AttributeValue<'life>>,
20503    ///
20504    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
20505    ///     <ul>
20506    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
20507    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
20508    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
20509    ///     </ul>
20510    ///   
20511    pub tabindex: core::option::Option<AttributeValue<'life>>,
20512    ///
20513    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
20514    ///   
20515    pub title: core::option::Option<AttributeValue<'life>>,
20516    ///
20517    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
20518    ///     <ul>
20519    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
20520    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
20521    ///     </ul>
20522    ///   
20523    pub translate: core::option::Option<AttributeValue<'life>>,
20524    ///
20525    ///     <p>This attribute specifies the machine-readable translation of the content of the element.</p>
20526    ///   
20527    pub value: core::option::Option<AttributeValue<'life>>,
20528    ///
20529    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
20530    ///     <ul>
20531    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
20532    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
20533    ///     </ul>
20534    ///   
20535    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
20536}
20537#[allow(deprecated)]
20538
20539impl<'life> Data<'life> {
20540    /// Get the tag name of the element.
20541    /// This is the same as the name of the struct, in kebab-case.
20542    pub fn tag() -> &'static str {
20543        "data"
20544    }
20545    /// Sets an attribute of the element.
20546    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
20547    /// If the `alloc` feature is disabled, this function will silently fail.
20548    ///
20549    /// # Note
20550    /// This only works when the attribute is lowercase.
20551    pub fn set_attr(
20552        &mut self,
20553        name: &'life str,
20554        value: impl core::convert::Into<AttributeValue<'life>>,
20555    ) {
20556        match name {
20557            "accesskey" => self.accesskey = Some(value.into()),
20558            "autocapitalize" => self.autocapitalize = Some(value.into()),
20559            "autofocus" => self.autofocus = Some(value.into()),
20560            "class" => self.class = Some(value.into()),
20561            "contenteditable" => self.contenteditable = Some(value.into()),
20562            "contextmenu" => self.contextmenu = Some(value.into()),
20563            "dir" => self.dir = Some(value.into()),
20564            "draggable" => self.draggable = Some(value.into()),
20565            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
20566            "exportparts" => self.exportparts = Some(value.into()),
20567            "hidden" => self.hidden = Some(value.into()),
20568            "id" => self.id = Some(value.into()),
20569            "inert" => self.inert = Some(value.into()),
20570            "inputmode" => self.inputmode = Some(value.into()),
20571            "is" => self.is = Some(value.into()),
20572            "itemid" => self.itemid = Some(value.into()),
20573            "itemprop" => self.itemprop = Some(value.into()),
20574            "itemref" => self.itemref = Some(value.into()),
20575            "itemscope" => self.itemscope = Some(value.into()),
20576            "itemtype" => self.itemtype = Some(value.into()),
20577            "lang" => self.lang = Some(value.into()),
20578            "nonce" => self.nonce = Some(value.into()),
20579            "part" => self.part = Some(value.into()),
20580            "popover" => self.popover = Some(value.into()),
20581            "role" => self.role = Some(value.into()),
20582            "slot" => self.slot = Some(value.into()),
20583            "spellcheck" => self.spellcheck = Some(value.into()),
20584            "style" => self.style = Some(value.into()),
20585            "tabindex" => self.tabindex = Some(value.into()),
20586            "title" => self.title = Some(value.into()),
20587            "translate" => self.translate = Some(value.into()),
20588            "value" => self.value = Some(value.into()),
20589            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
20590            #[cfg(feature = "alloc")]
20591            _ => {
20592                #[allow(clippy::useless_conversion)]
20593                self.extra.insert(name.into(), value.into());
20594            }
20595            #[cfg(not(feature = "alloc"))]
20596            _ => {}
20597        }
20598    }
20599}
20600/// The <strong><code>&lt;data&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element links a given piece of content with a machine-readable translation. If the content is time- or date-related, the <a href="/en-US/docs/Web/HTML/Element/time"><code>&lt;time&gt;</code></a> element must be used.
20601///
20602/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/data>
20603
20604#[cfg(feature = "alloc")]
20605#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
20606pub struct DataOwned {
20607    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
20608    ///   
20609    pub accesskey: core::option::Option<AttributeValueOwned>,
20610    ///
20611    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
20612    ///     <ul>
20613    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
20614    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
20615    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
20616    ///       <li><code>characters</code>, all letters should default to uppercase</li>
20617    ///     </ul>
20618    ///   
20619    pub autocapitalize: core::option::Option<AttributeValueOwned>,
20620    ///
20621    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
20622    ///   
20623    pub autofocus: core::option::Option<AttributeValueOwned>,
20624    ///
20625    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
20626    ///   
20627    pub class: core::option::Option<AttributeValueOwned>,
20628    ///
20629    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
20630    ///     <ul>
20631    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
20632    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
20633    ///     </ul>
20634    ///   
20635    pub contenteditable: core::option::Option<AttributeValueOwned>,
20636    ///
20637    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
20638    ///   
20639    pub contextmenu: core::option::Option<AttributeValueOwned>,
20640    ///
20641    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
20642    ///   
20643    #[cfg(feature = "alloc")]
20644    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
20645    ///
20646    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
20647    ///     <ul>
20648    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
20649    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
20650    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
20651    ///     </ul>
20652    ///   
20653    pub dir: core::option::Option<AttributeValueOwned>,
20654    ///
20655    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
20656    ///     <ul>
20657    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
20658    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
20659    ///     </ul>
20660    ///   
20661    pub draggable: core::option::Option<AttributeValueOwned>,
20662    ///
20663    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
20664    ///   
20665    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
20666    ///
20667    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
20668    ///   
20669    pub exportparts: core::option::Option<AttributeValueOwned>,
20670    /// /// Extra attributes of the element.
20671
20672    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
20673    #[cfg(feature = "alloc")]
20674    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
20675    ///
20676    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
20677    ///   
20678    pub hidden: core::option::Option<AttributeValueOwned>,
20679    ///
20680    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
20681    ///   
20682    pub id: core::option::Option<AttributeValueOwned>,
20683    ///
20684    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
20685    ///   
20686    pub inert: core::option::Option<AttributeValueOwned>,
20687    ///
20688    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
20689    ///   
20690    pub inputmode: core::option::Option<AttributeValueOwned>,
20691    ///
20692    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
20693    ///   
20694    pub is: core::option::Option<AttributeValueOwned>,
20695    ///
20696    ///     <p>The unique, global identifier of an item.</p>
20697    ///   
20698    pub itemid: core::option::Option<AttributeValueOwned>,
20699    ///
20700    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
20701    ///   
20702    pub itemprop: core::option::Option<AttributeValueOwned>,
20703    ///
20704    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
20705    ///   
20706    pub itemref: core::option::Option<AttributeValueOwned>,
20707    ///
20708    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
20709    ///   
20710    pub itemscope: core::option::Option<AttributeValueOwned>,
20711    ///
20712    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
20713    ///   
20714    pub itemtype: core::option::Option<AttributeValueOwned>,
20715    ///
20716    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
20717    ///   
20718    pub lang: core::option::Option<AttributeValueOwned>,
20719    ///
20720    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
20721    ///   
20722    pub nonce: core::option::Option<AttributeValueOwned>,
20723    ///
20724    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
20725    ///   
20726    pub part: core::option::Option<AttributeValueOwned>,
20727    ///
20728    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
20729    ///   
20730    pub popover: core::option::Option<AttributeValueOwned>,
20731    ///
20732    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
20733    ///   
20734    pub role: core::option::Option<AttributeValueOwned>,
20735    ///
20736    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
20737    ///   
20738    pub slot: core::option::Option<AttributeValueOwned>,
20739    ///
20740    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
20741    ///     <ul>
20742    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
20743    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
20744    ///     </ul>
20745    ///   
20746    pub spellcheck: core::option::Option<AttributeValueOwned>,
20747    ///
20748    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
20749    ///   
20750    pub style: core::option::Option<AttributeValueOwned>,
20751    ///
20752    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
20753    ///     <ul>
20754    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
20755    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
20756    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
20757    ///     </ul>
20758    ///   
20759    pub tabindex: core::option::Option<AttributeValueOwned>,
20760    ///
20761    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
20762    ///   
20763    pub title: core::option::Option<AttributeValueOwned>,
20764    ///
20765    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
20766    ///     <ul>
20767    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
20768    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
20769    ///     </ul>
20770    ///   
20771    pub translate: core::option::Option<AttributeValueOwned>,
20772    ///
20773    ///     <p>This attribute specifies the machine-readable translation of the content of the element.</p>
20774    ///   
20775    pub value: core::option::Option<AttributeValueOwned>,
20776    ///
20777    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
20778    ///     <ul>
20779    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
20780    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
20781    ///     </ul>
20782    ///   
20783    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
20784}
20785#[allow(deprecated)]
20786#[cfg(feature = "alloc")]
20787impl DataOwned {
20788    /// Get the tag name of the element.
20789    /// This is the same as the name of the struct, in kebab-case.
20790    pub fn tag() -> &'static str {
20791        "data"
20792    }
20793    /// Sets an attribute of the element.
20794    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
20795    /// If the `alloc` feature is disabled, this function will silently fail.
20796    ///
20797    /// # Note
20798    /// This only works when the attribute is lowercase.
20799    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
20800        match name {
20801            "accesskey" => self.accesskey = Some(value.into()),
20802            "autocapitalize" => self.autocapitalize = Some(value.into()),
20803            "autofocus" => self.autofocus = Some(value.into()),
20804            "class" => self.class = Some(value.into()),
20805            "contenteditable" => self.contenteditable = Some(value.into()),
20806            "contextmenu" => self.contextmenu = Some(value.into()),
20807            "dir" => self.dir = Some(value.into()),
20808            "draggable" => self.draggable = Some(value.into()),
20809            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
20810            "exportparts" => self.exportparts = Some(value.into()),
20811            "hidden" => self.hidden = Some(value.into()),
20812            "id" => self.id = Some(value.into()),
20813            "inert" => self.inert = Some(value.into()),
20814            "inputmode" => self.inputmode = Some(value.into()),
20815            "is" => self.is = Some(value.into()),
20816            "itemid" => self.itemid = Some(value.into()),
20817            "itemprop" => self.itemprop = Some(value.into()),
20818            "itemref" => self.itemref = Some(value.into()),
20819            "itemscope" => self.itemscope = Some(value.into()),
20820            "itemtype" => self.itemtype = Some(value.into()),
20821            "lang" => self.lang = Some(value.into()),
20822            "nonce" => self.nonce = Some(value.into()),
20823            "part" => self.part = Some(value.into()),
20824            "popover" => self.popover = Some(value.into()),
20825            "role" => self.role = Some(value.into()),
20826            "slot" => self.slot = Some(value.into()),
20827            "spellcheck" => self.spellcheck = Some(value.into()),
20828            "style" => self.style = Some(value.into()),
20829            "tabindex" => self.tabindex = Some(value.into()),
20830            "title" => self.title = Some(value.into()),
20831            "translate" => self.translate = Some(value.into()),
20832            "value" => self.value = Some(value.into()),
20833            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
20834            #[cfg(feature = "alloc")]
20835            _ => {
20836                #[allow(clippy::useless_conversion)]
20837                self.extra.insert(name.into(), value.into());
20838            }
20839            #[cfg(not(feature = "alloc"))]
20840            _ => {}
20841        }
20842    }
20843}
20844/// The <strong><code>&lt;dfn&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element is used to indicate the term being defined within the context of a definition phrase or sentence. The ancestor <a href="/en-US/docs/Web/HTML/Element/p"><code>&lt;p&gt;</code></a> element, the <a href="/en-US/docs/Web/HTML/Element/dt"><code>&lt;dt&gt;</code></a>/<a href="/en-US/docs/Web/HTML/Element/dd"><code>&lt;dd&gt;</code></a> pairing, or the nearest <a href="/en-US/docs/Web/HTML/Element/section"><code>&lt;section&gt;</code></a> ancestor of the <code>&lt;dfn&gt;</code> element, is considered to be the definition of the term.
20845///
20846/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dfn>
20847
20848#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
20849pub struct Dfn<'life> {
20850    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
20851    ///   
20852    pub accesskey: core::option::Option<AttributeValue<'life>>,
20853    ///
20854    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
20855    ///     <ul>
20856    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
20857    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
20858    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
20859    ///       <li><code>characters</code>, all letters should default to uppercase</li>
20860    ///     </ul>
20861    ///   
20862    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
20863    ///
20864    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
20865    ///   
20866    pub autofocus: core::option::Option<AttributeValue<'life>>,
20867    ///
20868    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
20869    ///   
20870    pub class: core::option::Option<AttributeValue<'life>>,
20871    ///
20872    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
20873    ///     <ul>
20874    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
20875    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
20876    ///     </ul>
20877    ///   
20878    pub contenteditable: core::option::Option<AttributeValue<'life>>,
20879    ///
20880    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
20881    ///   
20882    pub contextmenu: core::option::Option<AttributeValue<'life>>,
20883    ///
20884    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
20885    ///   
20886    #[cfg(feature = "alloc")]
20887    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
20888    ///
20889    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
20890    ///     <ul>
20891    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
20892    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
20893    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
20894    ///     </ul>
20895    ///   
20896    pub dir: core::option::Option<AttributeValue<'life>>,
20897    ///
20898    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
20899    ///     <ul>
20900    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
20901    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
20902    ///     </ul>
20903    ///   
20904    pub draggable: core::option::Option<AttributeValue<'life>>,
20905    ///
20906    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
20907    ///   
20908    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
20909    ///
20910    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
20911    ///   
20912    pub exportparts: core::option::Option<AttributeValue<'life>>,
20913    /// /// Extra attributes of the element.
20914
20915    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
20916    #[cfg(feature = "alloc")]
20917    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
20918    ///
20919    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
20920    ///   
20921    pub hidden: core::option::Option<AttributeValue<'life>>,
20922    ///
20923    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
20924    ///   
20925    pub id: core::option::Option<AttributeValue<'life>>,
20926    ///
20927    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
20928    ///   
20929    pub inert: core::option::Option<AttributeValue<'life>>,
20930    ///
20931    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
20932    ///   
20933    pub inputmode: core::option::Option<AttributeValue<'life>>,
20934    ///
20935    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
20936    ///   
20937    pub is: core::option::Option<AttributeValue<'life>>,
20938    ///
20939    ///     <p>The unique, global identifier of an item.</p>
20940    ///   
20941    pub itemid: core::option::Option<AttributeValue<'life>>,
20942    ///
20943    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
20944    ///   
20945    pub itemprop: core::option::Option<AttributeValue<'life>>,
20946    ///
20947    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
20948    ///   
20949    pub itemref: core::option::Option<AttributeValue<'life>>,
20950    ///
20951    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
20952    ///   
20953    pub itemscope: core::option::Option<AttributeValue<'life>>,
20954    ///
20955    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
20956    ///   
20957    pub itemtype: core::option::Option<AttributeValue<'life>>,
20958    ///
20959    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
20960    ///   
20961    pub lang: core::option::Option<AttributeValue<'life>>,
20962    ///
20963    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
20964    ///   
20965    pub nonce: core::option::Option<AttributeValue<'life>>,
20966    ///
20967    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
20968    ///   
20969    pub part: core::option::Option<AttributeValue<'life>>,
20970    ///
20971    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
20972    ///   
20973    pub popover: core::option::Option<AttributeValue<'life>>,
20974    ///
20975    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
20976    ///   
20977    pub role: core::option::Option<AttributeValue<'life>>,
20978    ///
20979    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
20980    ///   
20981    pub slot: core::option::Option<AttributeValue<'life>>,
20982    ///
20983    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
20984    ///     <ul>
20985    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
20986    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
20987    ///     </ul>
20988    ///   
20989    pub spellcheck: core::option::Option<AttributeValue<'life>>,
20990    ///
20991    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
20992    ///   
20993    pub style: core::option::Option<AttributeValue<'life>>,
20994    ///
20995    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
20996    ///     <ul>
20997    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
20998    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
20999    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
21000    ///     </ul>
21001    ///   
21002    pub tabindex: core::option::Option<AttributeValue<'life>>,
21003    ///
21004    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
21005    ///   
21006    pub title: core::option::Option<AttributeValue<'life>>,
21007    ///
21008    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
21009    ///     <ul>
21010    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
21011    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
21012    ///     </ul>
21013    ///   
21014    pub translate: core::option::Option<AttributeValue<'life>>,
21015    ///
21016    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
21017    ///     <ul>
21018    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
21019    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
21020    ///     </ul>
21021    ///   
21022    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
21023}
21024#[allow(deprecated)]
21025
21026impl<'life> Dfn<'life> {
21027    /// Get the tag name of the element.
21028    /// This is the same as the name of the struct, in kebab-case.
21029    pub fn tag() -> &'static str {
21030        "dfn"
21031    }
21032    /// Sets an attribute of the element.
21033    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
21034    /// If the `alloc` feature is disabled, this function will silently fail.
21035    ///
21036    /// # Note
21037    /// This only works when the attribute is lowercase.
21038    pub fn set_attr(
21039        &mut self,
21040        name: &'life str,
21041        value: impl core::convert::Into<AttributeValue<'life>>,
21042    ) {
21043        match name {
21044            "accesskey" => self.accesskey = Some(value.into()),
21045            "autocapitalize" => self.autocapitalize = Some(value.into()),
21046            "autofocus" => self.autofocus = Some(value.into()),
21047            "class" => self.class = Some(value.into()),
21048            "contenteditable" => self.contenteditable = Some(value.into()),
21049            "contextmenu" => self.contextmenu = Some(value.into()),
21050            "dir" => self.dir = Some(value.into()),
21051            "draggable" => self.draggable = Some(value.into()),
21052            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
21053            "exportparts" => self.exportparts = Some(value.into()),
21054            "hidden" => self.hidden = Some(value.into()),
21055            "id" => self.id = Some(value.into()),
21056            "inert" => self.inert = Some(value.into()),
21057            "inputmode" => self.inputmode = Some(value.into()),
21058            "is" => self.is = Some(value.into()),
21059            "itemid" => self.itemid = Some(value.into()),
21060            "itemprop" => self.itemprop = Some(value.into()),
21061            "itemref" => self.itemref = Some(value.into()),
21062            "itemscope" => self.itemscope = Some(value.into()),
21063            "itemtype" => self.itemtype = Some(value.into()),
21064            "lang" => self.lang = Some(value.into()),
21065            "nonce" => self.nonce = Some(value.into()),
21066            "part" => self.part = Some(value.into()),
21067            "popover" => self.popover = Some(value.into()),
21068            "role" => self.role = Some(value.into()),
21069            "slot" => self.slot = Some(value.into()),
21070            "spellcheck" => self.spellcheck = Some(value.into()),
21071            "style" => self.style = Some(value.into()),
21072            "tabindex" => self.tabindex = Some(value.into()),
21073            "title" => self.title = Some(value.into()),
21074            "translate" => self.translate = Some(value.into()),
21075            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
21076            #[cfg(feature = "alloc")]
21077            _ => {
21078                #[allow(clippy::useless_conversion)]
21079                self.extra.insert(name.into(), value.into());
21080            }
21081            #[cfg(not(feature = "alloc"))]
21082            _ => {}
21083        }
21084    }
21085}
21086/// The <strong><code>&lt;dfn&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element is used to indicate the term being defined within the context of a definition phrase or sentence. The ancestor <a href="/en-US/docs/Web/HTML/Element/p"><code>&lt;p&gt;</code></a> element, the <a href="/en-US/docs/Web/HTML/Element/dt"><code>&lt;dt&gt;</code></a>/<a href="/en-US/docs/Web/HTML/Element/dd"><code>&lt;dd&gt;</code></a> pairing, or the nearest <a href="/en-US/docs/Web/HTML/Element/section"><code>&lt;section&gt;</code></a> ancestor of the <code>&lt;dfn&gt;</code> element, is considered to be the definition of the term.
21087///
21088/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dfn>
21089
21090#[cfg(feature = "alloc")]
21091#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
21092pub struct DfnOwned {
21093    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
21094    ///   
21095    pub accesskey: core::option::Option<AttributeValueOwned>,
21096    ///
21097    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
21098    ///     <ul>
21099    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
21100    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
21101    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
21102    ///       <li><code>characters</code>, all letters should default to uppercase</li>
21103    ///     </ul>
21104    ///   
21105    pub autocapitalize: core::option::Option<AttributeValueOwned>,
21106    ///
21107    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
21108    ///   
21109    pub autofocus: core::option::Option<AttributeValueOwned>,
21110    ///
21111    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
21112    ///   
21113    pub class: core::option::Option<AttributeValueOwned>,
21114    ///
21115    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
21116    ///     <ul>
21117    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
21118    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
21119    ///     </ul>
21120    ///   
21121    pub contenteditable: core::option::Option<AttributeValueOwned>,
21122    ///
21123    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
21124    ///   
21125    pub contextmenu: core::option::Option<AttributeValueOwned>,
21126    ///
21127    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
21128    ///   
21129    #[cfg(feature = "alloc")]
21130    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
21131    ///
21132    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
21133    ///     <ul>
21134    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
21135    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
21136    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
21137    ///     </ul>
21138    ///   
21139    pub dir: core::option::Option<AttributeValueOwned>,
21140    ///
21141    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
21142    ///     <ul>
21143    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
21144    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
21145    ///     </ul>
21146    ///   
21147    pub draggable: core::option::Option<AttributeValueOwned>,
21148    ///
21149    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
21150    ///   
21151    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
21152    ///
21153    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
21154    ///   
21155    pub exportparts: core::option::Option<AttributeValueOwned>,
21156    /// /// Extra attributes of the element.
21157
21158    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
21159    #[cfg(feature = "alloc")]
21160    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
21161    ///
21162    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
21163    ///   
21164    pub hidden: core::option::Option<AttributeValueOwned>,
21165    ///
21166    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
21167    ///   
21168    pub id: core::option::Option<AttributeValueOwned>,
21169    ///
21170    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
21171    ///   
21172    pub inert: core::option::Option<AttributeValueOwned>,
21173    ///
21174    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
21175    ///   
21176    pub inputmode: core::option::Option<AttributeValueOwned>,
21177    ///
21178    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
21179    ///   
21180    pub is: core::option::Option<AttributeValueOwned>,
21181    ///
21182    ///     <p>The unique, global identifier of an item.</p>
21183    ///   
21184    pub itemid: core::option::Option<AttributeValueOwned>,
21185    ///
21186    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
21187    ///   
21188    pub itemprop: core::option::Option<AttributeValueOwned>,
21189    ///
21190    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
21191    ///   
21192    pub itemref: core::option::Option<AttributeValueOwned>,
21193    ///
21194    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
21195    ///   
21196    pub itemscope: core::option::Option<AttributeValueOwned>,
21197    ///
21198    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
21199    ///   
21200    pub itemtype: core::option::Option<AttributeValueOwned>,
21201    ///
21202    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
21203    ///   
21204    pub lang: core::option::Option<AttributeValueOwned>,
21205    ///
21206    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
21207    ///   
21208    pub nonce: core::option::Option<AttributeValueOwned>,
21209    ///
21210    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
21211    ///   
21212    pub part: core::option::Option<AttributeValueOwned>,
21213    ///
21214    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
21215    ///   
21216    pub popover: core::option::Option<AttributeValueOwned>,
21217    ///
21218    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
21219    ///   
21220    pub role: core::option::Option<AttributeValueOwned>,
21221    ///
21222    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
21223    ///   
21224    pub slot: core::option::Option<AttributeValueOwned>,
21225    ///
21226    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
21227    ///     <ul>
21228    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
21229    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
21230    ///     </ul>
21231    ///   
21232    pub spellcheck: core::option::Option<AttributeValueOwned>,
21233    ///
21234    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
21235    ///   
21236    pub style: core::option::Option<AttributeValueOwned>,
21237    ///
21238    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
21239    ///     <ul>
21240    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
21241    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
21242    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
21243    ///     </ul>
21244    ///   
21245    pub tabindex: core::option::Option<AttributeValueOwned>,
21246    ///
21247    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
21248    ///   
21249    pub title: core::option::Option<AttributeValueOwned>,
21250    ///
21251    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
21252    ///     <ul>
21253    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
21254    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
21255    ///     </ul>
21256    ///   
21257    pub translate: core::option::Option<AttributeValueOwned>,
21258    ///
21259    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
21260    ///     <ul>
21261    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
21262    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
21263    ///     </ul>
21264    ///   
21265    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
21266}
21267#[allow(deprecated)]
21268#[cfg(feature = "alloc")]
21269impl DfnOwned {
21270    /// Get the tag name of the element.
21271    /// This is the same as the name of the struct, in kebab-case.
21272    pub fn tag() -> &'static str {
21273        "dfn"
21274    }
21275    /// Sets an attribute of the element.
21276    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
21277    /// If the `alloc` feature is disabled, this function will silently fail.
21278    ///
21279    /// # Note
21280    /// This only works when the attribute is lowercase.
21281    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
21282        match name {
21283            "accesskey" => self.accesskey = Some(value.into()),
21284            "autocapitalize" => self.autocapitalize = Some(value.into()),
21285            "autofocus" => self.autofocus = Some(value.into()),
21286            "class" => self.class = Some(value.into()),
21287            "contenteditable" => self.contenteditable = Some(value.into()),
21288            "contextmenu" => self.contextmenu = Some(value.into()),
21289            "dir" => self.dir = Some(value.into()),
21290            "draggable" => self.draggable = Some(value.into()),
21291            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
21292            "exportparts" => self.exportparts = Some(value.into()),
21293            "hidden" => self.hidden = Some(value.into()),
21294            "id" => self.id = Some(value.into()),
21295            "inert" => self.inert = Some(value.into()),
21296            "inputmode" => self.inputmode = Some(value.into()),
21297            "is" => self.is = Some(value.into()),
21298            "itemid" => self.itemid = Some(value.into()),
21299            "itemprop" => self.itemprop = Some(value.into()),
21300            "itemref" => self.itemref = Some(value.into()),
21301            "itemscope" => self.itemscope = Some(value.into()),
21302            "itemtype" => self.itemtype = Some(value.into()),
21303            "lang" => self.lang = Some(value.into()),
21304            "nonce" => self.nonce = Some(value.into()),
21305            "part" => self.part = Some(value.into()),
21306            "popover" => self.popover = Some(value.into()),
21307            "role" => self.role = Some(value.into()),
21308            "slot" => self.slot = Some(value.into()),
21309            "spellcheck" => self.spellcheck = Some(value.into()),
21310            "style" => self.style = Some(value.into()),
21311            "tabindex" => self.tabindex = Some(value.into()),
21312            "title" => self.title = Some(value.into()),
21313            "translate" => self.translate = Some(value.into()),
21314            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
21315            #[cfg(feature = "alloc")]
21316            _ => {
21317                #[allow(clippy::useless_conversion)]
21318                self.extra.insert(name.into(), value.into());
21319            }
21320            #[cfg(not(feature = "alloc"))]
21321            _ => {}
21322        }
21323    }
21324}
21325/// The <strong><code>&lt;em&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element marks text that has stress emphasis. The <code>&lt;em&gt;</code> element can be nested, with each level of nesting indicating a greater degree of emphasis.
21326///
21327/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/em>
21328
21329#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
21330pub struct Em<'life> {
21331    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
21332    ///   
21333    pub accesskey: core::option::Option<AttributeValue<'life>>,
21334    ///
21335    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
21336    ///     <ul>
21337    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
21338    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
21339    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
21340    ///       <li><code>characters</code>, all letters should default to uppercase</li>
21341    ///     </ul>
21342    ///   
21343    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
21344    ///
21345    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
21346    ///   
21347    pub autofocus: core::option::Option<AttributeValue<'life>>,
21348    ///
21349    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
21350    ///   
21351    pub class: core::option::Option<AttributeValue<'life>>,
21352    ///
21353    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
21354    ///     <ul>
21355    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
21356    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
21357    ///     </ul>
21358    ///   
21359    pub contenteditable: core::option::Option<AttributeValue<'life>>,
21360    ///
21361    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
21362    ///   
21363    pub contextmenu: core::option::Option<AttributeValue<'life>>,
21364    ///
21365    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
21366    ///   
21367    #[cfg(feature = "alloc")]
21368    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
21369    ///
21370    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
21371    ///     <ul>
21372    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
21373    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
21374    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
21375    ///     </ul>
21376    ///   
21377    pub dir: core::option::Option<AttributeValue<'life>>,
21378    ///
21379    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
21380    ///     <ul>
21381    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
21382    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
21383    ///     </ul>
21384    ///   
21385    pub draggable: core::option::Option<AttributeValue<'life>>,
21386    ///
21387    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
21388    ///   
21389    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
21390    ///
21391    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
21392    ///   
21393    pub exportparts: core::option::Option<AttributeValue<'life>>,
21394    /// /// Extra attributes of the element.
21395
21396    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
21397    #[cfg(feature = "alloc")]
21398    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
21399    ///
21400    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
21401    ///   
21402    pub hidden: core::option::Option<AttributeValue<'life>>,
21403    ///
21404    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
21405    ///   
21406    pub id: core::option::Option<AttributeValue<'life>>,
21407    ///
21408    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
21409    ///   
21410    pub inert: core::option::Option<AttributeValue<'life>>,
21411    ///
21412    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
21413    ///   
21414    pub inputmode: core::option::Option<AttributeValue<'life>>,
21415    ///
21416    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
21417    ///   
21418    pub is: core::option::Option<AttributeValue<'life>>,
21419    ///
21420    ///     <p>The unique, global identifier of an item.</p>
21421    ///   
21422    pub itemid: core::option::Option<AttributeValue<'life>>,
21423    ///
21424    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
21425    ///   
21426    pub itemprop: core::option::Option<AttributeValue<'life>>,
21427    ///
21428    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
21429    ///   
21430    pub itemref: core::option::Option<AttributeValue<'life>>,
21431    ///
21432    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
21433    ///   
21434    pub itemscope: core::option::Option<AttributeValue<'life>>,
21435    ///
21436    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
21437    ///   
21438    pub itemtype: core::option::Option<AttributeValue<'life>>,
21439    ///
21440    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
21441    ///   
21442    pub lang: core::option::Option<AttributeValue<'life>>,
21443    ///
21444    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
21445    ///   
21446    pub nonce: core::option::Option<AttributeValue<'life>>,
21447    ///
21448    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
21449    ///   
21450    pub part: core::option::Option<AttributeValue<'life>>,
21451    ///
21452    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
21453    ///   
21454    pub popover: core::option::Option<AttributeValue<'life>>,
21455    ///
21456    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
21457    ///   
21458    pub role: core::option::Option<AttributeValue<'life>>,
21459    ///
21460    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
21461    ///   
21462    pub slot: core::option::Option<AttributeValue<'life>>,
21463    ///
21464    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
21465    ///     <ul>
21466    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
21467    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
21468    ///     </ul>
21469    ///   
21470    pub spellcheck: core::option::Option<AttributeValue<'life>>,
21471    ///
21472    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
21473    ///   
21474    pub style: core::option::Option<AttributeValue<'life>>,
21475    ///
21476    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
21477    ///     <ul>
21478    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
21479    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
21480    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
21481    ///     </ul>
21482    ///   
21483    pub tabindex: core::option::Option<AttributeValue<'life>>,
21484    ///
21485    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
21486    ///   
21487    pub title: core::option::Option<AttributeValue<'life>>,
21488    ///
21489    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
21490    ///     <ul>
21491    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
21492    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
21493    ///     </ul>
21494    ///   
21495    pub translate: core::option::Option<AttributeValue<'life>>,
21496    ///
21497    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
21498    ///     <ul>
21499    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
21500    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
21501    ///     </ul>
21502    ///   
21503    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
21504}
21505#[allow(deprecated)]
21506
21507impl<'life> Em<'life> {
21508    /// Get the tag name of the element.
21509    /// This is the same as the name of the struct, in kebab-case.
21510    pub fn tag() -> &'static str {
21511        "em"
21512    }
21513    /// Sets an attribute of the element.
21514    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
21515    /// If the `alloc` feature is disabled, this function will silently fail.
21516    ///
21517    /// # Note
21518    /// This only works when the attribute is lowercase.
21519    pub fn set_attr(
21520        &mut self,
21521        name: &'life str,
21522        value: impl core::convert::Into<AttributeValue<'life>>,
21523    ) {
21524        match name {
21525            "accesskey" => self.accesskey = Some(value.into()),
21526            "autocapitalize" => self.autocapitalize = Some(value.into()),
21527            "autofocus" => self.autofocus = Some(value.into()),
21528            "class" => self.class = Some(value.into()),
21529            "contenteditable" => self.contenteditable = Some(value.into()),
21530            "contextmenu" => self.contextmenu = Some(value.into()),
21531            "dir" => self.dir = Some(value.into()),
21532            "draggable" => self.draggable = Some(value.into()),
21533            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
21534            "exportparts" => self.exportparts = Some(value.into()),
21535            "hidden" => self.hidden = Some(value.into()),
21536            "id" => self.id = Some(value.into()),
21537            "inert" => self.inert = Some(value.into()),
21538            "inputmode" => self.inputmode = Some(value.into()),
21539            "is" => self.is = Some(value.into()),
21540            "itemid" => self.itemid = Some(value.into()),
21541            "itemprop" => self.itemprop = Some(value.into()),
21542            "itemref" => self.itemref = Some(value.into()),
21543            "itemscope" => self.itemscope = Some(value.into()),
21544            "itemtype" => self.itemtype = Some(value.into()),
21545            "lang" => self.lang = Some(value.into()),
21546            "nonce" => self.nonce = Some(value.into()),
21547            "part" => self.part = Some(value.into()),
21548            "popover" => self.popover = Some(value.into()),
21549            "role" => self.role = Some(value.into()),
21550            "slot" => self.slot = Some(value.into()),
21551            "spellcheck" => self.spellcheck = Some(value.into()),
21552            "style" => self.style = Some(value.into()),
21553            "tabindex" => self.tabindex = Some(value.into()),
21554            "title" => self.title = Some(value.into()),
21555            "translate" => self.translate = Some(value.into()),
21556            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
21557            #[cfg(feature = "alloc")]
21558            _ => {
21559                #[allow(clippy::useless_conversion)]
21560                self.extra.insert(name.into(), value.into());
21561            }
21562            #[cfg(not(feature = "alloc"))]
21563            _ => {}
21564        }
21565    }
21566}
21567/// The <strong><code>&lt;em&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element marks text that has stress emphasis. The <code>&lt;em&gt;</code> element can be nested, with each level of nesting indicating a greater degree of emphasis.
21568///
21569/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/em>
21570
21571#[cfg(feature = "alloc")]
21572#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
21573pub struct EmOwned {
21574    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
21575    ///   
21576    pub accesskey: core::option::Option<AttributeValueOwned>,
21577    ///
21578    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
21579    ///     <ul>
21580    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
21581    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
21582    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
21583    ///       <li><code>characters</code>, all letters should default to uppercase</li>
21584    ///     </ul>
21585    ///   
21586    pub autocapitalize: core::option::Option<AttributeValueOwned>,
21587    ///
21588    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
21589    ///   
21590    pub autofocus: core::option::Option<AttributeValueOwned>,
21591    ///
21592    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
21593    ///   
21594    pub class: core::option::Option<AttributeValueOwned>,
21595    ///
21596    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
21597    ///     <ul>
21598    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
21599    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
21600    ///     </ul>
21601    ///   
21602    pub contenteditable: core::option::Option<AttributeValueOwned>,
21603    ///
21604    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
21605    ///   
21606    pub contextmenu: core::option::Option<AttributeValueOwned>,
21607    ///
21608    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
21609    ///   
21610    #[cfg(feature = "alloc")]
21611    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
21612    ///
21613    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
21614    ///     <ul>
21615    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
21616    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
21617    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
21618    ///     </ul>
21619    ///   
21620    pub dir: core::option::Option<AttributeValueOwned>,
21621    ///
21622    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
21623    ///     <ul>
21624    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
21625    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
21626    ///     </ul>
21627    ///   
21628    pub draggable: core::option::Option<AttributeValueOwned>,
21629    ///
21630    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
21631    ///   
21632    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
21633    ///
21634    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
21635    ///   
21636    pub exportparts: core::option::Option<AttributeValueOwned>,
21637    /// /// Extra attributes of the element.
21638
21639    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
21640    #[cfg(feature = "alloc")]
21641    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
21642    ///
21643    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
21644    ///   
21645    pub hidden: core::option::Option<AttributeValueOwned>,
21646    ///
21647    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
21648    ///   
21649    pub id: core::option::Option<AttributeValueOwned>,
21650    ///
21651    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
21652    ///   
21653    pub inert: core::option::Option<AttributeValueOwned>,
21654    ///
21655    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
21656    ///   
21657    pub inputmode: core::option::Option<AttributeValueOwned>,
21658    ///
21659    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
21660    ///   
21661    pub is: core::option::Option<AttributeValueOwned>,
21662    ///
21663    ///     <p>The unique, global identifier of an item.</p>
21664    ///   
21665    pub itemid: core::option::Option<AttributeValueOwned>,
21666    ///
21667    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
21668    ///   
21669    pub itemprop: core::option::Option<AttributeValueOwned>,
21670    ///
21671    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
21672    ///   
21673    pub itemref: core::option::Option<AttributeValueOwned>,
21674    ///
21675    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
21676    ///   
21677    pub itemscope: core::option::Option<AttributeValueOwned>,
21678    ///
21679    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
21680    ///   
21681    pub itemtype: core::option::Option<AttributeValueOwned>,
21682    ///
21683    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
21684    ///   
21685    pub lang: core::option::Option<AttributeValueOwned>,
21686    ///
21687    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
21688    ///   
21689    pub nonce: core::option::Option<AttributeValueOwned>,
21690    ///
21691    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
21692    ///   
21693    pub part: core::option::Option<AttributeValueOwned>,
21694    ///
21695    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
21696    ///   
21697    pub popover: core::option::Option<AttributeValueOwned>,
21698    ///
21699    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
21700    ///   
21701    pub role: core::option::Option<AttributeValueOwned>,
21702    ///
21703    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
21704    ///   
21705    pub slot: core::option::Option<AttributeValueOwned>,
21706    ///
21707    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
21708    ///     <ul>
21709    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
21710    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
21711    ///     </ul>
21712    ///   
21713    pub spellcheck: core::option::Option<AttributeValueOwned>,
21714    ///
21715    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
21716    ///   
21717    pub style: core::option::Option<AttributeValueOwned>,
21718    ///
21719    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
21720    ///     <ul>
21721    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
21722    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
21723    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
21724    ///     </ul>
21725    ///   
21726    pub tabindex: core::option::Option<AttributeValueOwned>,
21727    ///
21728    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
21729    ///   
21730    pub title: core::option::Option<AttributeValueOwned>,
21731    ///
21732    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
21733    ///     <ul>
21734    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
21735    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
21736    ///     </ul>
21737    ///   
21738    pub translate: core::option::Option<AttributeValueOwned>,
21739    ///
21740    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
21741    ///     <ul>
21742    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
21743    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
21744    ///     </ul>
21745    ///   
21746    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
21747}
21748#[allow(deprecated)]
21749#[cfg(feature = "alloc")]
21750impl EmOwned {
21751    /// Get the tag name of the element.
21752    /// This is the same as the name of the struct, in kebab-case.
21753    pub fn tag() -> &'static str {
21754        "em"
21755    }
21756    /// Sets an attribute of the element.
21757    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
21758    /// If the `alloc` feature is disabled, this function will silently fail.
21759    ///
21760    /// # Note
21761    /// This only works when the attribute is lowercase.
21762    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
21763        match name {
21764            "accesskey" => self.accesskey = Some(value.into()),
21765            "autocapitalize" => self.autocapitalize = Some(value.into()),
21766            "autofocus" => self.autofocus = Some(value.into()),
21767            "class" => self.class = Some(value.into()),
21768            "contenteditable" => self.contenteditable = Some(value.into()),
21769            "contextmenu" => self.contextmenu = Some(value.into()),
21770            "dir" => self.dir = Some(value.into()),
21771            "draggable" => self.draggable = Some(value.into()),
21772            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
21773            "exportparts" => self.exportparts = Some(value.into()),
21774            "hidden" => self.hidden = Some(value.into()),
21775            "id" => self.id = Some(value.into()),
21776            "inert" => self.inert = Some(value.into()),
21777            "inputmode" => self.inputmode = Some(value.into()),
21778            "is" => self.is = Some(value.into()),
21779            "itemid" => self.itemid = Some(value.into()),
21780            "itemprop" => self.itemprop = Some(value.into()),
21781            "itemref" => self.itemref = Some(value.into()),
21782            "itemscope" => self.itemscope = Some(value.into()),
21783            "itemtype" => self.itemtype = Some(value.into()),
21784            "lang" => self.lang = Some(value.into()),
21785            "nonce" => self.nonce = Some(value.into()),
21786            "part" => self.part = Some(value.into()),
21787            "popover" => self.popover = Some(value.into()),
21788            "role" => self.role = Some(value.into()),
21789            "slot" => self.slot = Some(value.into()),
21790            "spellcheck" => self.spellcheck = Some(value.into()),
21791            "style" => self.style = Some(value.into()),
21792            "tabindex" => self.tabindex = Some(value.into()),
21793            "title" => self.title = Some(value.into()),
21794            "translate" => self.translate = Some(value.into()),
21795            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
21796            #[cfg(feature = "alloc")]
21797            _ => {
21798                #[allow(clippy::useless_conversion)]
21799                self.extra.insert(name.into(), value.into());
21800            }
21801            #[cfg(not(feature = "alloc"))]
21802            _ => {}
21803        }
21804    }
21805}
21806/// The <strong><code>&lt;i&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents a range of text that is set off from the normal text for some reason, such as idiomatic text, technical terms, taxonomical designations, among others. Historically, these have been presented using italicized type, which is the original source of the <code>&lt;i&gt;</code> naming of this element.
21807///
21808/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/i>
21809
21810#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
21811pub struct I<'life> {
21812    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
21813    ///   
21814    pub accesskey: core::option::Option<AttributeValue<'life>>,
21815    ///
21816    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
21817    ///     <ul>
21818    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
21819    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
21820    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
21821    ///       <li><code>characters</code>, all letters should default to uppercase</li>
21822    ///     </ul>
21823    ///   
21824    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
21825    ///
21826    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
21827    ///   
21828    pub autofocus: core::option::Option<AttributeValue<'life>>,
21829    ///
21830    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
21831    ///   
21832    pub class: core::option::Option<AttributeValue<'life>>,
21833    ///
21834    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
21835    ///     <ul>
21836    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
21837    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
21838    ///     </ul>
21839    ///   
21840    pub contenteditable: core::option::Option<AttributeValue<'life>>,
21841    ///
21842    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
21843    ///   
21844    pub contextmenu: core::option::Option<AttributeValue<'life>>,
21845    ///
21846    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
21847    ///   
21848    #[cfg(feature = "alloc")]
21849    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
21850    ///
21851    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
21852    ///     <ul>
21853    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
21854    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
21855    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
21856    ///     </ul>
21857    ///   
21858    pub dir: core::option::Option<AttributeValue<'life>>,
21859    ///
21860    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
21861    ///     <ul>
21862    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
21863    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
21864    ///     </ul>
21865    ///   
21866    pub draggable: core::option::Option<AttributeValue<'life>>,
21867    ///
21868    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
21869    ///   
21870    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
21871    ///
21872    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
21873    ///   
21874    pub exportparts: core::option::Option<AttributeValue<'life>>,
21875    /// /// Extra attributes of the element.
21876
21877    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
21878    #[cfg(feature = "alloc")]
21879    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
21880    ///
21881    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
21882    ///   
21883    pub hidden: core::option::Option<AttributeValue<'life>>,
21884    ///
21885    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
21886    ///   
21887    pub id: core::option::Option<AttributeValue<'life>>,
21888    ///
21889    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
21890    ///   
21891    pub inert: core::option::Option<AttributeValue<'life>>,
21892    ///
21893    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
21894    ///   
21895    pub inputmode: core::option::Option<AttributeValue<'life>>,
21896    ///
21897    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
21898    ///   
21899    pub is: core::option::Option<AttributeValue<'life>>,
21900    ///
21901    ///     <p>The unique, global identifier of an item.</p>
21902    ///   
21903    pub itemid: core::option::Option<AttributeValue<'life>>,
21904    ///
21905    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
21906    ///   
21907    pub itemprop: core::option::Option<AttributeValue<'life>>,
21908    ///
21909    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
21910    ///   
21911    pub itemref: core::option::Option<AttributeValue<'life>>,
21912    ///
21913    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
21914    ///   
21915    pub itemscope: core::option::Option<AttributeValue<'life>>,
21916    ///
21917    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
21918    ///   
21919    pub itemtype: core::option::Option<AttributeValue<'life>>,
21920    ///
21921    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
21922    ///   
21923    pub lang: core::option::Option<AttributeValue<'life>>,
21924    ///
21925    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
21926    ///   
21927    pub nonce: core::option::Option<AttributeValue<'life>>,
21928    ///
21929    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
21930    ///   
21931    pub part: core::option::Option<AttributeValue<'life>>,
21932    ///
21933    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
21934    ///   
21935    pub popover: core::option::Option<AttributeValue<'life>>,
21936    ///
21937    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
21938    ///   
21939    pub role: core::option::Option<AttributeValue<'life>>,
21940    ///
21941    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
21942    ///   
21943    pub slot: core::option::Option<AttributeValue<'life>>,
21944    ///
21945    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
21946    ///     <ul>
21947    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
21948    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
21949    ///     </ul>
21950    ///   
21951    pub spellcheck: core::option::Option<AttributeValue<'life>>,
21952    ///
21953    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
21954    ///   
21955    pub style: core::option::Option<AttributeValue<'life>>,
21956    ///
21957    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
21958    ///     <ul>
21959    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
21960    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
21961    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
21962    ///     </ul>
21963    ///   
21964    pub tabindex: core::option::Option<AttributeValue<'life>>,
21965    ///
21966    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
21967    ///   
21968    pub title: core::option::Option<AttributeValue<'life>>,
21969    ///
21970    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
21971    ///     <ul>
21972    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
21973    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
21974    ///     </ul>
21975    ///   
21976    pub translate: core::option::Option<AttributeValue<'life>>,
21977    ///
21978    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
21979    ///     <ul>
21980    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
21981    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
21982    ///     </ul>
21983    ///   
21984    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
21985}
21986#[allow(deprecated)]
21987
21988impl<'life> I<'life> {
21989    /// Get the tag name of the element.
21990    /// This is the same as the name of the struct, in kebab-case.
21991    pub fn tag() -> &'static str {
21992        "i"
21993    }
21994    /// Sets an attribute of the element.
21995    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
21996    /// If the `alloc` feature is disabled, this function will silently fail.
21997    ///
21998    /// # Note
21999    /// This only works when the attribute is lowercase.
22000    pub fn set_attr(
22001        &mut self,
22002        name: &'life str,
22003        value: impl core::convert::Into<AttributeValue<'life>>,
22004    ) {
22005        match name {
22006            "accesskey" => self.accesskey = Some(value.into()),
22007            "autocapitalize" => self.autocapitalize = Some(value.into()),
22008            "autofocus" => self.autofocus = Some(value.into()),
22009            "class" => self.class = Some(value.into()),
22010            "contenteditable" => self.contenteditable = Some(value.into()),
22011            "contextmenu" => self.contextmenu = Some(value.into()),
22012            "dir" => self.dir = Some(value.into()),
22013            "draggable" => self.draggable = Some(value.into()),
22014            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
22015            "exportparts" => self.exportparts = Some(value.into()),
22016            "hidden" => self.hidden = Some(value.into()),
22017            "id" => self.id = Some(value.into()),
22018            "inert" => self.inert = Some(value.into()),
22019            "inputmode" => self.inputmode = Some(value.into()),
22020            "is" => self.is = Some(value.into()),
22021            "itemid" => self.itemid = Some(value.into()),
22022            "itemprop" => self.itemprop = Some(value.into()),
22023            "itemref" => self.itemref = Some(value.into()),
22024            "itemscope" => self.itemscope = Some(value.into()),
22025            "itemtype" => self.itemtype = Some(value.into()),
22026            "lang" => self.lang = Some(value.into()),
22027            "nonce" => self.nonce = Some(value.into()),
22028            "part" => self.part = Some(value.into()),
22029            "popover" => self.popover = Some(value.into()),
22030            "role" => self.role = Some(value.into()),
22031            "slot" => self.slot = Some(value.into()),
22032            "spellcheck" => self.spellcheck = Some(value.into()),
22033            "style" => self.style = Some(value.into()),
22034            "tabindex" => self.tabindex = Some(value.into()),
22035            "title" => self.title = Some(value.into()),
22036            "translate" => self.translate = Some(value.into()),
22037            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
22038            #[cfg(feature = "alloc")]
22039            _ => {
22040                #[allow(clippy::useless_conversion)]
22041                self.extra.insert(name.into(), value.into());
22042            }
22043            #[cfg(not(feature = "alloc"))]
22044            _ => {}
22045        }
22046    }
22047}
22048/// The <strong><code>&lt;i&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents a range of text that is set off from the normal text for some reason, such as idiomatic text, technical terms, taxonomical designations, among others. Historically, these have been presented using italicized type, which is the original source of the <code>&lt;i&gt;</code> naming of this element.
22049///
22050/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/i>
22051
22052#[cfg(feature = "alloc")]
22053#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
22054pub struct IOwned {
22055    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
22056    ///   
22057    pub accesskey: core::option::Option<AttributeValueOwned>,
22058    ///
22059    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
22060    ///     <ul>
22061    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
22062    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
22063    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
22064    ///       <li><code>characters</code>, all letters should default to uppercase</li>
22065    ///     </ul>
22066    ///   
22067    pub autocapitalize: core::option::Option<AttributeValueOwned>,
22068    ///
22069    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
22070    ///   
22071    pub autofocus: core::option::Option<AttributeValueOwned>,
22072    ///
22073    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
22074    ///   
22075    pub class: core::option::Option<AttributeValueOwned>,
22076    ///
22077    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
22078    ///     <ul>
22079    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
22080    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
22081    ///     </ul>
22082    ///   
22083    pub contenteditable: core::option::Option<AttributeValueOwned>,
22084    ///
22085    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
22086    ///   
22087    pub contextmenu: core::option::Option<AttributeValueOwned>,
22088    ///
22089    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
22090    ///   
22091    #[cfg(feature = "alloc")]
22092    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
22093    ///
22094    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
22095    ///     <ul>
22096    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
22097    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
22098    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
22099    ///     </ul>
22100    ///   
22101    pub dir: core::option::Option<AttributeValueOwned>,
22102    ///
22103    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
22104    ///     <ul>
22105    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
22106    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
22107    ///     </ul>
22108    ///   
22109    pub draggable: core::option::Option<AttributeValueOwned>,
22110    ///
22111    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
22112    ///   
22113    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
22114    ///
22115    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
22116    ///   
22117    pub exportparts: core::option::Option<AttributeValueOwned>,
22118    /// /// Extra attributes of the element.
22119
22120    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
22121    #[cfg(feature = "alloc")]
22122    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
22123    ///
22124    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
22125    ///   
22126    pub hidden: core::option::Option<AttributeValueOwned>,
22127    ///
22128    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
22129    ///   
22130    pub id: core::option::Option<AttributeValueOwned>,
22131    ///
22132    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
22133    ///   
22134    pub inert: core::option::Option<AttributeValueOwned>,
22135    ///
22136    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
22137    ///   
22138    pub inputmode: core::option::Option<AttributeValueOwned>,
22139    ///
22140    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
22141    ///   
22142    pub is: core::option::Option<AttributeValueOwned>,
22143    ///
22144    ///     <p>The unique, global identifier of an item.</p>
22145    ///   
22146    pub itemid: core::option::Option<AttributeValueOwned>,
22147    ///
22148    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
22149    ///   
22150    pub itemprop: core::option::Option<AttributeValueOwned>,
22151    ///
22152    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
22153    ///   
22154    pub itemref: core::option::Option<AttributeValueOwned>,
22155    ///
22156    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
22157    ///   
22158    pub itemscope: core::option::Option<AttributeValueOwned>,
22159    ///
22160    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
22161    ///   
22162    pub itemtype: core::option::Option<AttributeValueOwned>,
22163    ///
22164    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
22165    ///   
22166    pub lang: core::option::Option<AttributeValueOwned>,
22167    ///
22168    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
22169    ///   
22170    pub nonce: core::option::Option<AttributeValueOwned>,
22171    ///
22172    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
22173    ///   
22174    pub part: core::option::Option<AttributeValueOwned>,
22175    ///
22176    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
22177    ///   
22178    pub popover: core::option::Option<AttributeValueOwned>,
22179    ///
22180    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
22181    ///   
22182    pub role: core::option::Option<AttributeValueOwned>,
22183    ///
22184    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
22185    ///   
22186    pub slot: core::option::Option<AttributeValueOwned>,
22187    ///
22188    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
22189    ///     <ul>
22190    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
22191    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
22192    ///     </ul>
22193    ///   
22194    pub spellcheck: core::option::Option<AttributeValueOwned>,
22195    ///
22196    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
22197    ///   
22198    pub style: core::option::Option<AttributeValueOwned>,
22199    ///
22200    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
22201    ///     <ul>
22202    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
22203    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
22204    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
22205    ///     </ul>
22206    ///   
22207    pub tabindex: core::option::Option<AttributeValueOwned>,
22208    ///
22209    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
22210    ///   
22211    pub title: core::option::Option<AttributeValueOwned>,
22212    ///
22213    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
22214    ///     <ul>
22215    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
22216    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
22217    ///     </ul>
22218    ///   
22219    pub translate: core::option::Option<AttributeValueOwned>,
22220    ///
22221    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
22222    ///     <ul>
22223    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
22224    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
22225    ///     </ul>
22226    ///   
22227    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
22228}
22229#[allow(deprecated)]
22230#[cfg(feature = "alloc")]
22231impl IOwned {
22232    /// Get the tag name of the element.
22233    /// This is the same as the name of the struct, in kebab-case.
22234    pub fn tag() -> &'static str {
22235        "i"
22236    }
22237    /// Sets an attribute of the element.
22238    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
22239    /// If the `alloc` feature is disabled, this function will silently fail.
22240    ///
22241    /// # Note
22242    /// This only works when the attribute is lowercase.
22243    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
22244        match name {
22245            "accesskey" => self.accesskey = Some(value.into()),
22246            "autocapitalize" => self.autocapitalize = Some(value.into()),
22247            "autofocus" => self.autofocus = Some(value.into()),
22248            "class" => self.class = Some(value.into()),
22249            "contenteditable" => self.contenteditable = Some(value.into()),
22250            "contextmenu" => self.contextmenu = Some(value.into()),
22251            "dir" => self.dir = Some(value.into()),
22252            "draggable" => self.draggable = Some(value.into()),
22253            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
22254            "exportparts" => self.exportparts = Some(value.into()),
22255            "hidden" => self.hidden = Some(value.into()),
22256            "id" => self.id = Some(value.into()),
22257            "inert" => self.inert = Some(value.into()),
22258            "inputmode" => self.inputmode = Some(value.into()),
22259            "is" => self.is = Some(value.into()),
22260            "itemid" => self.itemid = Some(value.into()),
22261            "itemprop" => self.itemprop = Some(value.into()),
22262            "itemref" => self.itemref = Some(value.into()),
22263            "itemscope" => self.itemscope = Some(value.into()),
22264            "itemtype" => self.itemtype = Some(value.into()),
22265            "lang" => self.lang = Some(value.into()),
22266            "nonce" => self.nonce = Some(value.into()),
22267            "part" => self.part = Some(value.into()),
22268            "popover" => self.popover = Some(value.into()),
22269            "role" => self.role = Some(value.into()),
22270            "slot" => self.slot = Some(value.into()),
22271            "spellcheck" => self.spellcheck = Some(value.into()),
22272            "style" => self.style = Some(value.into()),
22273            "tabindex" => self.tabindex = Some(value.into()),
22274            "title" => self.title = Some(value.into()),
22275            "translate" => self.translate = Some(value.into()),
22276            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
22277            #[cfg(feature = "alloc")]
22278            _ => {
22279                #[allow(clippy::useless_conversion)]
22280                self.extra.insert(name.into(), value.into());
22281            }
22282            #[cfg(not(feature = "alloc"))]
22283            _ => {}
22284        }
22285    }
22286}
22287/// The <strong><code>&lt;kbd&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> 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 <a href="/en-US/docs/Glossary/User_agent">user agent</a> defaults to rendering the contents of a <code>&lt;kbd&gt;</code> element using its default monospace font, although this is not mandated by the HTML standard.
22288///
22289/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/kbd>
22290
22291#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
22292pub struct Kbd<'life> {
22293    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
22294    ///   
22295    pub accesskey: core::option::Option<AttributeValue<'life>>,
22296    ///
22297    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
22298    ///     <ul>
22299    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
22300    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
22301    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
22302    ///       <li><code>characters</code>, all letters should default to uppercase</li>
22303    ///     </ul>
22304    ///   
22305    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
22306    ///
22307    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
22308    ///   
22309    pub autofocus: core::option::Option<AttributeValue<'life>>,
22310    ///
22311    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
22312    ///   
22313    pub class: core::option::Option<AttributeValue<'life>>,
22314    ///
22315    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
22316    ///     <ul>
22317    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
22318    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
22319    ///     </ul>
22320    ///   
22321    pub contenteditable: core::option::Option<AttributeValue<'life>>,
22322    ///
22323    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
22324    ///   
22325    pub contextmenu: core::option::Option<AttributeValue<'life>>,
22326    ///
22327    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
22328    ///   
22329    #[cfg(feature = "alloc")]
22330    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
22331    ///
22332    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
22333    ///     <ul>
22334    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
22335    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
22336    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
22337    ///     </ul>
22338    ///   
22339    pub dir: core::option::Option<AttributeValue<'life>>,
22340    ///
22341    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
22342    ///     <ul>
22343    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
22344    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
22345    ///     </ul>
22346    ///   
22347    pub draggable: core::option::Option<AttributeValue<'life>>,
22348    ///
22349    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
22350    ///   
22351    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
22352    ///
22353    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
22354    ///   
22355    pub exportparts: core::option::Option<AttributeValue<'life>>,
22356    /// /// Extra attributes of the element.
22357
22358    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
22359    #[cfg(feature = "alloc")]
22360    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
22361    ///
22362    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
22363    ///   
22364    pub hidden: core::option::Option<AttributeValue<'life>>,
22365    ///
22366    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
22367    ///   
22368    pub id: core::option::Option<AttributeValue<'life>>,
22369    ///
22370    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
22371    ///   
22372    pub inert: core::option::Option<AttributeValue<'life>>,
22373    ///
22374    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
22375    ///   
22376    pub inputmode: core::option::Option<AttributeValue<'life>>,
22377    ///
22378    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
22379    ///   
22380    pub is: core::option::Option<AttributeValue<'life>>,
22381    ///
22382    ///     <p>The unique, global identifier of an item.</p>
22383    ///   
22384    pub itemid: core::option::Option<AttributeValue<'life>>,
22385    ///
22386    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
22387    ///   
22388    pub itemprop: core::option::Option<AttributeValue<'life>>,
22389    ///
22390    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
22391    ///   
22392    pub itemref: core::option::Option<AttributeValue<'life>>,
22393    ///
22394    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
22395    ///   
22396    pub itemscope: core::option::Option<AttributeValue<'life>>,
22397    ///
22398    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
22399    ///   
22400    pub itemtype: core::option::Option<AttributeValue<'life>>,
22401    ///
22402    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
22403    ///   
22404    pub lang: core::option::Option<AttributeValue<'life>>,
22405    ///
22406    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
22407    ///   
22408    pub nonce: core::option::Option<AttributeValue<'life>>,
22409    ///
22410    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
22411    ///   
22412    pub part: core::option::Option<AttributeValue<'life>>,
22413    ///
22414    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
22415    ///   
22416    pub popover: core::option::Option<AttributeValue<'life>>,
22417    ///
22418    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
22419    ///   
22420    pub role: core::option::Option<AttributeValue<'life>>,
22421    ///
22422    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
22423    ///   
22424    pub slot: core::option::Option<AttributeValue<'life>>,
22425    ///
22426    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
22427    ///     <ul>
22428    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
22429    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
22430    ///     </ul>
22431    ///   
22432    pub spellcheck: core::option::Option<AttributeValue<'life>>,
22433    ///
22434    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
22435    ///   
22436    pub style: core::option::Option<AttributeValue<'life>>,
22437    ///
22438    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
22439    ///     <ul>
22440    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
22441    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
22442    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
22443    ///     </ul>
22444    ///   
22445    pub tabindex: core::option::Option<AttributeValue<'life>>,
22446    ///
22447    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
22448    ///   
22449    pub title: core::option::Option<AttributeValue<'life>>,
22450    ///
22451    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
22452    ///     <ul>
22453    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
22454    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
22455    ///     </ul>
22456    ///   
22457    pub translate: core::option::Option<AttributeValue<'life>>,
22458    ///
22459    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
22460    ///     <ul>
22461    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
22462    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
22463    ///     </ul>
22464    ///   
22465    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
22466}
22467#[allow(deprecated)]
22468
22469impl<'life> Kbd<'life> {
22470    /// Get the tag name of the element.
22471    /// This is the same as the name of the struct, in kebab-case.
22472    pub fn tag() -> &'static str {
22473        "kbd"
22474    }
22475    /// Sets an attribute of the element.
22476    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
22477    /// If the `alloc` feature is disabled, this function will silently fail.
22478    ///
22479    /// # Note
22480    /// This only works when the attribute is lowercase.
22481    pub fn set_attr(
22482        &mut self,
22483        name: &'life str,
22484        value: impl core::convert::Into<AttributeValue<'life>>,
22485    ) {
22486        match name {
22487            "accesskey" => self.accesskey = Some(value.into()),
22488            "autocapitalize" => self.autocapitalize = Some(value.into()),
22489            "autofocus" => self.autofocus = Some(value.into()),
22490            "class" => self.class = Some(value.into()),
22491            "contenteditable" => self.contenteditable = Some(value.into()),
22492            "contextmenu" => self.contextmenu = Some(value.into()),
22493            "dir" => self.dir = Some(value.into()),
22494            "draggable" => self.draggable = Some(value.into()),
22495            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
22496            "exportparts" => self.exportparts = Some(value.into()),
22497            "hidden" => self.hidden = Some(value.into()),
22498            "id" => self.id = Some(value.into()),
22499            "inert" => self.inert = Some(value.into()),
22500            "inputmode" => self.inputmode = Some(value.into()),
22501            "is" => self.is = Some(value.into()),
22502            "itemid" => self.itemid = Some(value.into()),
22503            "itemprop" => self.itemprop = Some(value.into()),
22504            "itemref" => self.itemref = Some(value.into()),
22505            "itemscope" => self.itemscope = Some(value.into()),
22506            "itemtype" => self.itemtype = Some(value.into()),
22507            "lang" => self.lang = Some(value.into()),
22508            "nonce" => self.nonce = Some(value.into()),
22509            "part" => self.part = Some(value.into()),
22510            "popover" => self.popover = Some(value.into()),
22511            "role" => self.role = Some(value.into()),
22512            "slot" => self.slot = Some(value.into()),
22513            "spellcheck" => self.spellcheck = Some(value.into()),
22514            "style" => self.style = Some(value.into()),
22515            "tabindex" => self.tabindex = Some(value.into()),
22516            "title" => self.title = Some(value.into()),
22517            "translate" => self.translate = Some(value.into()),
22518            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
22519            #[cfg(feature = "alloc")]
22520            _ => {
22521                #[allow(clippy::useless_conversion)]
22522                self.extra.insert(name.into(), value.into());
22523            }
22524            #[cfg(not(feature = "alloc"))]
22525            _ => {}
22526        }
22527    }
22528}
22529/// The <strong><code>&lt;kbd&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> 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 <a href="/en-US/docs/Glossary/User_agent">user agent</a> defaults to rendering the contents of a <code>&lt;kbd&gt;</code> element using its default monospace font, although this is not mandated by the HTML standard.
22530///
22531/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/kbd>
22532
22533#[cfg(feature = "alloc")]
22534#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
22535pub struct KbdOwned {
22536    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
22537    ///   
22538    pub accesskey: core::option::Option<AttributeValueOwned>,
22539    ///
22540    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
22541    ///     <ul>
22542    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
22543    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
22544    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
22545    ///       <li><code>characters</code>, all letters should default to uppercase</li>
22546    ///     </ul>
22547    ///   
22548    pub autocapitalize: core::option::Option<AttributeValueOwned>,
22549    ///
22550    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
22551    ///   
22552    pub autofocus: core::option::Option<AttributeValueOwned>,
22553    ///
22554    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
22555    ///   
22556    pub class: core::option::Option<AttributeValueOwned>,
22557    ///
22558    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
22559    ///     <ul>
22560    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
22561    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
22562    ///     </ul>
22563    ///   
22564    pub contenteditable: core::option::Option<AttributeValueOwned>,
22565    ///
22566    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
22567    ///   
22568    pub contextmenu: core::option::Option<AttributeValueOwned>,
22569    ///
22570    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
22571    ///   
22572    #[cfg(feature = "alloc")]
22573    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
22574    ///
22575    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
22576    ///     <ul>
22577    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
22578    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
22579    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
22580    ///     </ul>
22581    ///   
22582    pub dir: core::option::Option<AttributeValueOwned>,
22583    ///
22584    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
22585    ///     <ul>
22586    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
22587    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
22588    ///     </ul>
22589    ///   
22590    pub draggable: core::option::Option<AttributeValueOwned>,
22591    ///
22592    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
22593    ///   
22594    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
22595    ///
22596    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
22597    ///   
22598    pub exportparts: core::option::Option<AttributeValueOwned>,
22599    /// /// Extra attributes of the element.
22600
22601    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
22602    #[cfg(feature = "alloc")]
22603    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
22604    ///
22605    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
22606    ///   
22607    pub hidden: core::option::Option<AttributeValueOwned>,
22608    ///
22609    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
22610    ///   
22611    pub id: core::option::Option<AttributeValueOwned>,
22612    ///
22613    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
22614    ///   
22615    pub inert: core::option::Option<AttributeValueOwned>,
22616    ///
22617    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
22618    ///   
22619    pub inputmode: core::option::Option<AttributeValueOwned>,
22620    ///
22621    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
22622    ///   
22623    pub is: core::option::Option<AttributeValueOwned>,
22624    ///
22625    ///     <p>The unique, global identifier of an item.</p>
22626    ///   
22627    pub itemid: core::option::Option<AttributeValueOwned>,
22628    ///
22629    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
22630    ///   
22631    pub itemprop: core::option::Option<AttributeValueOwned>,
22632    ///
22633    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
22634    ///   
22635    pub itemref: core::option::Option<AttributeValueOwned>,
22636    ///
22637    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
22638    ///   
22639    pub itemscope: core::option::Option<AttributeValueOwned>,
22640    ///
22641    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
22642    ///   
22643    pub itemtype: core::option::Option<AttributeValueOwned>,
22644    ///
22645    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
22646    ///   
22647    pub lang: core::option::Option<AttributeValueOwned>,
22648    ///
22649    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
22650    ///   
22651    pub nonce: core::option::Option<AttributeValueOwned>,
22652    ///
22653    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
22654    ///   
22655    pub part: core::option::Option<AttributeValueOwned>,
22656    ///
22657    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
22658    ///   
22659    pub popover: core::option::Option<AttributeValueOwned>,
22660    ///
22661    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
22662    ///   
22663    pub role: core::option::Option<AttributeValueOwned>,
22664    ///
22665    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
22666    ///   
22667    pub slot: core::option::Option<AttributeValueOwned>,
22668    ///
22669    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
22670    ///     <ul>
22671    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
22672    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
22673    ///     </ul>
22674    ///   
22675    pub spellcheck: core::option::Option<AttributeValueOwned>,
22676    ///
22677    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
22678    ///   
22679    pub style: core::option::Option<AttributeValueOwned>,
22680    ///
22681    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
22682    ///     <ul>
22683    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
22684    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
22685    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
22686    ///     </ul>
22687    ///   
22688    pub tabindex: core::option::Option<AttributeValueOwned>,
22689    ///
22690    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
22691    ///   
22692    pub title: core::option::Option<AttributeValueOwned>,
22693    ///
22694    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
22695    ///     <ul>
22696    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
22697    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
22698    ///     </ul>
22699    ///   
22700    pub translate: core::option::Option<AttributeValueOwned>,
22701    ///
22702    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
22703    ///     <ul>
22704    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
22705    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
22706    ///     </ul>
22707    ///   
22708    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
22709}
22710#[allow(deprecated)]
22711#[cfg(feature = "alloc")]
22712impl KbdOwned {
22713    /// Get the tag name of the element.
22714    /// This is the same as the name of the struct, in kebab-case.
22715    pub fn tag() -> &'static str {
22716        "kbd"
22717    }
22718    /// Sets an attribute of the element.
22719    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
22720    /// If the `alloc` feature is disabled, this function will silently fail.
22721    ///
22722    /// # Note
22723    /// This only works when the attribute is lowercase.
22724    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
22725        match name {
22726            "accesskey" => self.accesskey = Some(value.into()),
22727            "autocapitalize" => self.autocapitalize = Some(value.into()),
22728            "autofocus" => self.autofocus = Some(value.into()),
22729            "class" => self.class = Some(value.into()),
22730            "contenteditable" => self.contenteditable = Some(value.into()),
22731            "contextmenu" => self.contextmenu = Some(value.into()),
22732            "dir" => self.dir = Some(value.into()),
22733            "draggable" => self.draggable = Some(value.into()),
22734            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
22735            "exportparts" => self.exportparts = Some(value.into()),
22736            "hidden" => self.hidden = Some(value.into()),
22737            "id" => self.id = Some(value.into()),
22738            "inert" => self.inert = Some(value.into()),
22739            "inputmode" => self.inputmode = Some(value.into()),
22740            "is" => self.is = Some(value.into()),
22741            "itemid" => self.itemid = Some(value.into()),
22742            "itemprop" => self.itemprop = Some(value.into()),
22743            "itemref" => self.itemref = Some(value.into()),
22744            "itemscope" => self.itemscope = Some(value.into()),
22745            "itemtype" => self.itemtype = Some(value.into()),
22746            "lang" => self.lang = Some(value.into()),
22747            "nonce" => self.nonce = Some(value.into()),
22748            "part" => self.part = Some(value.into()),
22749            "popover" => self.popover = Some(value.into()),
22750            "role" => self.role = Some(value.into()),
22751            "slot" => self.slot = Some(value.into()),
22752            "spellcheck" => self.spellcheck = Some(value.into()),
22753            "style" => self.style = Some(value.into()),
22754            "tabindex" => self.tabindex = Some(value.into()),
22755            "title" => self.title = Some(value.into()),
22756            "translate" => self.translate = Some(value.into()),
22757            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
22758            #[cfg(feature = "alloc")]
22759            _ => {
22760                #[allow(clippy::useless_conversion)]
22761                self.extra.insert(name.into(), value.into());
22762            }
22763            #[cfg(not(feature = "alloc"))]
22764            _ => {}
22765        }
22766    }
22767}
22768/// The <strong><code>&lt;mark&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents text which is <strong>marked</strong> or <strong>highlighted</strong> for reference or notation purposes due to the marked passage's relevance in the enclosing context.
22769///
22770/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/mark>
22771
22772#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
22773pub struct Mark<'life> {
22774    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
22775    ///   
22776    pub accesskey: core::option::Option<AttributeValue<'life>>,
22777    ///
22778    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
22779    ///     <ul>
22780    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
22781    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
22782    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
22783    ///       <li><code>characters</code>, all letters should default to uppercase</li>
22784    ///     </ul>
22785    ///   
22786    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
22787    ///
22788    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
22789    ///   
22790    pub autofocus: core::option::Option<AttributeValue<'life>>,
22791    ///
22792    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
22793    ///   
22794    pub class: core::option::Option<AttributeValue<'life>>,
22795    ///
22796    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
22797    ///     <ul>
22798    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
22799    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
22800    ///     </ul>
22801    ///   
22802    pub contenteditable: core::option::Option<AttributeValue<'life>>,
22803    ///
22804    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
22805    ///   
22806    pub contextmenu: core::option::Option<AttributeValue<'life>>,
22807    ///
22808    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
22809    ///   
22810    #[cfg(feature = "alloc")]
22811    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
22812    ///
22813    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
22814    ///     <ul>
22815    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
22816    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
22817    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
22818    ///     </ul>
22819    ///   
22820    pub dir: core::option::Option<AttributeValue<'life>>,
22821    ///
22822    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
22823    ///     <ul>
22824    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
22825    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
22826    ///     </ul>
22827    ///   
22828    pub draggable: core::option::Option<AttributeValue<'life>>,
22829    ///
22830    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
22831    ///   
22832    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
22833    ///
22834    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
22835    ///   
22836    pub exportparts: core::option::Option<AttributeValue<'life>>,
22837    /// /// Extra attributes of the element.
22838
22839    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
22840    #[cfg(feature = "alloc")]
22841    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
22842    ///
22843    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
22844    ///   
22845    pub hidden: core::option::Option<AttributeValue<'life>>,
22846    ///
22847    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
22848    ///   
22849    pub id: core::option::Option<AttributeValue<'life>>,
22850    ///
22851    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
22852    ///   
22853    pub inert: core::option::Option<AttributeValue<'life>>,
22854    ///
22855    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
22856    ///   
22857    pub inputmode: core::option::Option<AttributeValue<'life>>,
22858    ///
22859    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
22860    ///   
22861    pub is: core::option::Option<AttributeValue<'life>>,
22862    ///
22863    ///     <p>The unique, global identifier of an item.</p>
22864    ///   
22865    pub itemid: core::option::Option<AttributeValue<'life>>,
22866    ///
22867    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
22868    ///   
22869    pub itemprop: core::option::Option<AttributeValue<'life>>,
22870    ///
22871    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
22872    ///   
22873    pub itemref: core::option::Option<AttributeValue<'life>>,
22874    ///
22875    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
22876    ///   
22877    pub itemscope: core::option::Option<AttributeValue<'life>>,
22878    ///
22879    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
22880    ///   
22881    pub itemtype: core::option::Option<AttributeValue<'life>>,
22882    ///
22883    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
22884    ///   
22885    pub lang: core::option::Option<AttributeValue<'life>>,
22886    ///
22887    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
22888    ///   
22889    pub nonce: core::option::Option<AttributeValue<'life>>,
22890    ///
22891    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
22892    ///   
22893    pub part: core::option::Option<AttributeValue<'life>>,
22894    ///
22895    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
22896    ///   
22897    pub popover: core::option::Option<AttributeValue<'life>>,
22898    ///
22899    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
22900    ///   
22901    pub role: core::option::Option<AttributeValue<'life>>,
22902    ///
22903    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
22904    ///   
22905    pub slot: core::option::Option<AttributeValue<'life>>,
22906    ///
22907    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
22908    ///     <ul>
22909    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
22910    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
22911    ///     </ul>
22912    ///   
22913    pub spellcheck: core::option::Option<AttributeValue<'life>>,
22914    ///
22915    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
22916    ///   
22917    pub style: core::option::Option<AttributeValue<'life>>,
22918    ///
22919    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
22920    ///     <ul>
22921    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
22922    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
22923    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
22924    ///     </ul>
22925    ///   
22926    pub tabindex: core::option::Option<AttributeValue<'life>>,
22927    ///
22928    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
22929    ///   
22930    pub title: core::option::Option<AttributeValue<'life>>,
22931    ///
22932    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
22933    ///     <ul>
22934    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
22935    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
22936    ///     </ul>
22937    ///   
22938    pub translate: core::option::Option<AttributeValue<'life>>,
22939    ///
22940    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
22941    ///     <ul>
22942    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
22943    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
22944    ///     </ul>
22945    ///   
22946    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
22947}
22948#[allow(deprecated)]
22949
22950impl<'life> Mark<'life> {
22951    /// Get the tag name of the element.
22952    /// This is the same as the name of the struct, in kebab-case.
22953    pub fn tag() -> &'static str {
22954        "mark"
22955    }
22956    /// Sets an attribute of the element.
22957    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
22958    /// If the `alloc` feature is disabled, this function will silently fail.
22959    ///
22960    /// # Note
22961    /// This only works when the attribute is lowercase.
22962    pub fn set_attr(
22963        &mut self,
22964        name: &'life str,
22965        value: impl core::convert::Into<AttributeValue<'life>>,
22966    ) {
22967        match name {
22968            "accesskey" => self.accesskey = Some(value.into()),
22969            "autocapitalize" => self.autocapitalize = Some(value.into()),
22970            "autofocus" => self.autofocus = Some(value.into()),
22971            "class" => self.class = Some(value.into()),
22972            "contenteditable" => self.contenteditable = Some(value.into()),
22973            "contextmenu" => self.contextmenu = Some(value.into()),
22974            "dir" => self.dir = Some(value.into()),
22975            "draggable" => self.draggable = Some(value.into()),
22976            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
22977            "exportparts" => self.exportparts = Some(value.into()),
22978            "hidden" => self.hidden = Some(value.into()),
22979            "id" => self.id = Some(value.into()),
22980            "inert" => self.inert = Some(value.into()),
22981            "inputmode" => self.inputmode = Some(value.into()),
22982            "is" => self.is = Some(value.into()),
22983            "itemid" => self.itemid = Some(value.into()),
22984            "itemprop" => self.itemprop = Some(value.into()),
22985            "itemref" => self.itemref = Some(value.into()),
22986            "itemscope" => self.itemscope = Some(value.into()),
22987            "itemtype" => self.itemtype = Some(value.into()),
22988            "lang" => self.lang = Some(value.into()),
22989            "nonce" => self.nonce = Some(value.into()),
22990            "part" => self.part = Some(value.into()),
22991            "popover" => self.popover = Some(value.into()),
22992            "role" => self.role = Some(value.into()),
22993            "slot" => self.slot = Some(value.into()),
22994            "spellcheck" => self.spellcheck = Some(value.into()),
22995            "style" => self.style = Some(value.into()),
22996            "tabindex" => self.tabindex = Some(value.into()),
22997            "title" => self.title = Some(value.into()),
22998            "translate" => self.translate = Some(value.into()),
22999            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
23000            #[cfg(feature = "alloc")]
23001            _ => {
23002                #[allow(clippy::useless_conversion)]
23003                self.extra.insert(name.into(), value.into());
23004            }
23005            #[cfg(not(feature = "alloc"))]
23006            _ => {}
23007        }
23008    }
23009}
23010/// The <strong><code>&lt;mark&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents text which is <strong>marked</strong> or <strong>highlighted</strong> for reference or notation purposes due to the marked passage's relevance in the enclosing context.
23011///
23012/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/mark>
23013
23014#[cfg(feature = "alloc")]
23015#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
23016pub struct MarkOwned {
23017    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
23018    ///   
23019    pub accesskey: core::option::Option<AttributeValueOwned>,
23020    ///
23021    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
23022    ///     <ul>
23023    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
23024    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
23025    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
23026    ///       <li><code>characters</code>, all letters should default to uppercase</li>
23027    ///     </ul>
23028    ///   
23029    pub autocapitalize: core::option::Option<AttributeValueOwned>,
23030    ///
23031    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
23032    ///   
23033    pub autofocus: core::option::Option<AttributeValueOwned>,
23034    ///
23035    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
23036    ///   
23037    pub class: core::option::Option<AttributeValueOwned>,
23038    ///
23039    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
23040    ///     <ul>
23041    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
23042    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
23043    ///     </ul>
23044    ///   
23045    pub contenteditable: core::option::Option<AttributeValueOwned>,
23046    ///
23047    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
23048    ///   
23049    pub contextmenu: core::option::Option<AttributeValueOwned>,
23050    ///
23051    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
23052    ///   
23053    #[cfg(feature = "alloc")]
23054    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
23055    ///
23056    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
23057    ///     <ul>
23058    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
23059    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
23060    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
23061    ///     </ul>
23062    ///   
23063    pub dir: core::option::Option<AttributeValueOwned>,
23064    ///
23065    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
23066    ///     <ul>
23067    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
23068    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
23069    ///     </ul>
23070    ///   
23071    pub draggable: core::option::Option<AttributeValueOwned>,
23072    ///
23073    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
23074    ///   
23075    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
23076    ///
23077    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
23078    ///   
23079    pub exportparts: core::option::Option<AttributeValueOwned>,
23080    /// /// Extra attributes of the element.
23081
23082    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
23083    #[cfg(feature = "alloc")]
23084    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
23085    ///
23086    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
23087    ///   
23088    pub hidden: core::option::Option<AttributeValueOwned>,
23089    ///
23090    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
23091    ///   
23092    pub id: core::option::Option<AttributeValueOwned>,
23093    ///
23094    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
23095    ///   
23096    pub inert: core::option::Option<AttributeValueOwned>,
23097    ///
23098    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
23099    ///   
23100    pub inputmode: core::option::Option<AttributeValueOwned>,
23101    ///
23102    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
23103    ///   
23104    pub is: core::option::Option<AttributeValueOwned>,
23105    ///
23106    ///     <p>The unique, global identifier of an item.</p>
23107    ///   
23108    pub itemid: core::option::Option<AttributeValueOwned>,
23109    ///
23110    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
23111    ///   
23112    pub itemprop: core::option::Option<AttributeValueOwned>,
23113    ///
23114    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
23115    ///   
23116    pub itemref: core::option::Option<AttributeValueOwned>,
23117    ///
23118    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
23119    ///   
23120    pub itemscope: core::option::Option<AttributeValueOwned>,
23121    ///
23122    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
23123    ///   
23124    pub itemtype: core::option::Option<AttributeValueOwned>,
23125    ///
23126    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
23127    ///   
23128    pub lang: core::option::Option<AttributeValueOwned>,
23129    ///
23130    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
23131    ///   
23132    pub nonce: core::option::Option<AttributeValueOwned>,
23133    ///
23134    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
23135    ///   
23136    pub part: core::option::Option<AttributeValueOwned>,
23137    ///
23138    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
23139    ///   
23140    pub popover: core::option::Option<AttributeValueOwned>,
23141    ///
23142    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
23143    ///   
23144    pub role: core::option::Option<AttributeValueOwned>,
23145    ///
23146    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
23147    ///   
23148    pub slot: core::option::Option<AttributeValueOwned>,
23149    ///
23150    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
23151    ///     <ul>
23152    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
23153    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
23154    ///     </ul>
23155    ///   
23156    pub spellcheck: core::option::Option<AttributeValueOwned>,
23157    ///
23158    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
23159    ///   
23160    pub style: core::option::Option<AttributeValueOwned>,
23161    ///
23162    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
23163    ///     <ul>
23164    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
23165    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
23166    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
23167    ///     </ul>
23168    ///   
23169    pub tabindex: core::option::Option<AttributeValueOwned>,
23170    ///
23171    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
23172    ///   
23173    pub title: core::option::Option<AttributeValueOwned>,
23174    ///
23175    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
23176    ///     <ul>
23177    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
23178    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
23179    ///     </ul>
23180    ///   
23181    pub translate: core::option::Option<AttributeValueOwned>,
23182    ///
23183    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
23184    ///     <ul>
23185    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
23186    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
23187    ///     </ul>
23188    ///   
23189    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
23190}
23191#[allow(deprecated)]
23192#[cfg(feature = "alloc")]
23193impl MarkOwned {
23194    /// Get the tag name of the element.
23195    /// This is the same as the name of the struct, in kebab-case.
23196    pub fn tag() -> &'static str {
23197        "mark"
23198    }
23199    /// Sets an attribute of the element.
23200    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
23201    /// If the `alloc` feature is disabled, this function will silently fail.
23202    ///
23203    /// # Note
23204    /// This only works when the attribute is lowercase.
23205    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
23206        match name {
23207            "accesskey" => self.accesskey = Some(value.into()),
23208            "autocapitalize" => self.autocapitalize = Some(value.into()),
23209            "autofocus" => self.autofocus = Some(value.into()),
23210            "class" => self.class = Some(value.into()),
23211            "contenteditable" => self.contenteditable = Some(value.into()),
23212            "contextmenu" => self.contextmenu = Some(value.into()),
23213            "dir" => self.dir = Some(value.into()),
23214            "draggable" => self.draggable = Some(value.into()),
23215            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
23216            "exportparts" => self.exportparts = Some(value.into()),
23217            "hidden" => self.hidden = Some(value.into()),
23218            "id" => self.id = Some(value.into()),
23219            "inert" => self.inert = Some(value.into()),
23220            "inputmode" => self.inputmode = Some(value.into()),
23221            "is" => self.is = Some(value.into()),
23222            "itemid" => self.itemid = Some(value.into()),
23223            "itemprop" => self.itemprop = Some(value.into()),
23224            "itemref" => self.itemref = Some(value.into()),
23225            "itemscope" => self.itemscope = Some(value.into()),
23226            "itemtype" => self.itemtype = Some(value.into()),
23227            "lang" => self.lang = Some(value.into()),
23228            "nonce" => self.nonce = Some(value.into()),
23229            "part" => self.part = Some(value.into()),
23230            "popover" => self.popover = Some(value.into()),
23231            "role" => self.role = Some(value.into()),
23232            "slot" => self.slot = Some(value.into()),
23233            "spellcheck" => self.spellcheck = Some(value.into()),
23234            "style" => self.style = Some(value.into()),
23235            "tabindex" => self.tabindex = Some(value.into()),
23236            "title" => self.title = Some(value.into()),
23237            "translate" => self.translate = Some(value.into()),
23238            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
23239            #[cfg(feature = "alloc")]
23240            _ => {
23241                #[allow(clippy::useless_conversion)]
23242                self.extra.insert(name.into(), value.into());
23243            }
23244            #[cfg(not(feature = "alloc"))]
23245            _ => {}
23246        }
23247    }
23248}
23249/// The <strong><code>&lt;q&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element indicates that the enclosed text is a short inline quotation. Most modern browsers implement this by surrounding the text in quotation marks. This element is intended for short quotations that don't require paragraph breaks; for long quotations use the <a href="/en-US/docs/Web/HTML/Element/blockquote"><code>&lt;blockquote&gt;</code></a> element.
23250///
23251/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/q>
23252
23253#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
23254pub struct Q<'life> {
23255    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
23256    ///   
23257    pub accesskey: core::option::Option<AttributeValue<'life>>,
23258    ///
23259    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
23260    ///     <ul>
23261    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
23262    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
23263    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
23264    ///       <li><code>characters</code>, all letters should default to uppercase</li>
23265    ///     </ul>
23266    ///   
23267    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
23268    ///
23269    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
23270    ///   
23271    pub autofocus: core::option::Option<AttributeValue<'life>>,
23272    ///
23273    ///     <p>The value of this attribute is a URL that designates a source document or message for the information quoted. This attribute is intended to point to information explaining the context or the reference for the quote.</p>
23274    ///   
23275    pub cite: core::option::Option<AttributeValue<'life>>,
23276    ///
23277    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
23278    ///   
23279    pub class: core::option::Option<AttributeValue<'life>>,
23280    ///
23281    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
23282    ///     <ul>
23283    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
23284    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
23285    ///     </ul>
23286    ///   
23287    pub contenteditable: core::option::Option<AttributeValue<'life>>,
23288    ///
23289    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
23290    ///   
23291    pub contextmenu: core::option::Option<AttributeValue<'life>>,
23292    ///
23293    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
23294    ///   
23295    #[cfg(feature = "alloc")]
23296    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
23297    ///
23298    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
23299    ///     <ul>
23300    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
23301    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
23302    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
23303    ///     </ul>
23304    ///   
23305    pub dir: core::option::Option<AttributeValue<'life>>,
23306    ///
23307    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
23308    ///     <ul>
23309    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
23310    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
23311    ///     </ul>
23312    ///   
23313    pub draggable: core::option::Option<AttributeValue<'life>>,
23314    ///
23315    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
23316    ///   
23317    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
23318    ///
23319    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
23320    ///   
23321    pub exportparts: core::option::Option<AttributeValue<'life>>,
23322    /// /// Extra attributes of the element.
23323
23324    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
23325    #[cfg(feature = "alloc")]
23326    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
23327    ///
23328    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
23329    ///   
23330    pub hidden: core::option::Option<AttributeValue<'life>>,
23331    ///
23332    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
23333    ///   
23334    pub id: core::option::Option<AttributeValue<'life>>,
23335    ///
23336    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
23337    ///   
23338    pub inert: core::option::Option<AttributeValue<'life>>,
23339    ///
23340    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
23341    ///   
23342    pub inputmode: core::option::Option<AttributeValue<'life>>,
23343    ///
23344    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
23345    ///   
23346    pub is: core::option::Option<AttributeValue<'life>>,
23347    ///
23348    ///     <p>The unique, global identifier of an item.</p>
23349    ///   
23350    pub itemid: core::option::Option<AttributeValue<'life>>,
23351    ///
23352    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
23353    ///   
23354    pub itemprop: core::option::Option<AttributeValue<'life>>,
23355    ///
23356    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
23357    ///   
23358    pub itemref: core::option::Option<AttributeValue<'life>>,
23359    ///
23360    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
23361    ///   
23362    pub itemscope: core::option::Option<AttributeValue<'life>>,
23363    ///
23364    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
23365    ///   
23366    pub itemtype: core::option::Option<AttributeValue<'life>>,
23367    ///
23368    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
23369    ///   
23370    pub lang: core::option::Option<AttributeValue<'life>>,
23371    ///
23372    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
23373    ///   
23374    pub nonce: core::option::Option<AttributeValue<'life>>,
23375    ///
23376    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
23377    ///   
23378    pub part: core::option::Option<AttributeValue<'life>>,
23379    ///
23380    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
23381    ///   
23382    pub popover: core::option::Option<AttributeValue<'life>>,
23383    ///
23384    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
23385    ///   
23386    pub role: core::option::Option<AttributeValue<'life>>,
23387    ///
23388    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
23389    ///   
23390    pub slot: core::option::Option<AttributeValue<'life>>,
23391    ///
23392    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
23393    ///     <ul>
23394    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
23395    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
23396    ///     </ul>
23397    ///   
23398    pub spellcheck: core::option::Option<AttributeValue<'life>>,
23399    ///
23400    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
23401    ///   
23402    pub style: core::option::Option<AttributeValue<'life>>,
23403    ///
23404    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
23405    ///     <ul>
23406    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
23407    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
23408    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
23409    ///     </ul>
23410    ///   
23411    pub tabindex: core::option::Option<AttributeValue<'life>>,
23412    ///
23413    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
23414    ///   
23415    pub title: core::option::Option<AttributeValue<'life>>,
23416    ///
23417    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
23418    ///     <ul>
23419    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
23420    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
23421    ///     </ul>
23422    ///   
23423    pub translate: core::option::Option<AttributeValue<'life>>,
23424    ///
23425    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
23426    ///     <ul>
23427    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
23428    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
23429    ///     </ul>
23430    ///   
23431    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
23432}
23433#[allow(deprecated)]
23434
23435impl<'life> Q<'life> {
23436    /// Get the tag name of the element.
23437    /// This is the same as the name of the struct, in kebab-case.
23438    pub fn tag() -> &'static str {
23439        "q"
23440    }
23441    /// Sets an attribute of the element.
23442    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
23443    /// If the `alloc` feature is disabled, this function will silently fail.
23444    ///
23445    /// # Note
23446    /// This only works when the attribute is lowercase.
23447    pub fn set_attr(
23448        &mut self,
23449        name: &'life str,
23450        value: impl core::convert::Into<AttributeValue<'life>>,
23451    ) {
23452        match name {
23453            "accesskey" => self.accesskey = Some(value.into()),
23454            "autocapitalize" => self.autocapitalize = Some(value.into()),
23455            "autofocus" => self.autofocus = Some(value.into()),
23456            "cite" => self.cite = Some(value.into()),
23457            "class" => self.class = Some(value.into()),
23458            "contenteditable" => self.contenteditable = Some(value.into()),
23459            "contextmenu" => self.contextmenu = Some(value.into()),
23460            "dir" => self.dir = Some(value.into()),
23461            "draggable" => self.draggable = Some(value.into()),
23462            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
23463            "exportparts" => self.exportparts = Some(value.into()),
23464            "hidden" => self.hidden = Some(value.into()),
23465            "id" => self.id = Some(value.into()),
23466            "inert" => self.inert = Some(value.into()),
23467            "inputmode" => self.inputmode = Some(value.into()),
23468            "is" => self.is = Some(value.into()),
23469            "itemid" => self.itemid = Some(value.into()),
23470            "itemprop" => self.itemprop = Some(value.into()),
23471            "itemref" => self.itemref = Some(value.into()),
23472            "itemscope" => self.itemscope = Some(value.into()),
23473            "itemtype" => self.itemtype = Some(value.into()),
23474            "lang" => self.lang = Some(value.into()),
23475            "nonce" => self.nonce = Some(value.into()),
23476            "part" => self.part = Some(value.into()),
23477            "popover" => self.popover = Some(value.into()),
23478            "role" => self.role = Some(value.into()),
23479            "slot" => self.slot = Some(value.into()),
23480            "spellcheck" => self.spellcheck = Some(value.into()),
23481            "style" => self.style = Some(value.into()),
23482            "tabindex" => self.tabindex = Some(value.into()),
23483            "title" => self.title = Some(value.into()),
23484            "translate" => self.translate = Some(value.into()),
23485            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
23486            #[cfg(feature = "alloc")]
23487            _ => {
23488                #[allow(clippy::useless_conversion)]
23489                self.extra.insert(name.into(), value.into());
23490            }
23491            #[cfg(not(feature = "alloc"))]
23492            _ => {}
23493        }
23494    }
23495}
23496/// The <strong><code>&lt;q&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element indicates that the enclosed text is a short inline quotation. Most modern browsers implement this by surrounding the text in quotation marks. This element is intended for short quotations that don't require paragraph breaks; for long quotations use the <a href="/en-US/docs/Web/HTML/Element/blockquote"><code>&lt;blockquote&gt;</code></a> element.
23497///
23498/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/q>
23499
23500#[cfg(feature = "alloc")]
23501#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
23502pub struct QOwned {
23503    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
23504    ///   
23505    pub accesskey: core::option::Option<AttributeValueOwned>,
23506    ///
23507    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
23508    ///     <ul>
23509    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
23510    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
23511    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
23512    ///       <li><code>characters</code>, all letters should default to uppercase</li>
23513    ///     </ul>
23514    ///   
23515    pub autocapitalize: core::option::Option<AttributeValueOwned>,
23516    ///
23517    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
23518    ///   
23519    pub autofocus: core::option::Option<AttributeValueOwned>,
23520    ///
23521    ///     <p>The value of this attribute is a URL that designates a source document or message for the information quoted. This attribute is intended to point to information explaining the context or the reference for the quote.</p>
23522    ///   
23523    pub cite: core::option::Option<AttributeValueOwned>,
23524    ///
23525    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
23526    ///   
23527    pub class: core::option::Option<AttributeValueOwned>,
23528    ///
23529    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
23530    ///     <ul>
23531    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
23532    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
23533    ///     </ul>
23534    ///   
23535    pub contenteditable: core::option::Option<AttributeValueOwned>,
23536    ///
23537    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
23538    ///   
23539    pub contextmenu: core::option::Option<AttributeValueOwned>,
23540    ///
23541    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
23542    ///   
23543    #[cfg(feature = "alloc")]
23544    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
23545    ///
23546    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
23547    ///     <ul>
23548    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
23549    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
23550    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
23551    ///     </ul>
23552    ///   
23553    pub dir: core::option::Option<AttributeValueOwned>,
23554    ///
23555    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
23556    ///     <ul>
23557    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
23558    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
23559    ///     </ul>
23560    ///   
23561    pub draggable: core::option::Option<AttributeValueOwned>,
23562    ///
23563    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
23564    ///   
23565    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
23566    ///
23567    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
23568    ///   
23569    pub exportparts: core::option::Option<AttributeValueOwned>,
23570    /// /// Extra attributes of the element.
23571
23572    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
23573    #[cfg(feature = "alloc")]
23574    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
23575    ///
23576    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
23577    ///   
23578    pub hidden: core::option::Option<AttributeValueOwned>,
23579    ///
23580    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
23581    ///   
23582    pub id: core::option::Option<AttributeValueOwned>,
23583    ///
23584    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
23585    ///   
23586    pub inert: core::option::Option<AttributeValueOwned>,
23587    ///
23588    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
23589    ///   
23590    pub inputmode: core::option::Option<AttributeValueOwned>,
23591    ///
23592    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
23593    ///   
23594    pub is: core::option::Option<AttributeValueOwned>,
23595    ///
23596    ///     <p>The unique, global identifier of an item.</p>
23597    ///   
23598    pub itemid: core::option::Option<AttributeValueOwned>,
23599    ///
23600    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
23601    ///   
23602    pub itemprop: core::option::Option<AttributeValueOwned>,
23603    ///
23604    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
23605    ///   
23606    pub itemref: core::option::Option<AttributeValueOwned>,
23607    ///
23608    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
23609    ///   
23610    pub itemscope: core::option::Option<AttributeValueOwned>,
23611    ///
23612    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
23613    ///   
23614    pub itemtype: core::option::Option<AttributeValueOwned>,
23615    ///
23616    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
23617    ///   
23618    pub lang: core::option::Option<AttributeValueOwned>,
23619    ///
23620    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
23621    ///   
23622    pub nonce: core::option::Option<AttributeValueOwned>,
23623    ///
23624    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
23625    ///   
23626    pub part: core::option::Option<AttributeValueOwned>,
23627    ///
23628    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
23629    ///   
23630    pub popover: core::option::Option<AttributeValueOwned>,
23631    ///
23632    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
23633    ///   
23634    pub role: core::option::Option<AttributeValueOwned>,
23635    ///
23636    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
23637    ///   
23638    pub slot: core::option::Option<AttributeValueOwned>,
23639    ///
23640    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
23641    ///     <ul>
23642    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
23643    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
23644    ///     </ul>
23645    ///   
23646    pub spellcheck: core::option::Option<AttributeValueOwned>,
23647    ///
23648    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
23649    ///   
23650    pub style: core::option::Option<AttributeValueOwned>,
23651    ///
23652    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
23653    ///     <ul>
23654    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
23655    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
23656    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
23657    ///     </ul>
23658    ///   
23659    pub tabindex: core::option::Option<AttributeValueOwned>,
23660    ///
23661    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
23662    ///   
23663    pub title: core::option::Option<AttributeValueOwned>,
23664    ///
23665    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
23666    ///     <ul>
23667    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
23668    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
23669    ///     </ul>
23670    ///   
23671    pub translate: core::option::Option<AttributeValueOwned>,
23672    ///
23673    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
23674    ///     <ul>
23675    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
23676    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
23677    ///     </ul>
23678    ///   
23679    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
23680}
23681#[allow(deprecated)]
23682#[cfg(feature = "alloc")]
23683impl QOwned {
23684    /// Get the tag name of the element.
23685    /// This is the same as the name of the struct, in kebab-case.
23686    pub fn tag() -> &'static str {
23687        "q"
23688    }
23689    /// Sets an attribute of the element.
23690    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
23691    /// If the `alloc` feature is disabled, this function will silently fail.
23692    ///
23693    /// # Note
23694    /// This only works when the attribute is lowercase.
23695    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
23696        match name {
23697            "accesskey" => self.accesskey = Some(value.into()),
23698            "autocapitalize" => self.autocapitalize = Some(value.into()),
23699            "autofocus" => self.autofocus = Some(value.into()),
23700            "cite" => self.cite = Some(value.into()),
23701            "class" => self.class = Some(value.into()),
23702            "contenteditable" => self.contenteditable = Some(value.into()),
23703            "contextmenu" => self.contextmenu = Some(value.into()),
23704            "dir" => self.dir = Some(value.into()),
23705            "draggable" => self.draggable = Some(value.into()),
23706            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
23707            "exportparts" => self.exportparts = Some(value.into()),
23708            "hidden" => self.hidden = Some(value.into()),
23709            "id" => self.id = Some(value.into()),
23710            "inert" => self.inert = Some(value.into()),
23711            "inputmode" => self.inputmode = Some(value.into()),
23712            "is" => self.is = Some(value.into()),
23713            "itemid" => self.itemid = Some(value.into()),
23714            "itemprop" => self.itemprop = Some(value.into()),
23715            "itemref" => self.itemref = Some(value.into()),
23716            "itemscope" => self.itemscope = Some(value.into()),
23717            "itemtype" => self.itemtype = Some(value.into()),
23718            "lang" => self.lang = Some(value.into()),
23719            "nonce" => self.nonce = Some(value.into()),
23720            "part" => self.part = Some(value.into()),
23721            "popover" => self.popover = Some(value.into()),
23722            "role" => self.role = Some(value.into()),
23723            "slot" => self.slot = Some(value.into()),
23724            "spellcheck" => self.spellcheck = Some(value.into()),
23725            "style" => self.style = Some(value.into()),
23726            "tabindex" => self.tabindex = Some(value.into()),
23727            "title" => self.title = Some(value.into()),
23728            "translate" => self.translate = Some(value.into()),
23729            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
23730            #[cfg(feature = "alloc")]
23731            _ => {
23732                #[allow(clippy::useless_conversion)]
23733                self.extra.insert(name.into(), value.into());
23734            }
23735            #[cfg(not(feature = "alloc"))]
23736            _ => {}
23737        }
23738    }
23739}
23740/// The <strong><code>&lt;rp&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element is used to provide fall-back parentheses for browsers that do not support display of ruby annotations using the <a href="/en-US/docs/Web/HTML/Element/ruby"><code>&lt;ruby&gt;</code></a> element. One <code>&lt;rp&gt;</code> element should enclose each of the opening and closing parentheses that wrap the <a href="/en-US/docs/Web/HTML/Element/rt"><code>&lt;rt&gt;</code></a> element that contains the annotation's text.
23741///
23742/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/rp>
23743
23744#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
23745pub struct Rp<'life> {
23746    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
23747    ///   
23748    pub accesskey: core::option::Option<AttributeValue<'life>>,
23749    ///
23750    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
23751    ///     <ul>
23752    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
23753    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
23754    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
23755    ///       <li><code>characters</code>, all letters should default to uppercase</li>
23756    ///     </ul>
23757    ///   
23758    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
23759    ///
23760    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
23761    ///   
23762    pub autofocus: core::option::Option<AttributeValue<'life>>,
23763    ///
23764    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
23765    ///   
23766    pub class: core::option::Option<AttributeValue<'life>>,
23767    ///
23768    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
23769    ///     <ul>
23770    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
23771    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
23772    ///     </ul>
23773    ///   
23774    pub contenteditable: core::option::Option<AttributeValue<'life>>,
23775    ///
23776    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
23777    ///   
23778    pub contextmenu: core::option::Option<AttributeValue<'life>>,
23779    ///
23780    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
23781    ///   
23782    #[cfg(feature = "alloc")]
23783    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
23784    ///
23785    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
23786    ///     <ul>
23787    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
23788    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
23789    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
23790    ///     </ul>
23791    ///   
23792    pub dir: core::option::Option<AttributeValue<'life>>,
23793    ///
23794    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
23795    ///     <ul>
23796    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
23797    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
23798    ///     </ul>
23799    ///   
23800    pub draggable: core::option::Option<AttributeValue<'life>>,
23801    ///
23802    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
23803    ///   
23804    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
23805    ///
23806    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
23807    ///   
23808    pub exportparts: core::option::Option<AttributeValue<'life>>,
23809    /// /// Extra attributes of the element.
23810
23811    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
23812    #[cfg(feature = "alloc")]
23813    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
23814    ///
23815    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
23816    ///   
23817    pub hidden: core::option::Option<AttributeValue<'life>>,
23818    ///
23819    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
23820    ///   
23821    pub id: core::option::Option<AttributeValue<'life>>,
23822    ///
23823    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
23824    ///   
23825    pub inert: core::option::Option<AttributeValue<'life>>,
23826    ///
23827    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
23828    ///   
23829    pub inputmode: core::option::Option<AttributeValue<'life>>,
23830    ///
23831    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
23832    ///   
23833    pub is: core::option::Option<AttributeValue<'life>>,
23834    ///
23835    ///     <p>The unique, global identifier of an item.</p>
23836    ///   
23837    pub itemid: core::option::Option<AttributeValue<'life>>,
23838    ///
23839    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
23840    ///   
23841    pub itemprop: core::option::Option<AttributeValue<'life>>,
23842    ///
23843    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
23844    ///   
23845    pub itemref: core::option::Option<AttributeValue<'life>>,
23846    ///
23847    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
23848    ///   
23849    pub itemscope: core::option::Option<AttributeValue<'life>>,
23850    ///
23851    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
23852    ///   
23853    pub itemtype: core::option::Option<AttributeValue<'life>>,
23854    ///
23855    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
23856    ///   
23857    pub lang: core::option::Option<AttributeValue<'life>>,
23858    ///
23859    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
23860    ///   
23861    pub nonce: core::option::Option<AttributeValue<'life>>,
23862    ///
23863    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
23864    ///   
23865    pub part: core::option::Option<AttributeValue<'life>>,
23866    ///
23867    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
23868    ///   
23869    pub popover: core::option::Option<AttributeValue<'life>>,
23870    ///
23871    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
23872    ///   
23873    pub role: core::option::Option<AttributeValue<'life>>,
23874    ///
23875    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
23876    ///   
23877    pub slot: core::option::Option<AttributeValue<'life>>,
23878    ///
23879    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
23880    ///     <ul>
23881    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
23882    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
23883    ///     </ul>
23884    ///   
23885    pub spellcheck: core::option::Option<AttributeValue<'life>>,
23886    ///
23887    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
23888    ///   
23889    pub style: core::option::Option<AttributeValue<'life>>,
23890    ///
23891    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
23892    ///     <ul>
23893    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
23894    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
23895    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
23896    ///     </ul>
23897    ///   
23898    pub tabindex: core::option::Option<AttributeValue<'life>>,
23899    ///
23900    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
23901    ///   
23902    pub title: core::option::Option<AttributeValue<'life>>,
23903    ///
23904    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
23905    ///     <ul>
23906    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
23907    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
23908    ///     </ul>
23909    ///   
23910    pub translate: core::option::Option<AttributeValue<'life>>,
23911    ///
23912    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
23913    ///     <ul>
23914    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
23915    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
23916    ///     </ul>
23917    ///   
23918    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
23919}
23920#[allow(deprecated)]
23921
23922impl<'life> Rp<'life> {
23923    /// Get the tag name of the element.
23924    /// This is the same as the name of the struct, in kebab-case.
23925    pub fn tag() -> &'static str {
23926        "rp"
23927    }
23928    /// Sets an attribute of the element.
23929    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
23930    /// If the `alloc` feature is disabled, this function will silently fail.
23931    ///
23932    /// # Note
23933    /// This only works when the attribute is lowercase.
23934    pub fn set_attr(
23935        &mut self,
23936        name: &'life str,
23937        value: impl core::convert::Into<AttributeValue<'life>>,
23938    ) {
23939        match name {
23940            "accesskey" => self.accesskey = Some(value.into()),
23941            "autocapitalize" => self.autocapitalize = Some(value.into()),
23942            "autofocus" => self.autofocus = Some(value.into()),
23943            "class" => self.class = Some(value.into()),
23944            "contenteditable" => self.contenteditable = Some(value.into()),
23945            "contextmenu" => self.contextmenu = Some(value.into()),
23946            "dir" => self.dir = Some(value.into()),
23947            "draggable" => self.draggable = Some(value.into()),
23948            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
23949            "exportparts" => self.exportparts = Some(value.into()),
23950            "hidden" => self.hidden = Some(value.into()),
23951            "id" => self.id = Some(value.into()),
23952            "inert" => self.inert = Some(value.into()),
23953            "inputmode" => self.inputmode = Some(value.into()),
23954            "is" => self.is = Some(value.into()),
23955            "itemid" => self.itemid = Some(value.into()),
23956            "itemprop" => self.itemprop = Some(value.into()),
23957            "itemref" => self.itemref = Some(value.into()),
23958            "itemscope" => self.itemscope = Some(value.into()),
23959            "itemtype" => self.itemtype = Some(value.into()),
23960            "lang" => self.lang = Some(value.into()),
23961            "nonce" => self.nonce = Some(value.into()),
23962            "part" => self.part = Some(value.into()),
23963            "popover" => self.popover = Some(value.into()),
23964            "role" => self.role = Some(value.into()),
23965            "slot" => self.slot = Some(value.into()),
23966            "spellcheck" => self.spellcheck = Some(value.into()),
23967            "style" => self.style = Some(value.into()),
23968            "tabindex" => self.tabindex = Some(value.into()),
23969            "title" => self.title = Some(value.into()),
23970            "translate" => self.translate = Some(value.into()),
23971            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
23972            #[cfg(feature = "alloc")]
23973            _ => {
23974                #[allow(clippy::useless_conversion)]
23975                self.extra.insert(name.into(), value.into());
23976            }
23977            #[cfg(not(feature = "alloc"))]
23978            _ => {}
23979        }
23980    }
23981}
23982/// The <strong><code>&lt;rp&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element is used to provide fall-back parentheses for browsers that do not support display of ruby annotations using the <a href="/en-US/docs/Web/HTML/Element/ruby"><code>&lt;ruby&gt;</code></a> element. One <code>&lt;rp&gt;</code> element should enclose each of the opening and closing parentheses that wrap the <a href="/en-US/docs/Web/HTML/Element/rt"><code>&lt;rt&gt;</code></a> element that contains the annotation's text.
23983///
23984/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/rp>
23985
23986#[cfg(feature = "alloc")]
23987#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
23988pub struct RpOwned {
23989    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
23990    ///   
23991    pub accesskey: core::option::Option<AttributeValueOwned>,
23992    ///
23993    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
23994    ///     <ul>
23995    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
23996    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
23997    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
23998    ///       <li><code>characters</code>, all letters should default to uppercase</li>
23999    ///     </ul>
24000    ///   
24001    pub autocapitalize: core::option::Option<AttributeValueOwned>,
24002    ///
24003    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
24004    ///   
24005    pub autofocus: core::option::Option<AttributeValueOwned>,
24006    ///
24007    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
24008    ///   
24009    pub class: core::option::Option<AttributeValueOwned>,
24010    ///
24011    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
24012    ///     <ul>
24013    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
24014    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
24015    ///     </ul>
24016    ///   
24017    pub contenteditable: core::option::Option<AttributeValueOwned>,
24018    ///
24019    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
24020    ///   
24021    pub contextmenu: core::option::Option<AttributeValueOwned>,
24022    ///
24023    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
24024    ///   
24025    #[cfg(feature = "alloc")]
24026    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
24027    ///
24028    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
24029    ///     <ul>
24030    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
24031    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
24032    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
24033    ///     </ul>
24034    ///   
24035    pub dir: core::option::Option<AttributeValueOwned>,
24036    ///
24037    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
24038    ///     <ul>
24039    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
24040    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
24041    ///     </ul>
24042    ///   
24043    pub draggable: core::option::Option<AttributeValueOwned>,
24044    ///
24045    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
24046    ///   
24047    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
24048    ///
24049    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
24050    ///   
24051    pub exportparts: core::option::Option<AttributeValueOwned>,
24052    /// /// Extra attributes of the element.
24053
24054    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
24055    #[cfg(feature = "alloc")]
24056    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
24057    ///
24058    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
24059    ///   
24060    pub hidden: core::option::Option<AttributeValueOwned>,
24061    ///
24062    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
24063    ///   
24064    pub id: core::option::Option<AttributeValueOwned>,
24065    ///
24066    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
24067    ///   
24068    pub inert: core::option::Option<AttributeValueOwned>,
24069    ///
24070    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
24071    ///   
24072    pub inputmode: core::option::Option<AttributeValueOwned>,
24073    ///
24074    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
24075    ///   
24076    pub is: core::option::Option<AttributeValueOwned>,
24077    ///
24078    ///     <p>The unique, global identifier of an item.</p>
24079    ///   
24080    pub itemid: core::option::Option<AttributeValueOwned>,
24081    ///
24082    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
24083    ///   
24084    pub itemprop: core::option::Option<AttributeValueOwned>,
24085    ///
24086    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
24087    ///   
24088    pub itemref: core::option::Option<AttributeValueOwned>,
24089    ///
24090    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
24091    ///   
24092    pub itemscope: core::option::Option<AttributeValueOwned>,
24093    ///
24094    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
24095    ///   
24096    pub itemtype: core::option::Option<AttributeValueOwned>,
24097    ///
24098    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
24099    ///   
24100    pub lang: core::option::Option<AttributeValueOwned>,
24101    ///
24102    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
24103    ///   
24104    pub nonce: core::option::Option<AttributeValueOwned>,
24105    ///
24106    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
24107    ///   
24108    pub part: core::option::Option<AttributeValueOwned>,
24109    ///
24110    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
24111    ///   
24112    pub popover: core::option::Option<AttributeValueOwned>,
24113    ///
24114    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
24115    ///   
24116    pub role: core::option::Option<AttributeValueOwned>,
24117    ///
24118    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
24119    ///   
24120    pub slot: core::option::Option<AttributeValueOwned>,
24121    ///
24122    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
24123    ///     <ul>
24124    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
24125    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
24126    ///     </ul>
24127    ///   
24128    pub spellcheck: core::option::Option<AttributeValueOwned>,
24129    ///
24130    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
24131    ///   
24132    pub style: core::option::Option<AttributeValueOwned>,
24133    ///
24134    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
24135    ///     <ul>
24136    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
24137    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
24138    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
24139    ///     </ul>
24140    ///   
24141    pub tabindex: core::option::Option<AttributeValueOwned>,
24142    ///
24143    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
24144    ///   
24145    pub title: core::option::Option<AttributeValueOwned>,
24146    ///
24147    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
24148    ///     <ul>
24149    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
24150    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
24151    ///     </ul>
24152    ///   
24153    pub translate: core::option::Option<AttributeValueOwned>,
24154    ///
24155    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
24156    ///     <ul>
24157    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
24158    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
24159    ///     </ul>
24160    ///   
24161    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
24162}
24163#[allow(deprecated)]
24164#[cfg(feature = "alloc")]
24165impl RpOwned {
24166    /// Get the tag name of the element.
24167    /// This is the same as the name of the struct, in kebab-case.
24168    pub fn tag() -> &'static str {
24169        "rp"
24170    }
24171    /// Sets an attribute of the element.
24172    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
24173    /// If the `alloc` feature is disabled, this function will silently fail.
24174    ///
24175    /// # Note
24176    /// This only works when the attribute is lowercase.
24177    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
24178        match name {
24179            "accesskey" => self.accesskey = Some(value.into()),
24180            "autocapitalize" => self.autocapitalize = Some(value.into()),
24181            "autofocus" => self.autofocus = Some(value.into()),
24182            "class" => self.class = Some(value.into()),
24183            "contenteditable" => self.contenteditable = Some(value.into()),
24184            "contextmenu" => self.contextmenu = Some(value.into()),
24185            "dir" => self.dir = Some(value.into()),
24186            "draggable" => self.draggable = Some(value.into()),
24187            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
24188            "exportparts" => self.exportparts = Some(value.into()),
24189            "hidden" => self.hidden = Some(value.into()),
24190            "id" => self.id = Some(value.into()),
24191            "inert" => self.inert = Some(value.into()),
24192            "inputmode" => self.inputmode = Some(value.into()),
24193            "is" => self.is = Some(value.into()),
24194            "itemid" => self.itemid = Some(value.into()),
24195            "itemprop" => self.itemprop = Some(value.into()),
24196            "itemref" => self.itemref = Some(value.into()),
24197            "itemscope" => self.itemscope = Some(value.into()),
24198            "itemtype" => self.itemtype = Some(value.into()),
24199            "lang" => self.lang = Some(value.into()),
24200            "nonce" => self.nonce = Some(value.into()),
24201            "part" => self.part = Some(value.into()),
24202            "popover" => self.popover = Some(value.into()),
24203            "role" => self.role = Some(value.into()),
24204            "slot" => self.slot = Some(value.into()),
24205            "spellcheck" => self.spellcheck = Some(value.into()),
24206            "style" => self.style = Some(value.into()),
24207            "tabindex" => self.tabindex = Some(value.into()),
24208            "title" => self.title = Some(value.into()),
24209            "translate" => self.translate = Some(value.into()),
24210            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
24211            #[cfg(feature = "alloc")]
24212            _ => {
24213                #[allow(clippy::useless_conversion)]
24214                self.extra.insert(name.into(), value.into());
24215            }
24216            #[cfg(not(feature = "alloc"))]
24217            _ => {}
24218        }
24219    }
24220}
24221/// The <strong><code>&lt;rt&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element specifies the ruby text component of a ruby annotation, which is used to provide pronunciation, translation, or transliteration information for East Asian typography. The <code>&lt;rt&gt;</code> element must always be contained within a <a href="/en-US/docs/Web/HTML/Element/ruby"><code>&lt;ruby&gt;</code></a> element.
24222///
24223/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/rt>
24224
24225#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
24226pub struct Rt<'life> {
24227    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
24228    ///   
24229    pub accesskey: core::option::Option<AttributeValue<'life>>,
24230    ///
24231    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
24232    ///     <ul>
24233    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
24234    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
24235    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
24236    ///       <li><code>characters</code>, all letters should default to uppercase</li>
24237    ///     </ul>
24238    ///   
24239    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
24240    ///
24241    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
24242    ///   
24243    pub autofocus: core::option::Option<AttributeValue<'life>>,
24244    ///
24245    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
24246    ///   
24247    pub class: core::option::Option<AttributeValue<'life>>,
24248    ///
24249    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
24250    ///     <ul>
24251    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
24252    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
24253    ///     </ul>
24254    ///   
24255    pub contenteditable: core::option::Option<AttributeValue<'life>>,
24256    ///
24257    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
24258    ///   
24259    pub contextmenu: core::option::Option<AttributeValue<'life>>,
24260    ///
24261    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
24262    ///   
24263    #[cfg(feature = "alloc")]
24264    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
24265    ///
24266    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
24267    ///     <ul>
24268    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
24269    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
24270    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
24271    ///     </ul>
24272    ///   
24273    pub dir: core::option::Option<AttributeValue<'life>>,
24274    ///
24275    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
24276    ///     <ul>
24277    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
24278    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
24279    ///     </ul>
24280    ///   
24281    pub draggable: core::option::Option<AttributeValue<'life>>,
24282    ///
24283    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
24284    ///   
24285    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
24286    ///
24287    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
24288    ///   
24289    pub exportparts: core::option::Option<AttributeValue<'life>>,
24290    /// /// Extra attributes of the element.
24291
24292    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
24293    #[cfg(feature = "alloc")]
24294    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
24295    ///
24296    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
24297    ///   
24298    pub hidden: core::option::Option<AttributeValue<'life>>,
24299    ///
24300    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
24301    ///   
24302    pub id: core::option::Option<AttributeValue<'life>>,
24303    ///
24304    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
24305    ///   
24306    pub inert: core::option::Option<AttributeValue<'life>>,
24307    ///
24308    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
24309    ///   
24310    pub inputmode: core::option::Option<AttributeValue<'life>>,
24311    ///
24312    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
24313    ///   
24314    pub is: core::option::Option<AttributeValue<'life>>,
24315    ///
24316    ///     <p>The unique, global identifier of an item.</p>
24317    ///   
24318    pub itemid: core::option::Option<AttributeValue<'life>>,
24319    ///
24320    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
24321    ///   
24322    pub itemprop: core::option::Option<AttributeValue<'life>>,
24323    ///
24324    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
24325    ///   
24326    pub itemref: core::option::Option<AttributeValue<'life>>,
24327    ///
24328    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
24329    ///   
24330    pub itemscope: core::option::Option<AttributeValue<'life>>,
24331    ///
24332    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
24333    ///   
24334    pub itemtype: core::option::Option<AttributeValue<'life>>,
24335    ///
24336    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
24337    ///   
24338    pub lang: core::option::Option<AttributeValue<'life>>,
24339    ///
24340    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
24341    ///   
24342    pub nonce: core::option::Option<AttributeValue<'life>>,
24343    ///
24344    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
24345    ///   
24346    pub part: core::option::Option<AttributeValue<'life>>,
24347    ///
24348    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
24349    ///   
24350    pub popover: core::option::Option<AttributeValue<'life>>,
24351    ///
24352    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
24353    ///   
24354    pub role: core::option::Option<AttributeValue<'life>>,
24355    ///
24356    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
24357    ///   
24358    pub slot: core::option::Option<AttributeValue<'life>>,
24359    ///
24360    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
24361    ///     <ul>
24362    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
24363    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
24364    ///     </ul>
24365    ///   
24366    pub spellcheck: core::option::Option<AttributeValue<'life>>,
24367    ///
24368    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
24369    ///   
24370    pub style: core::option::Option<AttributeValue<'life>>,
24371    ///
24372    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
24373    ///     <ul>
24374    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
24375    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
24376    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
24377    ///     </ul>
24378    ///   
24379    pub tabindex: core::option::Option<AttributeValue<'life>>,
24380    ///
24381    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
24382    ///   
24383    pub title: core::option::Option<AttributeValue<'life>>,
24384    ///
24385    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
24386    ///     <ul>
24387    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
24388    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
24389    ///     </ul>
24390    ///   
24391    pub translate: core::option::Option<AttributeValue<'life>>,
24392    ///
24393    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
24394    ///     <ul>
24395    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
24396    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
24397    ///     </ul>
24398    ///   
24399    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
24400}
24401#[allow(deprecated)]
24402
24403impl<'life> Rt<'life> {
24404    /// Get the tag name of the element.
24405    /// This is the same as the name of the struct, in kebab-case.
24406    pub fn tag() -> &'static str {
24407        "rt"
24408    }
24409    /// Sets an attribute of the element.
24410    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
24411    /// If the `alloc` feature is disabled, this function will silently fail.
24412    ///
24413    /// # Note
24414    /// This only works when the attribute is lowercase.
24415    pub fn set_attr(
24416        &mut self,
24417        name: &'life str,
24418        value: impl core::convert::Into<AttributeValue<'life>>,
24419    ) {
24420        match name {
24421            "accesskey" => self.accesskey = Some(value.into()),
24422            "autocapitalize" => self.autocapitalize = Some(value.into()),
24423            "autofocus" => self.autofocus = Some(value.into()),
24424            "class" => self.class = Some(value.into()),
24425            "contenteditable" => self.contenteditable = Some(value.into()),
24426            "contextmenu" => self.contextmenu = Some(value.into()),
24427            "dir" => self.dir = Some(value.into()),
24428            "draggable" => self.draggable = Some(value.into()),
24429            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
24430            "exportparts" => self.exportparts = Some(value.into()),
24431            "hidden" => self.hidden = Some(value.into()),
24432            "id" => self.id = Some(value.into()),
24433            "inert" => self.inert = Some(value.into()),
24434            "inputmode" => self.inputmode = Some(value.into()),
24435            "is" => self.is = Some(value.into()),
24436            "itemid" => self.itemid = Some(value.into()),
24437            "itemprop" => self.itemprop = Some(value.into()),
24438            "itemref" => self.itemref = Some(value.into()),
24439            "itemscope" => self.itemscope = Some(value.into()),
24440            "itemtype" => self.itemtype = Some(value.into()),
24441            "lang" => self.lang = Some(value.into()),
24442            "nonce" => self.nonce = Some(value.into()),
24443            "part" => self.part = Some(value.into()),
24444            "popover" => self.popover = Some(value.into()),
24445            "role" => self.role = Some(value.into()),
24446            "slot" => self.slot = Some(value.into()),
24447            "spellcheck" => self.spellcheck = Some(value.into()),
24448            "style" => self.style = Some(value.into()),
24449            "tabindex" => self.tabindex = Some(value.into()),
24450            "title" => self.title = Some(value.into()),
24451            "translate" => self.translate = Some(value.into()),
24452            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
24453            #[cfg(feature = "alloc")]
24454            _ => {
24455                #[allow(clippy::useless_conversion)]
24456                self.extra.insert(name.into(), value.into());
24457            }
24458            #[cfg(not(feature = "alloc"))]
24459            _ => {}
24460        }
24461    }
24462}
24463/// The <strong><code>&lt;rt&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element specifies the ruby text component of a ruby annotation, which is used to provide pronunciation, translation, or transliteration information for East Asian typography. The <code>&lt;rt&gt;</code> element must always be contained within a <a href="/en-US/docs/Web/HTML/Element/ruby"><code>&lt;ruby&gt;</code></a> element.
24464///
24465/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/rt>
24466
24467#[cfg(feature = "alloc")]
24468#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
24469pub struct RtOwned {
24470    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
24471    ///   
24472    pub accesskey: core::option::Option<AttributeValueOwned>,
24473    ///
24474    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
24475    ///     <ul>
24476    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
24477    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
24478    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
24479    ///       <li><code>characters</code>, all letters should default to uppercase</li>
24480    ///     </ul>
24481    ///   
24482    pub autocapitalize: core::option::Option<AttributeValueOwned>,
24483    ///
24484    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
24485    ///   
24486    pub autofocus: core::option::Option<AttributeValueOwned>,
24487    ///
24488    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
24489    ///   
24490    pub class: core::option::Option<AttributeValueOwned>,
24491    ///
24492    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
24493    ///     <ul>
24494    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
24495    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
24496    ///     </ul>
24497    ///   
24498    pub contenteditable: core::option::Option<AttributeValueOwned>,
24499    ///
24500    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
24501    ///   
24502    pub contextmenu: core::option::Option<AttributeValueOwned>,
24503    ///
24504    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
24505    ///   
24506    #[cfg(feature = "alloc")]
24507    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
24508    ///
24509    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
24510    ///     <ul>
24511    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
24512    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
24513    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
24514    ///     </ul>
24515    ///   
24516    pub dir: core::option::Option<AttributeValueOwned>,
24517    ///
24518    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
24519    ///     <ul>
24520    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
24521    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
24522    ///     </ul>
24523    ///   
24524    pub draggable: core::option::Option<AttributeValueOwned>,
24525    ///
24526    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
24527    ///   
24528    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
24529    ///
24530    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
24531    ///   
24532    pub exportparts: core::option::Option<AttributeValueOwned>,
24533    /// /// Extra attributes of the element.
24534
24535    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
24536    #[cfg(feature = "alloc")]
24537    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
24538    ///
24539    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
24540    ///   
24541    pub hidden: core::option::Option<AttributeValueOwned>,
24542    ///
24543    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
24544    ///   
24545    pub id: core::option::Option<AttributeValueOwned>,
24546    ///
24547    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
24548    ///   
24549    pub inert: core::option::Option<AttributeValueOwned>,
24550    ///
24551    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
24552    ///   
24553    pub inputmode: core::option::Option<AttributeValueOwned>,
24554    ///
24555    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
24556    ///   
24557    pub is: core::option::Option<AttributeValueOwned>,
24558    ///
24559    ///     <p>The unique, global identifier of an item.</p>
24560    ///   
24561    pub itemid: core::option::Option<AttributeValueOwned>,
24562    ///
24563    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
24564    ///   
24565    pub itemprop: core::option::Option<AttributeValueOwned>,
24566    ///
24567    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
24568    ///   
24569    pub itemref: core::option::Option<AttributeValueOwned>,
24570    ///
24571    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
24572    ///   
24573    pub itemscope: core::option::Option<AttributeValueOwned>,
24574    ///
24575    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
24576    ///   
24577    pub itemtype: core::option::Option<AttributeValueOwned>,
24578    ///
24579    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
24580    ///   
24581    pub lang: core::option::Option<AttributeValueOwned>,
24582    ///
24583    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
24584    ///   
24585    pub nonce: core::option::Option<AttributeValueOwned>,
24586    ///
24587    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
24588    ///   
24589    pub part: core::option::Option<AttributeValueOwned>,
24590    ///
24591    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
24592    ///   
24593    pub popover: core::option::Option<AttributeValueOwned>,
24594    ///
24595    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
24596    ///   
24597    pub role: core::option::Option<AttributeValueOwned>,
24598    ///
24599    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
24600    ///   
24601    pub slot: core::option::Option<AttributeValueOwned>,
24602    ///
24603    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
24604    ///     <ul>
24605    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
24606    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
24607    ///     </ul>
24608    ///   
24609    pub spellcheck: core::option::Option<AttributeValueOwned>,
24610    ///
24611    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
24612    ///   
24613    pub style: core::option::Option<AttributeValueOwned>,
24614    ///
24615    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
24616    ///     <ul>
24617    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
24618    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
24619    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
24620    ///     </ul>
24621    ///   
24622    pub tabindex: core::option::Option<AttributeValueOwned>,
24623    ///
24624    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
24625    ///   
24626    pub title: core::option::Option<AttributeValueOwned>,
24627    ///
24628    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
24629    ///     <ul>
24630    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
24631    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
24632    ///     </ul>
24633    ///   
24634    pub translate: core::option::Option<AttributeValueOwned>,
24635    ///
24636    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
24637    ///     <ul>
24638    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
24639    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
24640    ///     </ul>
24641    ///   
24642    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
24643}
24644#[allow(deprecated)]
24645#[cfg(feature = "alloc")]
24646impl RtOwned {
24647    /// Get the tag name of the element.
24648    /// This is the same as the name of the struct, in kebab-case.
24649    pub fn tag() -> &'static str {
24650        "rt"
24651    }
24652    /// Sets an attribute of the element.
24653    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
24654    /// If the `alloc` feature is disabled, this function will silently fail.
24655    ///
24656    /// # Note
24657    /// This only works when the attribute is lowercase.
24658    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
24659        match name {
24660            "accesskey" => self.accesskey = Some(value.into()),
24661            "autocapitalize" => self.autocapitalize = Some(value.into()),
24662            "autofocus" => self.autofocus = Some(value.into()),
24663            "class" => self.class = Some(value.into()),
24664            "contenteditable" => self.contenteditable = Some(value.into()),
24665            "contextmenu" => self.contextmenu = Some(value.into()),
24666            "dir" => self.dir = Some(value.into()),
24667            "draggable" => self.draggable = Some(value.into()),
24668            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
24669            "exportparts" => self.exportparts = Some(value.into()),
24670            "hidden" => self.hidden = Some(value.into()),
24671            "id" => self.id = Some(value.into()),
24672            "inert" => self.inert = Some(value.into()),
24673            "inputmode" => self.inputmode = Some(value.into()),
24674            "is" => self.is = Some(value.into()),
24675            "itemid" => self.itemid = Some(value.into()),
24676            "itemprop" => self.itemprop = Some(value.into()),
24677            "itemref" => self.itemref = Some(value.into()),
24678            "itemscope" => self.itemscope = Some(value.into()),
24679            "itemtype" => self.itemtype = Some(value.into()),
24680            "lang" => self.lang = Some(value.into()),
24681            "nonce" => self.nonce = Some(value.into()),
24682            "part" => self.part = Some(value.into()),
24683            "popover" => self.popover = Some(value.into()),
24684            "role" => self.role = Some(value.into()),
24685            "slot" => self.slot = Some(value.into()),
24686            "spellcheck" => self.spellcheck = Some(value.into()),
24687            "style" => self.style = Some(value.into()),
24688            "tabindex" => self.tabindex = Some(value.into()),
24689            "title" => self.title = Some(value.into()),
24690            "translate" => self.translate = Some(value.into()),
24691            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
24692            #[cfg(feature = "alloc")]
24693            _ => {
24694                #[allow(clippy::useless_conversion)]
24695                self.extra.insert(name.into(), value.into());
24696            }
24697            #[cfg(not(feature = "alloc"))]
24698            _ => {}
24699        }
24700    }
24701}
24702/// The <strong><code>&lt;ruby&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents small annotations that are rendered above, below, or next to base text, usually used for showing the pronunciation of East Asian characters. It can also be used for annotating other kinds of text, but this usage is less common.
24703///
24704/// The term <em>ruby</em> originated as <a href="https://en.wikipedia.org/wiki/Agate_(typography)" class="external" target="_blank">a unit of measurement used by typesetters</a>, representing the smallest size that text can be printed on newsprint while remaining legible.
24705///
24706/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ruby>
24707
24708#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
24709pub struct Ruby<'life> {
24710    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
24711    ///   
24712    pub accesskey: core::option::Option<AttributeValue<'life>>,
24713    ///
24714    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
24715    ///     <ul>
24716    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
24717    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
24718    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
24719    ///       <li><code>characters</code>, all letters should default to uppercase</li>
24720    ///     </ul>
24721    ///   
24722    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
24723    ///
24724    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
24725    ///   
24726    pub autofocus: core::option::Option<AttributeValue<'life>>,
24727    ///
24728    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
24729    ///   
24730    pub class: core::option::Option<AttributeValue<'life>>,
24731    ///
24732    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
24733    ///     <ul>
24734    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
24735    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
24736    ///     </ul>
24737    ///   
24738    pub contenteditable: core::option::Option<AttributeValue<'life>>,
24739    ///
24740    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
24741    ///   
24742    pub contextmenu: core::option::Option<AttributeValue<'life>>,
24743    ///
24744    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
24745    ///   
24746    #[cfg(feature = "alloc")]
24747    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
24748    ///
24749    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
24750    ///     <ul>
24751    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
24752    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
24753    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
24754    ///     </ul>
24755    ///   
24756    pub dir: core::option::Option<AttributeValue<'life>>,
24757    ///
24758    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
24759    ///     <ul>
24760    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
24761    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
24762    ///     </ul>
24763    ///   
24764    pub draggable: core::option::Option<AttributeValue<'life>>,
24765    ///
24766    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
24767    ///   
24768    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
24769    ///
24770    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
24771    ///   
24772    pub exportparts: core::option::Option<AttributeValue<'life>>,
24773    /// /// Extra attributes of the element.
24774
24775    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
24776    #[cfg(feature = "alloc")]
24777    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
24778    ///
24779    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
24780    ///   
24781    pub hidden: core::option::Option<AttributeValue<'life>>,
24782    ///
24783    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
24784    ///   
24785    pub id: core::option::Option<AttributeValue<'life>>,
24786    ///
24787    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
24788    ///   
24789    pub inert: core::option::Option<AttributeValue<'life>>,
24790    ///
24791    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
24792    ///   
24793    pub inputmode: core::option::Option<AttributeValue<'life>>,
24794    ///
24795    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
24796    ///   
24797    pub is: core::option::Option<AttributeValue<'life>>,
24798    ///
24799    ///     <p>The unique, global identifier of an item.</p>
24800    ///   
24801    pub itemid: core::option::Option<AttributeValue<'life>>,
24802    ///
24803    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
24804    ///   
24805    pub itemprop: core::option::Option<AttributeValue<'life>>,
24806    ///
24807    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
24808    ///   
24809    pub itemref: core::option::Option<AttributeValue<'life>>,
24810    ///
24811    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
24812    ///   
24813    pub itemscope: core::option::Option<AttributeValue<'life>>,
24814    ///
24815    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
24816    ///   
24817    pub itemtype: core::option::Option<AttributeValue<'life>>,
24818    ///
24819    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
24820    ///   
24821    pub lang: core::option::Option<AttributeValue<'life>>,
24822    ///
24823    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
24824    ///   
24825    pub nonce: core::option::Option<AttributeValue<'life>>,
24826    ///
24827    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
24828    ///   
24829    pub part: core::option::Option<AttributeValue<'life>>,
24830    ///
24831    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
24832    ///   
24833    pub popover: core::option::Option<AttributeValue<'life>>,
24834    ///
24835    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
24836    ///   
24837    pub role: core::option::Option<AttributeValue<'life>>,
24838    ///
24839    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
24840    ///   
24841    pub slot: core::option::Option<AttributeValue<'life>>,
24842    ///
24843    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
24844    ///     <ul>
24845    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
24846    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
24847    ///     </ul>
24848    ///   
24849    pub spellcheck: core::option::Option<AttributeValue<'life>>,
24850    ///
24851    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
24852    ///   
24853    pub style: core::option::Option<AttributeValue<'life>>,
24854    ///
24855    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
24856    ///     <ul>
24857    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
24858    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
24859    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
24860    ///     </ul>
24861    ///   
24862    pub tabindex: core::option::Option<AttributeValue<'life>>,
24863    ///
24864    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
24865    ///   
24866    pub title: core::option::Option<AttributeValue<'life>>,
24867    ///
24868    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
24869    ///     <ul>
24870    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
24871    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
24872    ///     </ul>
24873    ///   
24874    pub translate: core::option::Option<AttributeValue<'life>>,
24875    ///
24876    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
24877    ///     <ul>
24878    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
24879    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
24880    ///     </ul>
24881    ///   
24882    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
24883}
24884#[allow(deprecated)]
24885
24886impl<'life> Ruby<'life> {
24887    /// Get the tag name of the element.
24888    /// This is the same as the name of the struct, in kebab-case.
24889    pub fn tag() -> &'static str {
24890        "ruby"
24891    }
24892    /// Sets an attribute of the element.
24893    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
24894    /// If the `alloc` feature is disabled, this function will silently fail.
24895    ///
24896    /// # Note
24897    /// This only works when the attribute is lowercase.
24898    pub fn set_attr(
24899        &mut self,
24900        name: &'life str,
24901        value: impl core::convert::Into<AttributeValue<'life>>,
24902    ) {
24903        match name {
24904            "accesskey" => self.accesskey = Some(value.into()),
24905            "autocapitalize" => self.autocapitalize = Some(value.into()),
24906            "autofocus" => self.autofocus = Some(value.into()),
24907            "class" => self.class = Some(value.into()),
24908            "contenteditable" => self.contenteditable = Some(value.into()),
24909            "contextmenu" => self.contextmenu = Some(value.into()),
24910            "dir" => self.dir = Some(value.into()),
24911            "draggable" => self.draggable = Some(value.into()),
24912            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
24913            "exportparts" => self.exportparts = Some(value.into()),
24914            "hidden" => self.hidden = Some(value.into()),
24915            "id" => self.id = Some(value.into()),
24916            "inert" => self.inert = Some(value.into()),
24917            "inputmode" => self.inputmode = Some(value.into()),
24918            "is" => self.is = Some(value.into()),
24919            "itemid" => self.itemid = Some(value.into()),
24920            "itemprop" => self.itemprop = Some(value.into()),
24921            "itemref" => self.itemref = Some(value.into()),
24922            "itemscope" => self.itemscope = Some(value.into()),
24923            "itemtype" => self.itemtype = Some(value.into()),
24924            "lang" => self.lang = Some(value.into()),
24925            "nonce" => self.nonce = Some(value.into()),
24926            "part" => self.part = Some(value.into()),
24927            "popover" => self.popover = Some(value.into()),
24928            "role" => self.role = Some(value.into()),
24929            "slot" => self.slot = Some(value.into()),
24930            "spellcheck" => self.spellcheck = Some(value.into()),
24931            "style" => self.style = Some(value.into()),
24932            "tabindex" => self.tabindex = Some(value.into()),
24933            "title" => self.title = Some(value.into()),
24934            "translate" => self.translate = Some(value.into()),
24935            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
24936            #[cfg(feature = "alloc")]
24937            _ => {
24938                #[allow(clippy::useless_conversion)]
24939                self.extra.insert(name.into(), value.into());
24940            }
24941            #[cfg(not(feature = "alloc"))]
24942            _ => {}
24943        }
24944    }
24945}
24946/// The <strong><code>&lt;ruby&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents small annotations that are rendered above, below, or next to base text, usually used for showing the pronunciation of East Asian characters. It can also be used for annotating other kinds of text, but this usage is less common.
24947///
24948/// The term <em>ruby</em> originated as <a href="https://en.wikipedia.org/wiki/Agate_(typography)" class="external" target="_blank">a unit of measurement used by typesetters</a>, representing the smallest size that text can be printed on newsprint while remaining legible.
24949///
24950/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ruby>
24951
24952#[cfg(feature = "alloc")]
24953#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
24954pub struct RubyOwned {
24955    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
24956    ///   
24957    pub accesskey: core::option::Option<AttributeValueOwned>,
24958    ///
24959    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
24960    ///     <ul>
24961    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
24962    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
24963    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
24964    ///       <li><code>characters</code>, all letters should default to uppercase</li>
24965    ///     </ul>
24966    ///   
24967    pub autocapitalize: core::option::Option<AttributeValueOwned>,
24968    ///
24969    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
24970    ///   
24971    pub autofocus: core::option::Option<AttributeValueOwned>,
24972    ///
24973    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
24974    ///   
24975    pub class: core::option::Option<AttributeValueOwned>,
24976    ///
24977    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
24978    ///     <ul>
24979    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
24980    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
24981    ///     </ul>
24982    ///   
24983    pub contenteditable: core::option::Option<AttributeValueOwned>,
24984    ///
24985    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
24986    ///   
24987    pub contextmenu: core::option::Option<AttributeValueOwned>,
24988    ///
24989    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
24990    ///   
24991    #[cfg(feature = "alloc")]
24992    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
24993    ///
24994    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
24995    ///     <ul>
24996    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
24997    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
24998    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
24999    ///     </ul>
25000    ///   
25001    pub dir: core::option::Option<AttributeValueOwned>,
25002    ///
25003    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
25004    ///     <ul>
25005    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
25006    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
25007    ///     </ul>
25008    ///   
25009    pub draggable: core::option::Option<AttributeValueOwned>,
25010    ///
25011    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
25012    ///   
25013    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
25014    ///
25015    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
25016    ///   
25017    pub exportparts: core::option::Option<AttributeValueOwned>,
25018    /// /// Extra attributes of the element.
25019
25020    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
25021    #[cfg(feature = "alloc")]
25022    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
25023    ///
25024    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
25025    ///   
25026    pub hidden: core::option::Option<AttributeValueOwned>,
25027    ///
25028    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
25029    ///   
25030    pub id: core::option::Option<AttributeValueOwned>,
25031    ///
25032    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
25033    ///   
25034    pub inert: core::option::Option<AttributeValueOwned>,
25035    ///
25036    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
25037    ///   
25038    pub inputmode: core::option::Option<AttributeValueOwned>,
25039    ///
25040    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
25041    ///   
25042    pub is: core::option::Option<AttributeValueOwned>,
25043    ///
25044    ///     <p>The unique, global identifier of an item.</p>
25045    ///   
25046    pub itemid: core::option::Option<AttributeValueOwned>,
25047    ///
25048    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
25049    ///   
25050    pub itemprop: core::option::Option<AttributeValueOwned>,
25051    ///
25052    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
25053    ///   
25054    pub itemref: core::option::Option<AttributeValueOwned>,
25055    ///
25056    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
25057    ///   
25058    pub itemscope: core::option::Option<AttributeValueOwned>,
25059    ///
25060    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
25061    ///   
25062    pub itemtype: core::option::Option<AttributeValueOwned>,
25063    ///
25064    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
25065    ///   
25066    pub lang: core::option::Option<AttributeValueOwned>,
25067    ///
25068    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
25069    ///   
25070    pub nonce: core::option::Option<AttributeValueOwned>,
25071    ///
25072    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
25073    ///   
25074    pub part: core::option::Option<AttributeValueOwned>,
25075    ///
25076    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
25077    ///   
25078    pub popover: core::option::Option<AttributeValueOwned>,
25079    ///
25080    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
25081    ///   
25082    pub role: core::option::Option<AttributeValueOwned>,
25083    ///
25084    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
25085    ///   
25086    pub slot: core::option::Option<AttributeValueOwned>,
25087    ///
25088    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
25089    ///     <ul>
25090    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
25091    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
25092    ///     </ul>
25093    ///   
25094    pub spellcheck: core::option::Option<AttributeValueOwned>,
25095    ///
25096    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
25097    ///   
25098    pub style: core::option::Option<AttributeValueOwned>,
25099    ///
25100    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
25101    ///     <ul>
25102    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
25103    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
25104    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
25105    ///     </ul>
25106    ///   
25107    pub tabindex: core::option::Option<AttributeValueOwned>,
25108    ///
25109    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
25110    ///   
25111    pub title: core::option::Option<AttributeValueOwned>,
25112    ///
25113    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
25114    ///     <ul>
25115    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
25116    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
25117    ///     </ul>
25118    ///   
25119    pub translate: core::option::Option<AttributeValueOwned>,
25120    ///
25121    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
25122    ///     <ul>
25123    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
25124    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
25125    ///     </ul>
25126    ///   
25127    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
25128}
25129#[allow(deprecated)]
25130#[cfg(feature = "alloc")]
25131impl RubyOwned {
25132    /// Get the tag name of the element.
25133    /// This is the same as the name of the struct, in kebab-case.
25134    pub fn tag() -> &'static str {
25135        "ruby"
25136    }
25137    /// Sets an attribute of the element.
25138    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
25139    /// If the `alloc` feature is disabled, this function will silently fail.
25140    ///
25141    /// # Note
25142    /// This only works when the attribute is lowercase.
25143    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
25144        match name {
25145            "accesskey" => self.accesskey = Some(value.into()),
25146            "autocapitalize" => self.autocapitalize = Some(value.into()),
25147            "autofocus" => self.autofocus = Some(value.into()),
25148            "class" => self.class = Some(value.into()),
25149            "contenteditable" => self.contenteditable = Some(value.into()),
25150            "contextmenu" => self.contextmenu = Some(value.into()),
25151            "dir" => self.dir = Some(value.into()),
25152            "draggable" => self.draggable = Some(value.into()),
25153            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
25154            "exportparts" => self.exportparts = Some(value.into()),
25155            "hidden" => self.hidden = Some(value.into()),
25156            "id" => self.id = Some(value.into()),
25157            "inert" => self.inert = Some(value.into()),
25158            "inputmode" => self.inputmode = Some(value.into()),
25159            "is" => self.is = Some(value.into()),
25160            "itemid" => self.itemid = Some(value.into()),
25161            "itemprop" => self.itemprop = Some(value.into()),
25162            "itemref" => self.itemref = Some(value.into()),
25163            "itemscope" => self.itemscope = Some(value.into()),
25164            "itemtype" => self.itemtype = Some(value.into()),
25165            "lang" => self.lang = Some(value.into()),
25166            "nonce" => self.nonce = Some(value.into()),
25167            "part" => self.part = Some(value.into()),
25168            "popover" => self.popover = Some(value.into()),
25169            "role" => self.role = Some(value.into()),
25170            "slot" => self.slot = Some(value.into()),
25171            "spellcheck" => self.spellcheck = Some(value.into()),
25172            "style" => self.style = Some(value.into()),
25173            "tabindex" => self.tabindex = Some(value.into()),
25174            "title" => self.title = Some(value.into()),
25175            "translate" => self.translate = Some(value.into()),
25176            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
25177            #[cfg(feature = "alloc")]
25178            _ => {
25179                #[allow(clippy::useless_conversion)]
25180                self.extra.insert(name.into(), value.into());
25181            }
25182            #[cfg(not(feature = "alloc"))]
25183            _ => {}
25184        }
25185    }
25186}
25187/// The <strong><code>&lt;s&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element renders text with a strikethrough, or a line through it. Use the <code>&lt;s&gt;</code> element to represent things that are no longer relevant or no longer accurate. However, <code>&lt;s&gt;</code> is not appropriate when indicating document edits; for that, use the <a href="/en-US/docs/Web/HTML/Element/del"><code>&lt;del&gt;</code></a> and <a href="/en-US/docs/Web/HTML/Element/ins"><code>&lt;ins&gt;</code></a> elements, as appropriate.
25188///
25189/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/s>
25190
25191#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
25192pub struct S<'life> {
25193    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
25194    ///   
25195    pub accesskey: core::option::Option<AttributeValue<'life>>,
25196    ///
25197    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
25198    ///     <ul>
25199    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
25200    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
25201    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
25202    ///       <li><code>characters</code>, all letters should default to uppercase</li>
25203    ///     </ul>
25204    ///   
25205    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
25206    ///
25207    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
25208    ///   
25209    pub autofocus: core::option::Option<AttributeValue<'life>>,
25210    ///
25211    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
25212    ///   
25213    pub class: core::option::Option<AttributeValue<'life>>,
25214    ///
25215    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
25216    ///     <ul>
25217    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
25218    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
25219    ///     </ul>
25220    ///   
25221    pub contenteditable: core::option::Option<AttributeValue<'life>>,
25222    ///
25223    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
25224    ///   
25225    pub contextmenu: core::option::Option<AttributeValue<'life>>,
25226    ///
25227    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
25228    ///   
25229    #[cfg(feature = "alloc")]
25230    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
25231    ///
25232    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
25233    ///     <ul>
25234    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
25235    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
25236    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
25237    ///     </ul>
25238    ///   
25239    pub dir: core::option::Option<AttributeValue<'life>>,
25240    ///
25241    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
25242    ///     <ul>
25243    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
25244    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
25245    ///     </ul>
25246    ///   
25247    pub draggable: core::option::Option<AttributeValue<'life>>,
25248    ///
25249    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
25250    ///   
25251    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
25252    ///
25253    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
25254    ///   
25255    pub exportparts: core::option::Option<AttributeValue<'life>>,
25256    /// /// Extra attributes of the element.
25257
25258    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
25259    #[cfg(feature = "alloc")]
25260    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
25261    ///
25262    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
25263    ///   
25264    pub hidden: core::option::Option<AttributeValue<'life>>,
25265    ///
25266    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
25267    ///   
25268    pub id: core::option::Option<AttributeValue<'life>>,
25269    ///
25270    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
25271    ///   
25272    pub inert: core::option::Option<AttributeValue<'life>>,
25273    ///
25274    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
25275    ///   
25276    pub inputmode: core::option::Option<AttributeValue<'life>>,
25277    ///
25278    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
25279    ///   
25280    pub is: core::option::Option<AttributeValue<'life>>,
25281    ///
25282    ///     <p>The unique, global identifier of an item.</p>
25283    ///   
25284    pub itemid: core::option::Option<AttributeValue<'life>>,
25285    ///
25286    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
25287    ///   
25288    pub itemprop: core::option::Option<AttributeValue<'life>>,
25289    ///
25290    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
25291    ///   
25292    pub itemref: core::option::Option<AttributeValue<'life>>,
25293    ///
25294    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
25295    ///   
25296    pub itemscope: core::option::Option<AttributeValue<'life>>,
25297    ///
25298    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
25299    ///   
25300    pub itemtype: core::option::Option<AttributeValue<'life>>,
25301    ///
25302    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
25303    ///   
25304    pub lang: core::option::Option<AttributeValue<'life>>,
25305    ///
25306    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
25307    ///   
25308    pub nonce: core::option::Option<AttributeValue<'life>>,
25309    ///
25310    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
25311    ///   
25312    pub part: core::option::Option<AttributeValue<'life>>,
25313    ///
25314    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
25315    ///   
25316    pub popover: core::option::Option<AttributeValue<'life>>,
25317    ///
25318    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
25319    ///   
25320    pub role: core::option::Option<AttributeValue<'life>>,
25321    ///
25322    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
25323    ///   
25324    pub slot: core::option::Option<AttributeValue<'life>>,
25325    ///
25326    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
25327    ///     <ul>
25328    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
25329    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
25330    ///     </ul>
25331    ///   
25332    pub spellcheck: core::option::Option<AttributeValue<'life>>,
25333    ///
25334    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
25335    ///   
25336    pub style: core::option::Option<AttributeValue<'life>>,
25337    ///
25338    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
25339    ///     <ul>
25340    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
25341    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
25342    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
25343    ///     </ul>
25344    ///   
25345    pub tabindex: core::option::Option<AttributeValue<'life>>,
25346    ///
25347    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
25348    ///   
25349    pub title: core::option::Option<AttributeValue<'life>>,
25350    ///
25351    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
25352    ///     <ul>
25353    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
25354    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
25355    ///     </ul>
25356    ///   
25357    pub translate: core::option::Option<AttributeValue<'life>>,
25358    ///
25359    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
25360    ///     <ul>
25361    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
25362    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
25363    ///     </ul>
25364    ///   
25365    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
25366}
25367#[allow(deprecated)]
25368
25369impl<'life> S<'life> {
25370    /// Get the tag name of the element.
25371    /// This is the same as the name of the struct, in kebab-case.
25372    pub fn tag() -> &'static str {
25373        "s"
25374    }
25375    /// Sets an attribute of the element.
25376    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
25377    /// If the `alloc` feature is disabled, this function will silently fail.
25378    ///
25379    /// # Note
25380    /// This only works when the attribute is lowercase.
25381    pub fn set_attr(
25382        &mut self,
25383        name: &'life str,
25384        value: impl core::convert::Into<AttributeValue<'life>>,
25385    ) {
25386        match name {
25387            "accesskey" => self.accesskey = Some(value.into()),
25388            "autocapitalize" => self.autocapitalize = Some(value.into()),
25389            "autofocus" => self.autofocus = Some(value.into()),
25390            "class" => self.class = Some(value.into()),
25391            "contenteditable" => self.contenteditable = Some(value.into()),
25392            "contextmenu" => self.contextmenu = Some(value.into()),
25393            "dir" => self.dir = Some(value.into()),
25394            "draggable" => self.draggable = Some(value.into()),
25395            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
25396            "exportparts" => self.exportparts = Some(value.into()),
25397            "hidden" => self.hidden = Some(value.into()),
25398            "id" => self.id = Some(value.into()),
25399            "inert" => self.inert = Some(value.into()),
25400            "inputmode" => self.inputmode = Some(value.into()),
25401            "is" => self.is = Some(value.into()),
25402            "itemid" => self.itemid = Some(value.into()),
25403            "itemprop" => self.itemprop = Some(value.into()),
25404            "itemref" => self.itemref = Some(value.into()),
25405            "itemscope" => self.itemscope = Some(value.into()),
25406            "itemtype" => self.itemtype = Some(value.into()),
25407            "lang" => self.lang = Some(value.into()),
25408            "nonce" => self.nonce = Some(value.into()),
25409            "part" => self.part = Some(value.into()),
25410            "popover" => self.popover = Some(value.into()),
25411            "role" => self.role = Some(value.into()),
25412            "slot" => self.slot = Some(value.into()),
25413            "spellcheck" => self.spellcheck = Some(value.into()),
25414            "style" => self.style = Some(value.into()),
25415            "tabindex" => self.tabindex = Some(value.into()),
25416            "title" => self.title = Some(value.into()),
25417            "translate" => self.translate = Some(value.into()),
25418            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
25419            #[cfg(feature = "alloc")]
25420            _ => {
25421                #[allow(clippy::useless_conversion)]
25422                self.extra.insert(name.into(), value.into());
25423            }
25424            #[cfg(not(feature = "alloc"))]
25425            _ => {}
25426        }
25427    }
25428}
25429/// The <strong><code>&lt;s&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element renders text with a strikethrough, or a line through it. Use the <code>&lt;s&gt;</code> element to represent things that are no longer relevant or no longer accurate. However, <code>&lt;s&gt;</code> is not appropriate when indicating document edits; for that, use the <a href="/en-US/docs/Web/HTML/Element/del"><code>&lt;del&gt;</code></a> and <a href="/en-US/docs/Web/HTML/Element/ins"><code>&lt;ins&gt;</code></a> elements, as appropriate.
25430///
25431/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/s>
25432
25433#[cfg(feature = "alloc")]
25434#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
25435pub struct SOwned {
25436    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
25437    ///   
25438    pub accesskey: core::option::Option<AttributeValueOwned>,
25439    ///
25440    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
25441    ///     <ul>
25442    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
25443    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
25444    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
25445    ///       <li><code>characters</code>, all letters should default to uppercase</li>
25446    ///     </ul>
25447    ///   
25448    pub autocapitalize: core::option::Option<AttributeValueOwned>,
25449    ///
25450    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
25451    ///   
25452    pub autofocus: core::option::Option<AttributeValueOwned>,
25453    ///
25454    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
25455    ///   
25456    pub class: core::option::Option<AttributeValueOwned>,
25457    ///
25458    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
25459    ///     <ul>
25460    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
25461    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
25462    ///     </ul>
25463    ///   
25464    pub contenteditable: core::option::Option<AttributeValueOwned>,
25465    ///
25466    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
25467    ///   
25468    pub contextmenu: core::option::Option<AttributeValueOwned>,
25469    ///
25470    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
25471    ///   
25472    #[cfg(feature = "alloc")]
25473    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
25474    ///
25475    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
25476    ///     <ul>
25477    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
25478    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
25479    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
25480    ///     </ul>
25481    ///   
25482    pub dir: core::option::Option<AttributeValueOwned>,
25483    ///
25484    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
25485    ///     <ul>
25486    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
25487    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
25488    ///     </ul>
25489    ///   
25490    pub draggable: core::option::Option<AttributeValueOwned>,
25491    ///
25492    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
25493    ///   
25494    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
25495    ///
25496    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
25497    ///   
25498    pub exportparts: core::option::Option<AttributeValueOwned>,
25499    /// /// Extra attributes of the element.
25500
25501    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
25502    #[cfg(feature = "alloc")]
25503    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
25504    ///
25505    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
25506    ///   
25507    pub hidden: core::option::Option<AttributeValueOwned>,
25508    ///
25509    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
25510    ///   
25511    pub id: core::option::Option<AttributeValueOwned>,
25512    ///
25513    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
25514    ///   
25515    pub inert: core::option::Option<AttributeValueOwned>,
25516    ///
25517    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
25518    ///   
25519    pub inputmode: core::option::Option<AttributeValueOwned>,
25520    ///
25521    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
25522    ///   
25523    pub is: core::option::Option<AttributeValueOwned>,
25524    ///
25525    ///     <p>The unique, global identifier of an item.</p>
25526    ///   
25527    pub itemid: core::option::Option<AttributeValueOwned>,
25528    ///
25529    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
25530    ///   
25531    pub itemprop: core::option::Option<AttributeValueOwned>,
25532    ///
25533    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
25534    ///   
25535    pub itemref: core::option::Option<AttributeValueOwned>,
25536    ///
25537    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
25538    ///   
25539    pub itemscope: core::option::Option<AttributeValueOwned>,
25540    ///
25541    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
25542    ///   
25543    pub itemtype: core::option::Option<AttributeValueOwned>,
25544    ///
25545    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
25546    ///   
25547    pub lang: core::option::Option<AttributeValueOwned>,
25548    ///
25549    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
25550    ///   
25551    pub nonce: core::option::Option<AttributeValueOwned>,
25552    ///
25553    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
25554    ///   
25555    pub part: core::option::Option<AttributeValueOwned>,
25556    ///
25557    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
25558    ///   
25559    pub popover: core::option::Option<AttributeValueOwned>,
25560    ///
25561    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
25562    ///   
25563    pub role: core::option::Option<AttributeValueOwned>,
25564    ///
25565    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
25566    ///   
25567    pub slot: core::option::Option<AttributeValueOwned>,
25568    ///
25569    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
25570    ///     <ul>
25571    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
25572    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
25573    ///     </ul>
25574    ///   
25575    pub spellcheck: core::option::Option<AttributeValueOwned>,
25576    ///
25577    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
25578    ///   
25579    pub style: core::option::Option<AttributeValueOwned>,
25580    ///
25581    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
25582    ///     <ul>
25583    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
25584    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
25585    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
25586    ///     </ul>
25587    ///   
25588    pub tabindex: core::option::Option<AttributeValueOwned>,
25589    ///
25590    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
25591    ///   
25592    pub title: core::option::Option<AttributeValueOwned>,
25593    ///
25594    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
25595    ///     <ul>
25596    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
25597    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
25598    ///     </ul>
25599    ///   
25600    pub translate: core::option::Option<AttributeValueOwned>,
25601    ///
25602    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
25603    ///     <ul>
25604    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
25605    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
25606    ///     </ul>
25607    ///   
25608    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
25609}
25610#[allow(deprecated)]
25611#[cfg(feature = "alloc")]
25612impl SOwned {
25613    /// Get the tag name of the element.
25614    /// This is the same as the name of the struct, in kebab-case.
25615    pub fn tag() -> &'static str {
25616        "s"
25617    }
25618    /// Sets an attribute of the element.
25619    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
25620    /// If the `alloc` feature is disabled, this function will silently fail.
25621    ///
25622    /// # Note
25623    /// This only works when the attribute is lowercase.
25624    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
25625        match name {
25626            "accesskey" => self.accesskey = Some(value.into()),
25627            "autocapitalize" => self.autocapitalize = Some(value.into()),
25628            "autofocus" => self.autofocus = Some(value.into()),
25629            "class" => self.class = Some(value.into()),
25630            "contenteditable" => self.contenteditable = Some(value.into()),
25631            "contextmenu" => self.contextmenu = Some(value.into()),
25632            "dir" => self.dir = Some(value.into()),
25633            "draggable" => self.draggable = Some(value.into()),
25634            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
25635            "exportparts" => self.exportparts = Some(value.into()),
25636            "hidden" => self.hidden = Some(value.into()),
25637            "id" => self.id = Some(value.into()),
25638            "inert" => self.inert = Some(value.into()),
25639            "inputmode" => self.inputmode = Some(value.into()),
25640            "is" => self.is = Some(value.into()),
25641            "itemid" => self.itemid = Some(value.into()),
25642            "itemprop" => self.itemprop = Some(value.into()),
25643            "itemref" => self.itemref = Some(value.into()),
25644            "itemscope" => self.itemscope = Some(value.into()),
25645            "itemtype" => self.itemtype = Some(value.into()),
25646            "lang" => self.lang = Some(value.into()),
25647            "nonce" => self.nonce = Some(value.into()),
25648            "part" => self.part = Some(value.into()),
25649            "popover" => self.popover = Some(value.into()),
25650            "role" => self.role = Some(value.into()),
25651            "slot" => self.slot = Some(value.into()),
25652            "spellcheck" => self.spellcheck = Some(value.into()),
25653            "style" => self.style = Some(value.into()),
25654            "tabindex" => self.tabindex = Some(value.into()),
25655            "title" => self.title = Some(value.into()),
25656            "translate" => self.translate = Some(value.into()),
25657            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
25658            #[cfg(feature = "alloc")]
25659            _ => {
25660                #[allow(clippy::useless_conversion)]
25661                self.extra.insert(name.into(), value.into());
25662            }
25663            #[cfg(not(feature = "alloc"))]
25664            _ => {}
25665        }
25666    }
25667}
25668/// The <strong><code>&lt;samp&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element is used to enclose inline text which represents sample (or quoted) output from a computer program. Its contents are typically rendered using the browser's default monospaced font (such as <a target="_blank" class="external" href="https://en.wikipedia.org/wiki/Courier_(typeface)">Courier</a> or Lucida Console).
25669///
25670/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/samp>
25671
25672#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
25673pub struct Samp<'life> {
25674    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
25675    ///   
25676    pub accesskey: core::option::Option<AttributeValue<'life>>,
25677    ///
25678    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
25679    ///     <ul>
25680    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
25681    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
25682    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
25683    ///       <li><code>characters</code>, all letters should default to uppercase</li>
25684    ///     </ul>
25685    ///   
25686    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
25687    ///
25688    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
25689    ///   
25690    pub autofocus: core::option::Option<AttributeValue<'life>>,
25691    ///
25692    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
25693    ///   
25694    pub class: core::option::Option<AttributeValue<'life>>,
25695    ///
25696    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
25697    ///     <ul>
25698    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
25699    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
25700    ///     </ul>
25701    ///   
25702    pub contenteditable: core::option::Option<AttributeValue<'life>>,
25703    ///
25704    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
25705    ///   
25706    pub contextmenu: core::option::Option<AttributeValue<'life>>,
25707    ///
25708    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
25709    ///   
25710    #[cfg(feature = "alloc")]
25711    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
25712    ///
25713    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
25714    ///     <ul>
25715    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
25716    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
25717    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
25718    ///     </ul>
25719    ///   
25720    pub dir: core::option::Option<AttributeValue<'life>>,
25721    ///
25722    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
25723    ///     <ul>
25724    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
25725    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
25726    ///     </ul>
25727    ///   
25728    pub draggable: core::option::Option<AttributeValue<'life>>,
25729    ///
25730    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
25731    ///   
25732    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
25733    ///
25734    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
25735    ///   
25736    pub exportparts: core::option::Option<AttributeValue<'life>>,
25737    /// /// Extra attributes of the element.
25738
25739    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
25740    #[cfg(feature = "alloc")]
25741    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
25742    ///
25743    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
25744    ///   
25745    pub hidden: core::option::Option<AttributeValue<'life>>,
25746    ///
25747    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
25748    ///   
25749    pub id: core::option::Option<AttributeValue<'life>>,
25750    ///
25751    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
25752    ///   
25753    pub inert: core::option::Option<AttributeValue<'life>>,
25754    ///
25755    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
25756    ///   
25757    pub inputmode: core::option::Option<AttributeValue<'life>>,
25758    ///
25759    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
25760    ///   
25761    pub is: core::option::Option<AttributeValue<'life>>,
25762    ///
25763    ///     <p>The unique, global identifier of an item.</p>
25764    ///   
25765    pub itemid: core::option::Option<AttributeValue<'life>>,
25766    ///
25767    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
25768    ///   
25769    pub itemprop: core::option::Option<AttributeValue<'life>>,
25770    ///
25771    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
25772    ///   
25773    pub itemref: core::option::Option<AttributeValue<'life>>,
25774    ///
25775    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
25776    ///   
25777    pub itemscope: core::option::Option<AttributeValue<'life>>,
25778    ///
25779    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
25780    ///   
25781    pub itemtype: core::option::Option<AttributeValue<'life>>,
25782    ///
25783    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
25784    ///   
25785    pub lang: core::option::Option<AttributeValue<'life>>,
25786    ///
25787    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
25788    ///   
25789    pub nonce: core::option::Option<AttributeValue<'life>>,
25790    ///
25791    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
25792    ///   
25793    pub part: core::option::Option<AttributeValue<'life>>,
25794    ///
25795    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
25796    ///   
25797    pub popover: core::option::Option<AttributeValue<'life>>,
25798    ///
25799    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
25800    ///   
25801    pub role: core::option::Option<AttributeValue<'life>>,
25802    ///
25803    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
25804    ///   
25805    pub slot: core::option::Option<AttributeValue<'life>>,
25806    ///
25807    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
25808    ///     <ul>
25809    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
25810    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
25811    ///     </ul>
25812    ///   
25813    pub spellcheck: core::option::Option<AttributeValue<'life>>,
25814    ///
25815    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
25816    ///   
25817    pub style: core::option::Option<AttributeValue<'life>>,
25818    ///
25819    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
25820    ///     <ul>
25821    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
25822    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
25823    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
25824    ///     </ul>
25825    ///   
25826    pub tabindex: core::option::Option<AttributeValue<'life>>,
25827    ///
25828    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
25829    ///   
25830    pub title: core::option::Option<AttributeValue<'life>>,
25831    ///
25832    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
25833    ///     <ul>
25834    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
25835    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
25836    ///     </ul>
25837    ///   
25838    pub translate: core::option::Option<AttributeValue<'life>>,
25839    ///
25840    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
25841    ///     <ul>
25842    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
25843    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
25844    ///     </ul>
25845    ///   
25846    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
25847}
25848#[allow(deprecated)]
25849
25850impl<'life> Samp<'life> {
25851    /// Get the tag name of the element.
25852    /// This is the same as the name of the struct, in kebab-case.
25853    pub fn tag() -> &'static str {
25854        "samp"
25855    }
25856    /// Sets an attribute of the element.
25857    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
25858    /// If the `alloc` feature is disabled, this function will silently fail.
25859    ///
25860    /// # Note
25861    /// This only works when the attribute is lowercase.
25862    pub fn set_attr(
25863        &mut self,
25864        name: &'life str,
25865        value: impl core::convert::Into<AttributeValue<'life>>,
25866    ) {
25867        match name {
25868            "accesskey" => self.accesskey = Some(value.into()),
25869            "autocapitalize" => self.autocapitalize = Some(value.into()),
25870            "autofocus" => self.autofocus = Some(value.into()),
25871            "class" => self.class = Some(value.into()),
25872            "contenteditable" => self.contenteditable = Some(value.into()),
25873            "contextmenu" => self.contextmenu = Some(value.into()),
25874            "dir" => self.dir = Some(value.into()),
25875            "draggable" => self.draggable = Some(value.into()),
25876            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
25877            "exportparts" => self.exportparts = Some(value.into()),
25878            "hidden" => self.hidden = Some(value.into()),
25879            "id" => self.id = Some(value.into()),
25880            "inert" => self.inert = Some(value.into()),
25881            "inputmode" => self.inputmode = Some(value.into()),
25882            "is" => self.is = Some(value.into()),
25883            "itemid" => self.itemid = Some(value.into()),
25884            "itemprop" => self.itemprop = Some(value.into()),
25885            "itemref" => self.itemref = Some(value.into()),
25886            "itemscope" => self.itemscope = Some(value.into()),
25887            "itemtype" => self.itemtype = Some(value.into()),
25888            "lang" => self.lang = Some(value.into()),
25889            "nonce" => self.nonce = Some(value.into()),
25890            "part" => self.part = Some(value.into()),
25891            "popover" => self.popover = Some(value.into()),
25892            "role" => self.role = Some(value.into()),
25893            "slot" => self.slot = Some(value.into()),
25894            "spellcheck" => self.spellcheck = Some(value.into()),
25895            "style" => self.style = Some(value.into()),
25896            "tabindex" => self.tabindex = Some(value.into()),
25897            "title" => self.title = Some(value.into()),
25898            "translate" => self.translate = Some(value.into()),
25899            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
25900            #[cfg(feature = "alloc")]
25901            _ => {
25902                #[allow(clippy::useless_conversion)]
25903                self.extra.insert(name.into(), value.into());
25904            }
25905            #[cfg(not(feature = "alloc"))]
25906            _ => {}
25907        }
25908    }
25909}
25910/// The <strong><code>&lt;samp&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element is used to enclose inline text which represents sample (or quoted) output from a computer program. Its contents are typically rendered using the browser's default monospaced font (such as <a target="_blank" class="external" href="https://en.wikipedia.org/wiki/Courier_(typeface)">Courier</a> or Lucida Console).
25911///
25912/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/samp>
25913
25914#[cfg(feature = "alloc")]
25915#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
25916pub struct SampOwned {
25917    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
25918    ///   
25919    pub accesskey: core::option::Option<AttributeValueOwned>,
25920    ///
25921    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
25922    ///     <ul>
25923    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
25924    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
25925    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
25926    ///       <li><code>characters</code>, all letters should default to uppercase</li>
25927    ///     </ul>
25928    ///   
25929    pub autocapitalize: core::option::Option<AttributeValueOwned>,
25930    ///
25931    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
25932    ///   
25933    pub autofocus: core::option::Option<AttributeValueOwned>,
25934    ///
25935    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
25936    ///   
25937    pub class: core::option::Option<AttributeValueOwned>,
25938    ///
25939    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
25940    ///     <ul>
25941    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
25942    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
25943    ///     </ul>
25944    ///   
25945    pub contenteditable: core::option::Option<AttributeValueOwned>,
25946    ///
25947    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
25948    ///   
25949    pub contextmenu: core::option::Option<AttributeValueOwned>,
25950    ///
25951    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
25952    ///   
25953    #[cfg(feature = "alloc")]
25954    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
25955    ///
25956    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
25957    ///     <ul>
25958    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
25959    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
25960    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
25961    ///     </ul>
25962    ///   
25963    pub dir: core::option::Option<AttributeValueOwned>,
25964    ///
25965    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
25966    ///     <ul>
25967    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
25968    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
25969    ///     </ul>
25970    ///   
25971    pub draggable: core::option::Option<AttributeValueOwned>,
25972    ///
25973    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
25974    ///   
25975    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
25976    ///
25977    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
25978    ///   
25979    pub exportparts: core::option::Option<AttributeValueOwned>,
25980    /// /// Extra attributes of the element.
25981
25982    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
25983    #[cfg(feature = "alloc")]
25984    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
25985    ///
25986    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
25987    ///   
25988    pub hidden: core::option::Option<AttributeValueOwned>,
25989    ///
25990    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
25991    ///   
25992    pub id: core::option::Option<AttributeValueOwned>,
25993    ///
25994    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
25995    ///   
25996    pub inert: core::option::Option<AttributeValueOwned>,
25997    ///
25998    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
25999    ///   
26000    pub inputmode: core::option::Option<AttributeValueOwned>,
26001    ///
26002    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
26003    ///   
26004    pub is: core::option::Option<AttributeValueOwned>,
26005    ///
26006    ///     <p>The unique, global identifier of an item.</p>
26007    ///   
26008    pub itemid: core::option::Option<AttributeValueOwned>,
26009    ///
26010    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
26011    ///   
26012    pub itemprop: core::option::Option<AttributeValueOwned>,
26013    ///
26014    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
26015    ///   
26016    pub itemref: core::option::Option<AttributeValueOwned>,
26017    ///
26018    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
26019    ///   
26020    pub itemscope: core::option::Option<AttributeValueOwned>,
26021    ///
26022    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
26023    ///   
26024    pub itemtype: core::option::Option<AttributeValueOwned>,
26025    ///
26026    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
26027    ///   
26028    pub lang: core::option::Option<AttributeValueOwned>,
26029    ///
26030    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
26031    ///   
26032    pub nonce: core::option::Option<AttributeValueOwned>,
26033    ///
26034    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
26035    ///   
26036    pub part: core::option::Option<AttributeValueOwned>,
26037    ///
26038    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
26039    ///   
26040    pub popover: core::option::Option<AttributeValueOwned>,
26041    ///
26042    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
26043    ///   
26044    pub role: core::option::Option<AttributeValueOwned>,
26045    ///
26046    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
26047    ///   
26048    pub slot: core::option::Option<AttributeValueOwned>,
26049    ///
26050    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
26051    ///     <ul>
26052    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
26053    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
26054    ///     </ul>
26055    ///   
26056    pub spellcheck: core::option::Option<AttributeValueOwned>,
26057    ///
26058    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
26059    ///   
26060    pub style: core::option::Option<AttributeValueOwned>,
26061    ///
26062    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
26063    ///     <ul>
26064    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
26065    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
26066    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
26067    ///     </ul>
26068    ///   
26069    pub tabindex: core::option::Option<AttributeValueOwned>,
26070    ///
26071    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
26072    ///   
26073    pub title: core::option::Option<AttributeValueOwned>,
26074    ///
26075    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
26076    ///     <ul>
26077    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
26078    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
26079    ///     </ul>
26080    ///   
26081    pub translate: core::option::Option<AttributeValueOwned>,
26082    ///
26083    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
26084    ///     <ul>
26085    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
26086    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
26087    ///     </ul>
26088    ///   
26089    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
26090}
26091#[allow(deprecated)]
26092#[cfg(feature = "alloc")]
26093impl SampOwned {
26094    /// Get the tag name of the element.
26095    /// This is the same as the name of the struct, in kebab-case.
26096    pub fn tag() -> &'static str {
26097        "samp"
26098    }
26099    /// Sets an attribute of the element.
26100    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
26101    /// If the `alloc` feature is disabled, this function will silently fail.
26102    ///
26103    /// # Note
26104    /// This only works when the attribute is lowercase.
26105    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
26106        match name {
26107            "accesskey" => self.accesskey = Some(value.into()),
26108            "autocapitalize" => self.autocapitalize = Some(value.into()),
26109            "autofocus" => self.autofocus = Some(value.into()),
26110            "class" => self.class = Some(value.into()),
26111            "contenteditable" => self.contenteditable = Some(value.into()),
26112            "contextmenu" => self.contextmenu = Some(value.into()),
26113            "dir" => self.dir = Some(value.into()),
26114            "draggable" => self.draggable = Some(value.into()),
26115            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
26116            "exportparts" => self.exportparts = Some(value.into()),
26117            "hidden" => self.hidden = Some(value.into()),
26118            "id" => self.id = Some(value.into()),
26119            "inert" => self.inert = Some(value.into()),
26120            "inputmode" => self.inputmode = Some(value.into()),
26121            "is" => self.is = Some(value.into()),
26122            "itemid" => self.itemid = Some(value.into()),
26123            "itemprop" => self.itemprop = Some(value.into()),
26124            "itemref" => self.itemref = Some(value.into()),
26125            "itemscope" => self.itemscope = Some(value.into()),
26126            "itemtype" => self.itemtype = Some(value.into()),
26127            "lang" => self.lang = Some(value.into()),
26128            "nonce" => self.nonce = Some(value.into()),
26129            "part" => self.part = Some(value.into()),
26130            "popover" => self.popover = Some(value.into()),
26131            "role" => self.role = Some(value.into()),
26132            "slot" => self.slot = Some(value.into()),
26133            "spellcheck" => self.spellcheck = Some(value.into()),
26134            "style" => self.style = Some(value.into()),
26135            "tabindex" => self.tabindex = Some(value.into()),
26136            "title" => self.title = Some(value.into()),
26137            "translate" => self.translate = Some(value.into()),
26138            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
26139            #[cfg(feature = "alloc")]
26140            _ => {
26141                #[allow(clippy::useless_conversion)]
26142                self.extra.insert(name.into(), value.into());
26143            }
26144            #[cfg(not(feature = "alloc"))]
26145            _ => {}
26146        }
26147    }
26148}
26149/// The <strong><code>&lt;small&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents side-comments and small print, like copyright and legal text, independent of its styled presentation. By default, it renders text within it one font-size smaller, such as from <code>small</code> to <code>x-small</code>.
26150///
26151/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/small>
26152
26153#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
26154pub struct Small<'life> {
26155    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
26156    ///   
26157    pub accesskey: core::option::Option<AttributeValue<'life>>,
26158    ///
26159    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
26160    ///     <ul>
26161    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
26162    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
26163    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
26164    ///       <li><code>characters</code>, all letters should default to uppercase</li>
26165    ///     </ul>
26166    ///   
26167    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
26168    ///
26169    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
26170    ///   
26171    pub autofocus: core::option::Option<AttributeValue<'life>>,
26172    ///
26173    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
26174    ///   
26175    pub class: core::option::Option<AttributeValue<'life>>,
26176    ///
26177    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
26178    ///     <ul>
26179    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
26180    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
26181    ///     </ul>
26182    ///   
26183    pub contenteditable: core::option::Option<AttributeValue<'life>>,
26184    ///
26185    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
26186    ///   
26187    pub contextmenu: core::option::Option<AttributeValue<'life>>,
26188    ///
26189    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
26190    ///   
26191    #[cfg(feature = "alloc")]
26192    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
26193    ///
26194    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
26195    ///     <ul>
26196    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
26197    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
26198    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
26199    ///     </ul>
26200    ///   
26201    pub dir: core::option::Option<AttributeValue<'life>>,
26202    ///
26203    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
26204    ///     <ul>
26205    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
26206    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
26207    ///     </ul>
26208    ///   
26209    pub draggable: core::option::Option<AttributeValue<'life>>,
26210    ///
26211    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
26212    ///   
26213    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
26214    ///
26215    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
26216    ///   
26217    pub exportparts: core::option::Option<AttributeValue<'life>>,
26218    /// /// Extra attributes of the element.
26219
26220    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
26221    #[cfg(feature = "alloc")]
26222    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
26223    ///
26224    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
26225    ///   
26226    pub hidden: core::option::Option<AttributeValue<'life>>,
26227    ///
26228    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
26229    ///   
26230    pub id: core::option::Option<AttributeValue<'life>>,
26231    ///
26232    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
26233    ///   
26234    pub inert: core::option::Option<AttributeValue<'life>>,
26235    ///
26236    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
26237    ///   
26238    pub inputmode: core::option::Option<AttributeValue<'life>>,
26239    ///
26240    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
26241    ///   
26242    pub is: core::option::Option<AttributeValue<'life>>,
26243    ///
26244    ///     <p>The unique, global identifier of an item.</p>
26245    ///   
26246    pub itemid: core::option::Option<AttributeValue<'life>>,
26247    ///
26248    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
26249    ///   
26250    pub itemprop: core::option::Option<AttributeValue<'life>>,
26251    ///
26252    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
26253    ///   
26254    pub itemref: core::option::Option<AttributeValue<'life>>,
26255    ///
26256    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
26257    ///   
26258    pub itemscope: core::option::Option<AttributeValue<'life>>,
26259    ///
26260    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
26261    ///   
26262    pub itemtype: core::option::Option<AttributeValue<'life>>,
26263    ///
26264    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
26265    ///   
26266    pub lang: core::option::Option<AttributeValue<'life>>,
26267    ///
26268    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
26269    ///   
26270    pub nonce: core::option::Option<AttributeValue<'life>>,
26271    ///
26272    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
26273    ///   
26274    pub part: core::option::Option<AttributeValue<'life>>,
26275    ///
26276    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
26277    ///   
26278    pub popover: core::option::Option<AttributeValue<'life>>,
26279    ///
26280    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
26281    ///   
26282    pub role: core::option::Option<AttributeValue<'life>>,
26283    ///
26284    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
26285    ///   
26286    pub slot: core::option::Option<AttributeValue<'life>>,
26287    ///
26288    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
26289    ///     <ul>
26290    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
26291    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
26292    ///     </ul>
26293    ///   
26294    pub spellcheck: core::option::Option<AttributeValue<'life>>,
26295    ///
26296    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
26297    ///   
26298    pub style: core::option::Option<AttributeValue<'life>>,
26299    ///
26300    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
26301    ///     <ul>
26302    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
26303    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
26304    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
26305    ///     </ul>
26306    ///   
26307    pub tabindex: core::option::Option<AttributeValue<'life>>,
26308    ///
26309    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
26310    ///   
26311    pub title: core::option::Option<AttributeValue<'life>>,
26312    ///
26313    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
26314    ///     <ul>
26315    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
26316    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
26317    ///     </ul>
26318    ///   
26319    pub translate: core::option::Option<AttributeValue<'life>>,
26320    ///
26321    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
26322    ///     <ul>
26323    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
26324    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
26325    ///     </ul>
26326    ///   
26327    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
26328}
26329#[allow(deprecated)]
26330
26331impl<'life> Small<'life> {
26332    /// Get the tag name of the element.
26333    /// This is the same as the name of the struct, in kebab-case.
26334    pub fn tag() -> &'static str {
26335        "small"
26336    }
26337    /// Sets an attribute of the element.
26338    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
26339    /// If the `alloc` feature is disabled, this function will silently fail.
26340    ///
26341    /// # Note
26342    /// This only works when the attribute is lowercase.
26343    pub fn set_attr(
26344        &mut self,
26345        name: &'life str,
26346        value: impl core::convert::Into<AttributeValue<'life>>,
26347    ) {
26348        match name {
26349            "accesskey" => self.accesskey = Some(value.into()),
26350            "autocapitalize" => self.autocapitalize = Some(value.into()),
26351            "autofocus" => self.autofocus = Some(value.into()),
26352            "class" => self.class = Some(value.into()),
26353            "contenteditable" => self.contenteditable = Some(value.into()),
26354            "contextmenu" => self.contextmenu = Some(value.into()),
26355            "dir" => self.dir = Some(value.into()),
26356            "draggable" => self.draggable = Some(value.into()),
26357            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
26358            "exportparts" => self.exportparts = Some(value.into()),
26359            "hidden" => self.hidden = Some(value.into()),
26360            "id" => self.id = Some(value.into()),
26361            "inert" => self.inert = Some(value.into()),
26362            "inputmode" => self.inputmode = Some(value.into()),
26363            "is" => self.is = Some(value.into()),
26364            "itemid" => self.itemid = Some(value.into()),
26365            "itemprop" => self.itemprop = Some(value.into()),
26366            "itemref" => self.itemref = Some(value.into()),
26367            "itemscope" => self.itemscope = Some(value.into()),
26368            "itemtype" => self.itemtype = Some(value.into()),
26369            "lang" => self.lang = Some(value.into()),
26370            "nonce" => self.nonce = Some(value.into()),
26371            "part" => self.part = Some(value.into()),
26372            "popover" => self.popover = Some(value.into()),
26373            "role" => self.role = Some(value.into()),
26374            "slot" => self.slot = Some(value.into()),
26375            "spellcheck" => self.spellcheck = Some(value.into()),
26376            "style" => self.style = Some(value.into()),
26377            "tabindex" => self.tabindex = Some(value.into()),
26378            "title" => self.title = Some(value.into()),
26379            "translate" => self.translate = Some(value.into()),
26380            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
26381            #[cfg(feature = "alloc")]
26382            _ => {
26383                #[allow(clippy::useless_conversion)]
26384                self.extra.insert(name.into(), value.into());
26385            }
26386            #[cfg(not(feature = "alloc"))]
26387            _ => {}
26388        }
26389    }
26390}
26391/// The <strong><code>&lt;small&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents side-comments and small print, like copyright and legal text, independent of its styled presentation. By default, it renders text within it one font-size smaller, such as from <code>small</code> to <code>x-small</code>.
26392///
26393/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/small>
26394
26395#[cfg(feature = "alloc")]
26396#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
26397pub struct SmallOwned {
26398    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
26399    ///   
26400    pub accesskey: core::option::Option<AttributeValueOwned>,
26401    ///
26402    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
26403    ///     <ul>
26404    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
26405    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
26406    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
26407    ///       <li><code>characters</code>, all letters should default to uppercase</li>
26408    ///     </ul>
26409    ///   
26410    pub autocapitalize: core::option::Option<AttributeValueOwned>,
26411    ///
26412    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
26413    ///   
26414    pub autofocus: core::option::Option<AttributeValueOwned>,
26415    ///
26416    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
26417    ///   
26418    pub class: core::option::Option<AttributeValueOwned>,
26419    ///
26420    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
26421    ///     <ul>
26422    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
26423    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
26424    ///     </ul>
26425    ///   
26426    pub contenteditable: core::option::Option<AttributeValueOwned>,
26427    ///
26428    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
26429    ///   
26430    pub contextmenu: core::option::Option<AttributeValueOwned>,
26431    ///
26432    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
26433    ///   
26434    #[cfg(feature = "alloc")]
26435    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
26436    ///
26437    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
26438    ///     <ul>
26439    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
26440    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
26441    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
26442    ///     </ul>
26443    ///   
26444    pub dir: core::option::Option<AttributeValueOwned>,
26445    ///
26446    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
26447    ///     <ul>
26448    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
26449    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
26450    ///     </ul>
26451    ///   
26452    pub draggable: core::option::Option<AttributeValueOwned>,
26453    ///
26454    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
26455    ///   
26456    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
26457    ///
26458    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
26459    ///   
26460    pub exportparts: core::option::Option<AttributeValueOwned>,
26461    /// /// Extra attributes of the element.
26462
26463    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
26464    #[cfg(feature = "alloc")]
26465    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
26466    ///
26467    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
26468    ///   
26469    pub hidden: core::option::Option<AttributeValueOwned>,
26470    ///
26471    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
26472    ///   
26473    pub id: core::option::Option<AttributeValueOwned>,
26474    ///
26475    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
26476    ///   
26477    pub inert: core::option::Option<AttributeValueOwned>,
26478    ///
26479    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
26480    ///   
26481    pub inputmode: core::option::Option<AttributeValueOwned>,
26482    ///
26483    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
26484    ///   
26485    pub is: core::option::Option<AttributeValueOwned>,
26486    ///
26487    ///     <p>The unique, global identifier of an item.</p>
26488    ///   
26489    pub itemid: core::option::Option<AttributeValueOwned>,
26490    ///
26491    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
26492    ///   
26493    pub itemprop: core::option::Option<AttributeValueOwned>,
26494    ///
26495    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
26496    ///   
26497    pub itemref: core::option::Option<AttributeValueOwned>,
26498    ///
26499    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
26500    ///   
26501    pub itemscope: core::option::Option<AttributeValueOwned>,
26502    ///
26503    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
26504    ///   
26505    pub itemtype: core::option::Option<AttributeValueOwned>,
26506    ///
26507    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
26508    ///   
26509    pub lang: core::option::Option<AttributeValueOwned>,
26510    ///
26511    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
26512    ///   
26513    pub nonce: core::option::Option<AttributeValueOwned>,
26514    ///
26515    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
26516    ///   
26517    pub part: core::option::Option<AttributeValueOwned>,
26518    ///
26519    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
26520    ///   
26521    pub popover: core::option::Option<AttributeValueOwned>,
26522    ///
26523    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
26524    ///   
26525    pub role: core::option::Option<AttributeValueOwned>,
26526    ///
26527    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
26528    ///   
26529    pub slot: core::option::Option<AttributeValueOwned>,
26530    ///
26531    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
26532    ///     <ul>
26533    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
26534    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
26535    ///     </ul>
26536    ///   
26537    pub spellcheck: core::option::Option<AttributeValueOwned>,
26538    ///
26539    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
26540    ///   
26541    pub style: core::option::Option<AttributeValueOwned>,
26542    ///
26543    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
26544    ///     <ul>
26545    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
26546    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
26547    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
26548    ///     </ul>
26549    ///   
26550    pub tabindex: core::option::Option<AttributeValueOwned>,
26551    ///
26552    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
26553    ///   
26554    pub title: core::option::Option<AttributeValueOwned>,
26555    ///
26556    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
26557    ///     <ul>
26558    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
26559    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
26560    ///     </ul>
26561    ///   
26562    pub translate: core::option::Option<AttributeValueOwned>,
26563    ///
26564    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
26565    ///     <ul>
26566    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
26567    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
26568    ///     </ul>
26569    ///   
26570    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
26571}
26572#[allow(deprecated)]
26573#[cfg(feature = "alloc")]
26574impl SmallOwned {
26575    /// Get the tag name of the element.
26576    /// This is the same as the name of the struct, in kebab-case.
26577    pub fn tag() -> &'static str {
26578        "small"
26579    }
26580    /// Sets an attribute of the element.
26581    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
26582    /// If the `alloc` feature is disabled, this function will silently fail.
26583    ///
26584    /// # Note
26585    /// This only works when the attribute is lowercase.
26586    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
26587        match name {
26588            "accesskey" => self.accesskey = Some(value.into()),
26589            "autocapitalize" => self.autocapitalize = Some(value.into()),
26590            "autofocus" => self.autofocus = Some(value.into()),
26591            "class" => self.class = Some(value.into()),
26592            "contenteditable" => self.contenteditable = Some(value.into()),
26593            "contextmenu" => self.contextmenu = Some(value.into()),
26594            "dir" => self.dir = Some(value.into()),
26595            "draggable" => self.draggable = Some(value.into()),
26596            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
26597            "exportparts" => self.exportparts = Some(value.into()),
26598            "hidden" => self.hidden = Some(value.into()),
26599            "id" => self.id = Some(value.into()),
26600            "inert" => self.inert = Some(value.into()),
26601            "inputmode" => self.inputmode = Some(value.into()),
26602            "is" => self.is = Some(value.into()),
26603            "itemid" => self.itemid = Some(value.into()),
26604            "itemprop" => self.itemprop = Some(value.into()),
26605            "itemref" => self.itemref = Some(value.into()),
26606            "itemscope" => self.itemscope = Some(value.into()),
26607            "itemtype" => self.itemtype = Some(value.into()),
26608            "lang" => self.lang = Some(value.into()),
26609            "nonce" => self.nonce = Some(value.into()),
26610            "part" => self.part = Some(value.into()),
26611            "popover" => self.popover = Some(value.into()),
26612            "role" => self.role = Some(value.into()),
26613            "slot" => self.slot = Some(value.into()),
26614            "spellcheck" => self.spellcheck = Some(value.into()),
26615            "style" => self.style = Some(value.into()),
26616            "tabindex" => self.tabindex = Some(value.into()),
26617            "title" => self.title = Some(value.into()),
26618            "translate" => self.translate = Some(value.into()),
26619            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
26620            #[cfg(feature = "alloc")]
26621            _ => {
26622                #[allow(clippy::useless_conversion)]
26623                self.extra.insert(name.into(), value.into());
26624            }
26625            #[cfg(not(feature = "alloc"))]
26626            _ => {}
26627        }
26628    }
26629}
26630/// The <strong><code>&lt;span&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element is a generic inline container for phrasing content, which does not inherently represent anything. It can be used to group elements for styling purposes (using the <a href="/en-US/docs/Web/HTML/Global_attributes#class"><code>class</code></a> or <a href="/en-US/docs/Web/HTML/Global_attributes#id"><code>id</code></a> attributes), or because they share attribute values, such as <a href="/en-US/docs/Web/HTML/Global_attributes#lang"><code>lang</code></a>. It should be used only when no other semantic element is appropriate. <code>&lt;span&gt;</code> is very much like a <a href="/en-US/docs/Web/HTML/Element/div"><code>&lt;div&gt;</code></a> element, but <a href="/en-US/docs/Web/HTML/Element/div"><code>&lt;div&gt;</code></a> is a <a href="/en-US/docs/Web/HTML/Block-level_elements">block-level element</a> whereas a <code>&lt;span&gt;</code> is an <a href="/en-US/docs/Web/HTML/Inline_elements">inline element</a>.
26631///
26632/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/span>
26633
26634#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
26635pub struct Span<'life> {
26636    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
26637    ///   
26638    pub accesskey: core::option::Option<AttributeValue<'life>>,
26639    ///
26640    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
26641    ///     <ul>
26642    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
26643    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
26644    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
26645    ///       <li><code>characters</code>, all letters should default to uppercase</li>
26646    ///     </ul>
26647    ///   
26648    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
26649    ///
26650    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
26651    ///   
26652    pub autofocus: core::option::Option<AttributeValue<'life>>,
26653    ///
26654    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
26655    ///   
26656    pub class: core::option::Option<AttributeValue<'life>>,
26657    ///
26658    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
26659    ///     <ul>
26660    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
26661    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
26662    ///     </ul>
26663    ///   
26664    pub contenteditable: core::option::Option<AttributeValue<'life>>,
26665    ///
26666    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
26667    ///   
26668    pub contextmenu: core::option::Option<AttributeValue<'life>>,
26669    ///
26670    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
26671    ///   
26672    #[cfg(feature = "alloc")]
26673    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
26674    ///
26675    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
26676    ///     <ul>
26677    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
26678    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
26679    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
26680    ///     </ul>
26681    ///   
26682    pub dir: core::option::Option<AttributeValue<'life>>,
26683    ///
26684    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
26685    ///     <ul>
26686    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
26687    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
26688    ///     </ul>
26689    ///   
26690    pub draggable: core::option::Option<AttributeValue<'life>>,
26691    ///
26692    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
26693    ///   
26694    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
26695    ///
26696    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
26697    ///   
26698    pub exportparts: core::option::Option<AttributeValue<'life>>,
26699    /// /// Extra attributes of the element.
26700
26701    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
26702    #[cfg(feature = "alloc")]
26703    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
26704    ///
26705    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
26706    ///   
26707    pub hidden: core::option::Option<AttributeValue<'life>>,
26708    ///
26709    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
26710    ///   
26711    pub id: core::option::Option<AttributeValue<'life>>,
26712    ///
26713    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
26714    ///   
26715    pub inert: core::option::Option<AttributeValue<'life>>,
26716    ///
26717    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
26718    ///   
26719    pub inputmode: core::option::Option<AttributeValue<'life>>,
26720    ///
26721    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
26722    ///   
26723    pub is: core::option::Option<AttributeValue<'life>>,
26724    ///
26725    ///     <p>The unique, global identifier of an item.</p>
26726    ///   
26727    pub itemid: core::option::Option<AttributeValue<'life>>,
26728    ///
26729    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
26730    ///   
26731    pub itemprop: core::option::Option<AttributeValue<'life>>,
26732    ///
26733    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
26734    ///   
26735    pub itemref: core::option::Option<AttributeValue<'life>>,
26736    ///
26737    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
26738    ///   
26739    pub itemscope: core::option::Option<AttributeValue<'life>>,
26740    ///
26741    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
26742    ///   
26743    pub itemtype: core::option::Option<AttributeValue<'life>>,
26744    ///
26745    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
26746    ///   
26747    pub lang: core::option::Option<AttributeValue<'life>>,
26748    ///
26749    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
26750    ///   
26751    pub nonce: core::option::Option<AttributeValue<'life>>,
26752    ///
26753    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
26754    ///   
26755    pub part: core::option::Option<AttributeValue<'life>>,
26756    ///
26757    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
26758    ///   
26759    pub popover: core::option::Option<AttributeValue<'life>>,
26760    ///
26761    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
26762    ///   
26763    pub role: core::option::Option<AttributeValue<'life>>,
26764    ///
26765    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
26766    ///   
26767    pub slot: core::option::Option<AttributeValue<'life>>,
26768    ///
26769    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
26770    ///     <ul>
26771    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
26772    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
26773    ///     </ul>
26774    ///   
26775    pub spellcheck: core::option::Option<AttributeValue<'life>>,
26776    ///
26777    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
26778    ///   
26779    pub style: core::option::Option<AttributeValue<'life>>,
26780    ///
26781    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
26782    ///     <ul>
26783    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
26784    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
26785    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
26786    ///     </ul>
26787    ///   
26788    pub tabindex: core::option::Option<AttributeValue<'life>>,
26789    ///
26790    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
26791    ///   
26792    pub title: core::option::Option<AttributeValue<'life>>,
26793    ///
26794    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
26795    ///     <ul>
26796    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
26797    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
26798    ///     </ul>
26799    ///   
26800    pub translate: core::option::Option<AttributeValue<'life>>,
26801    ///
26802    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
26803    ///     <ul>
26804    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
26805    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
26806    ///     </ul>
26807    ///   
26808    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
26809}
26810#[allow(deprecated)]
26811
26812impl<'life> Span<'life> {
26813    /// Get the tag name of the element.
26814    /// This is the same as the name of the struct, in kebab-case.
26815    pub fn tag() -> &'static str {
26816        "span"
26817    }
26818    /// Sets an attribute of the element.
26819    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
26820    /// If the `alloc` feature is disabled, this function will silently fail.
26821    ///
26822    /// # Note
26823    /// This only works when the attribute is lowercase.
26824    pub fn set_attr(
26825        &mut self,
26826        name: &'life str,
26827        value: impl core::convert::Into<AttributeValue<'life>>,
26828    ) {
26829        match name {
26830            "accesskey" => self.accesskey = Some(value.into()),
26831            "autocapitalize" => self.autocapitalize = Some(value.into()),
26832            "autofocus" => self.autofocus = Some(value.into()),
26833            "class" => self.class = Some(value.into()),
26834            "contenteditable" => self.contenteditable = Some(value.into()),
26835            "contextmenu" => self.contextmenu = Some(value.into()),
26836            "dir" => self.dir = Some(value.into()),
26837            "draggable" => self.draggable = Some(value.into()),
26838            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
26839            "exportparts" => self.exportparts = Some(value.into()),
26840            "hidden" => self.hidden = Some(value.into()),
26841            "id" => self.id = Some(value.into()),
26842            "inert" => self.inert = Some(value.into()),
26843            "inputmode" => self.inputmode = Some(value.into()),
26844            "is" => self.is = Some(value.into()),
26845            "itemid" => self.itemid = Some(value.into()),
26846            "itemprop" => self.itemprop = Some(value.into()),
26847            "itemref" => self.itemref = Some(value.into()),
26848            "itemscope" => self.itemscope = Some(value.into()),
26849            "itemtype" => self.itemtype = Some(value.into()),
26850            "lang" => self.lang = Some(value.into()),
26851            "nonce" => self.nonce = Some(value.into()),
26852            "part" => self.part = Some(value.into()),
26853            "popover" => self.popover = Some(value.into()),
26854            "role" => self.role = Some(value.into()),
26855            "slot" => self.slot = Some(value.into()),
26856            "spellcheck" => self.spellcheck = Some(value.into()),
26857            "style" => self.style = Some(value.into()),
26858            "tabindex" => self.tabindex = Some(value.into()),
26859            "title" => self.title = Some(value.into()),
26860            "translate" => self.translate = Some(value.into()),
26861            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
26862            #[cfg(feature = "alloc")]
26863            _ => {
26864                #[allow(clippy::useless_conversion)]
26865                self.extra.insert(name.into(), value.into());
26866            }
26867            #[cfg(not(feature = "alloc"))]
26868            _ => {}
26869        }
26870    }
26871}
26872/// The <strong><code>&lt;span&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element is a generic inline container for phrasing content, which does not inherently represent anything. It can be used to group elements for styling purposes (using the <a href="/en-US/docs/Web/HTML/Global_attributes#class"><code>class</code></a> or <a href="/en-US/docs/Web/HTML/Global_attributes#id"><code>id</code></a> attributes), or because they share attribute values, such as <a href="/en-US/docs/Web/HTML/Global_attributes#lang"><code>lang</code></a>. It should be used only when no other semantic element is appropriate. <code>&lt;span&gt;</code> is very much like a <a href="/en-US/docs/Web/HTML/Element/div"><code>&lt;div&gt;</code></a> element, but <a href="/en-US/docs/Web/HTML/Element/div"><code>&lt;div&gt;</code></a> is a <a href="/en-US/docs/Web/HTML/Block-level_elements">block-level element</a> whereas a <code>&lt;span&gt;</code> is an <a href="/en-US/docs/Web/HTML/Inline_elements">inline element</a>.
26873///
26874/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/span>
26875
26876#[cfg(feature = "alloc")]
26877#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
26878pub struct SpanOwned {
26879    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
26880    ///   
26881    pub accesskey: core::option::Option<AttributeValueOwned>,
26882    ///
26883    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
26884    ///     <ul>
26885    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
26886    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
26887    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
26888    ///       <li><code>characters</code>, all letters should default to uppercase</li>
26889    ///     </ul>
26890    ///   
26891    pub autocapitalize: core::option::Option<AttributeValueOwned>,
26892    ///
26893    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
26894    ///   
26895    pub autofocus: core::option::Option<AttributeValueOwned>,
26896    ///
26897    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
26898    ///   
26899    pub class: core::option::Option<AttributeValueOwned>,
26900    ///
26901    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
26902    ///     <ul>
26903    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
26904    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
26905    ///     </ul>
26906    ///   
26907    pub contenteditable: core::option::Option<AttributeValueOwned>,
26908    ///
26909    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
26910    ///   
26911    pub contextmenu: core::option::Option<AttributeValueOwned>,
26912    ///
26913    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
26914    ///   
26915    #[cfg(feature = "alloc")]
26916    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
26917    ///
26918    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
26919    ///     <ul>
26920    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
26921    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
26922    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
26923    ///     </ul>
26924    ///   
26925    pub dir: core::option::Option<AttributeValueOwned>,
26926    ///
26927    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
26928    ///     <ul>
26929    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
26930    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
26931    ///     </ul>
26932    ///   
26933    pub draggable: core::option::Option<AttributeValueOwned>,
26934    ///
26935    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
26936    ///   
26937    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
26938    ///
26939    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
26940    ///   
26941    pub exportparts: core::option::Option<AttributeValueOwned>,
26942    /// /// Extra attributes of the element.
26943
26944    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
26945    #[cfg(feature = "alloc")]
26946    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
26947    ///
26948    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
26949    ///   
26950    pub hidden: core::option::Option<AttributeValueOwned>,
26951    ///
26952    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
26953    ///   
26954    pub id: core::option::Option<AttributeValueOwned>,
26955    ///
26956    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
26957    ///   
26958    pub inert: core::option::Option<AttributeValueOwned>,
26959    ///
26960    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
26961    ///   
26962    pub inputmode: core::option::Option<AttributeValueOwned>,
26963    ///
26964    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
26965    ///   
26966    pub is: core::option::Option<AttributeValueOwned>,
26967    ///
26968    ///     <p>The unique, global identifier of an item.</p>
26969    ///   
26970    pub itemid: core::option::Option<AttributeValueOwned>,
26971    ///
26972    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
26973    ///   
26974    pub itemprop: core::option::Option<AttributeValueOwned>,
26975    ///
26976    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
26977    ///   
26978    pub itemref: core::option::Option<AttributeValueOwned>,
26979    ///
26980    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
26981    ///   
26982    pub itemscope: core::option::Option<AttributeValueOwned>,
26983    ///
26984    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
26985    ///   
26986    pub itemtype: core::option::Option<AttributeValueOwned>,
26987    ///
26988    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
26989    ///   
26990    pub lang: core::option::Option<AttributeValueOwned>,
26991    ///
26992    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
26993    ///   
26994    pub nonce: core::option::Option<AttributeValueOwned>,
26995    ///
26996    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
26997    ///   
26998    pub part: core::option::Option<AttributeValueOwned>,
26999    ///
27000    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
27001    ///   
27002    pub popover: core::option::Option<AttributeValueOwned>,
27003    ///
27004    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
27005    ///   
27006    pub role: core::option::Option<AttributeValueOwned>,
27007    ///
27008    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
27009    ///   
27010    pub slot: core::option::Option<AttributeValueOwned>,
27011    ///
27012    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
27013    ///     <ul>
27014    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
27015    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
27016    ///     </ul>
27017    ///   
27018    pub spellcheck: core::option::Option<AttributeValueOwned>,
27019    ///
27020    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
27021    ///   
27022    pub style: core::option::Option<AttributeValueOwned>,
27023    ///
27024    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
27025    ///     <ul>
27026    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
27027    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
27028    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
27029    ///     </ul>
27030    ///   
27031    pub tabindex: core::option::Option<AttributeValueOwned>,
27032    ///
27033    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
27034    ///   
27035    pub title: core::option::Option<AttributeValueOwned>,
27036    ///
27037    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
27038    ///     <ul>
27039    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
27040    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
27041    ///     </ul>
27042    ///   
27043    pub translate: core::option::Option<AttributeValueOwned>,
27044    ///
27045    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
27046    ///     <ul>
27047    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
27048    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
27049    ///     </ul>
27050    ///   
27051    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
27052}
27053#[allow(deprecated)]
27054#[cfg(feature = "alloc")]
27055impl SpanOwned {
27056    /// Get the tag name of the element.
27057    /// This is the same as the name of the struct, in kebab-case.
27058    pub fn tag() -> &'static str {
27059        "span"
27060    }
27061    /// Sets an attribute of the element.
27062    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
27063    /// If the `alloc` feature is disabled, this function will silently fail.
27064    ///
27065    /// # Note
27066    /// This only works when the attribute is lowercase.
27067    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
27068        match name {
27069            "accesskey" => self.accesskey = Some(value.into()),
27070            "autocapitalize" => self.autocapitalize = Some(value.into()),
27071            "autofocus" => self.autofocus = Some(value.into()),
27072            "class" => self.class = Some(value.into()),
27073            "contenteditable" => self.contenteditable = Some(value.into()),
27074            "contextmenu" => self.contextmenu = Some(value.into()),
27075            "dir" => self.dir = Some(value.into()),
27076            "draggable" => self.draggable = Some(value.into()),
27077            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
27078            "exportparts" => self.exportparts = Some(value.into()),
27079            "hidden" => self.hidden = Some(value.into()),
27080            "id" => self.id = Some(value.into()),
27081            "inert" => self.inert = Some(value.into()),
27082            "inputmode" => self.inputmode = Some(value.into()),
27083            "is" => self.is = Some(value.into()),
27084            "itemid" => self.itemid = Some(value.into()),
27085            "itemprop" => self.itemprop = Some(value.into()),
27086            "itemref" => self.itemref = Some(value.into()),
27087            "itemscope" => self.itemscope = Some(value.into()),
27088            "itemtype" => self.itemtype = Some(value.into()),
27089            "lang" => self.lang = Some(value.into()),
27090            "nonce" => self.nonce = Some(value.into()),
27091            "part" => self.part = Some(value.into()),
27092            "popover" => self.popover = Some(value.into()),
27093            "role" => self.role = Some(value.into()),
27094            "slot" => self.slot = Some(value.into()),
27095            "spellcheck" => self.spellcheck = Some(value.into()),
27096            "style" => self.style = Some(value.into()),
27097            "tabindex" => self.tabindex = Some(value.into()),
27098            "title" => self.title = Some(value.into()),
27099            "translate" => self.translate = Some(value.into()),
27100            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
27101            #[cfg(feature = "alloc")]
27102            _ => {
27103                #[allow(clippy::useless_conversion)]
27104                self.extra.insert(name.into(), value.into());
27105            }
27106            #[cfg(not(feature = "alloc"))]
27107            _ => {}
27108        }
27109    }
27110}
27111/// The <strong><code>&lt;strong&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element indicates that its contents have strong importance, seriousness, or urgency. Browsers typically render the contents in bold type.
27112///
27113/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/strong>
27114
27115#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
27116pub struct Strong<'life> {
27117    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
27118    ///   
27119    pub accesskey: core::option::Option<AttributeValue<'life>>,
27120    ///
27121    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
27122    ///     <ul>
27123    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
27124    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
27125    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
27126    ///       <li><code>characters</code>, all letters should default to uppercase</li>
27127    ///     </ul>
27128    ///   
27129    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
27130    ///
27131    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
27132    ///   
27133    pub autofocus: core::option::Option<AttributeValue<'life>>,
27134    ///
27135    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
27136    ///   
27137    pub class: core::option::Option<AttributeValue<'life>>,
27138    ///
27139    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
27140    ///     <ul>
27141    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
27142    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
27143    ///     </ul>
27144    ///   
27145    pub contenteditable: core::option::Option<AttributeValue<'life>>,
27146    ///
27147    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
27148    ///   
27149    pub contextmenu: core::option::Option<AttributeValue<'life>>,
27150    ///
27151    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
27152    ///   
27153    #[cfg(feature = "alloc")]
27154    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
27155    ///
27156    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
27157    ///     <ul>
27158    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
27159    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
27160    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
27161    ///     </ul>
27162    ///   
27163    pub dir: core::option::Option<AttributeValue<'life>>,
27164    ///
27165    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
27166    ///     <ul>
27167    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
27168    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
27169    ///     </ul>
27170    ///   
27171    pub draggable: core::option::Option<AttributeValue<'life>>,
27172    ///
27173    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
27174    ///   
27175    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
27176    ///
27177    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
27178    ///   
27179    pub exportparts: core::option::Option<AttributeValue<'life>>,
27180    /// /// Extra attributes of the element.
27181
27182    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
27183    #[cfg(feature = "alloc")]
27184    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
27185    ///
27186    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
27187    ///   
27188    pub hidden: core::option::Option<AttributeValue<'life>>,
27189    ///
27190    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
27191    ///   
27192    pub id: core::option::Option<AttributeValue<'life>>,
27193    ///
27194    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
27195    ///   
27196    pub inert: core::option::Option<AttributeValue<'life>>,
27197    ///
27198    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
27199    ///   
27200    pub inputmode: core::option::Option<AttributeValue<'life>>,
27201    ///
27202    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
27203    ///   
27204    pub is: core::option::Option<AttributeValue<'life>>,
27205    ///
27206    ///     <p>The unique, global identifier of an item.</p>
27207    ///   
27208    pub itemid: core::option::Option<AttributeValue<'life>>,
27209    ///
27210    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
27211    ///   
27212    pub itemprop: core::option::Option<AttributeValue<'life>>,
27213    ///
27214    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
27215    ///   
27216    pub itemref: core::option::Option<AttributeValue<'life>>,
27217    ///
27218    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
27219    ///   
27220    pub itemscope: core::option::Option<AttributeValue<'life>>,
27221    ///
27222    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
27223    ///   
27224    pub itemtype: core::option::Option<AttributeValue<'life>>,
27225    ///
27226    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
27227    ///   
27228    pub lang: core::option::Option<AttributeValue<'life>>,
27229    ///
27230    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
27231    ///   
27232    pub nonce: core::option::Option<AttributeValue<'life>>,
27233    ///
27234    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
27235    ///   
27236    pub part: core::option::Option<AttributeValue<'life>>,
27237    ///
27238    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
27239    ///   
27240    pub popover: core::option::Option<AttributeValue<'life>>,
27241    ///
27242    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
27243    ///   
27244    pub role: core::option::Option<AttributeValue<'life>>,
27245    ///
27246    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
27247    ///   
27248    pub slot: core::option::Option<AttributeValue<'life>>,
27249    ///
27250    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
27251    ///     <ul>
27252    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
27253    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
27254    ///     </ul>
27255    ///   
27256    pub spellcheck: core::option::Option<AttributeValue<'life>>,
27257    ///
27258    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
27259    ///   
27260    pub style: core::option::Option<AttributeValue<'life>>,
27261    ///
27262    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
27263    ///     <ul>
27264    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
27265    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
27266    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
27267    ///     </ul>
27268    ///   
27269    pub tabindex: core::option::Option<AttributeValue<'life>>,
27270    ///
27271    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
27272    ///   
27273    pub title: core::option::Option<AttributeValue<'life>>,
27274    ///
27275    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
27276    ///     <ul>
27277    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
27278    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
27279    ///     </ul>
27280    ///   
27281    pub translate: core::option::Option<AttributeValue<'life>>,
27282    ///
27283    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
27284    ///     <ul>
27285    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
27286    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
27287    ///     </ul>
27288    ///   
27289    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
27290}
27291#[allow(deprecated)]
27292
27293impl<'life> Strong<'life> {
27294    /// Get the tag name of the element.
27295    /// This is the same as the name of the struct, in kebab-case.
27296    pub fn tag() -> &'static str {
27297        "strong"
27298    }
27299    /// Sets an attribute of the element.
27300    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
27301    /// If the `alloc` feature is disabled, this function will silently fail.
27302    ///
27303    /// # Note
27304    /// This only works when the attribute is lowercase.
27305    pub fn set_attr(
27306        &mut self,
27307        name: &'life str,
27308        value: impl core::convert::Into<AttributeValue<'life>>,
27309    ) {
27310        match name {
27311            "accesskey" => self.accesskey = Some(value.into()),
27312            "autocapitalize" => self.autocapitalize = Some(value.into()),
27313            "autofocus" => self.autofocus = Some(value.into()),
27314            "class" => self.class = Some(value.into()),
27315            "contenteditable" => self.contenteditable = Some(value.into()),
27316            "contextmenu" => self.contextmenu = Some(value.into()),
27317            "dir" => self.dir = Some(value.into()),
27318            "draggable" => self.draggable = Some(value.into()),
27319            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
27320            "exportparts" => self.exportparts = Some(value.into()),
27321            "hidden" => self.hidden = Some(value.into()),
27322            "id" => self.id = Some(value.into()),
27323            "inert" => self.inert = Some(value.into()),
27324            "inputmode" => self.inputmode = Some(value.into()),
27325            "is" => self.is = Some(value.into()),
27326            "itemid" => self.itemid = Some(value.into()),
27327            "itemprop" => self.itemprop = Some(value.into()),
27328            "itemref" => self.itemref = Some(value.into()),
27329            "itemscope" => self.itemscope = Some(value.into()),
27330            "itemtype" => self.itemtype = Some(value.into()),
27331            "lang" => self.lang = Some(value.into()),
27332            "nonce" => self.nonce = Some(value.into()),
27333            "part" => self.part = Some(value.into()),
27334            "popover" => self.popover = Some(value.into()),
27335            "role" => self.role = Some(value.into()),
27336            "slot" => self.slot = Some(value.into()),
27337            "spellcheck" => self.spellcheck = Some(value.into()),
27338            "style" => self.style = Some(value.into()),
27339            "tabindex" => self.tabindex = Some(value.into()),
27340            "title" => self.title = Some(value.into()),
27341            "translate" => self.translate = Some(value.into()),
27342            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
27343            #[cfg(feature = "alloc")]
27344            _ => {
27345                #[allow(clippy::useless_conversion)]
27346                self.extra.insert(name.into(), value.into());
27347            }
27348            #[cfg(not(feature = "alloc"))]
27349            _ => {}
27350        }
27351    }
27352}
27353/// The <strong><code>&lt;strong&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element indicates that its contents have strong importance, seriousness, or urgency. Browsers typically render the contents in bold type.
27354///
27355/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/strong>
27356
27357#[cfg(feature = "alloc")]
27358#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
27359pub struct StrongOwned {
27360    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
27361    ///   
27362    pub accesskey: core::option::Option<AttributeValueOwned>,
27363    ///
27364    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
27365    ///     <ul>
27366    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
27367    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
27368    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
27369    ///       <li><code>characters</code>, all letters should default to uppercase</li>
27370    ///     </ul>
27371    ///   
27372    pub autocapitalize: core::option::Option<AttributeValueOwned>,
27373    ///
27374    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
27375    ///   
27376    pub autofocus: core::option::Option<AttributeValueOwned>,
27377    ///
27378    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
27379    ///   
27380    pub class: core::option::Option<AttributeValueOwned>,
27381    ///
27382    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
27383    ///     <ul>
27384    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
27385    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
27386    ///     </ul>
27387    ///   
27388    pub contenteditable: core::option::Option<AttributeValueOwned>,
27389    ///
27390    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
27391    ///   
27392    pub contextmenu: core::option::Option<AttributeValueOwned>,
27393    ///
27394    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
27395    ///   
27396    #[cfg(feature = "alloc")]
27397    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
27398    ///
27399    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
27400    ///     <ul>
27401    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
27402    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
27403    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
27404    ///     </ul>
27405    ///   
27406    pub dir: core::option::Option<AttributeValueOwned>,
27407    ///
27408    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
27409    ///     <ul>
27410    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
27411    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
27412    ///     </ul>
27413    ///   
27414    pub draggable: core::option::Option<AttributeValueOwned>,
27415    ///
27416    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
27417    ///   
27418    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
27419    ///
27420    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
27421    ///   
27422    pub exportparts: core::option::Option<AttributeValueOwned>,
27423    /// /// Extra attributes of the element.
27424
27425    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
27426    #[cfg(feature = "alloc")]
27427    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
27428    ///
27429    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
27430    ///   
27431    pub hidden: core::option::Option<AttributeValueOwned>,
27432    ///
27433    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
27434    ///   
27435    pub id: core::option::Option<AttributeValueOwned>,
27436    ///
27437    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
27438    ///   
27439    pub inert: core::option::Option<AttributeValueOwned>,
27440    ///
27441    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
27442    ///   
27443    pub inputmode: core::option::Option<AttributeValueOwned>,
27444    ///
27445    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
27446    ///   
27447    pub is: core::option::Option<AttributeValueOwned>,
27448    ///
27449    ///     <p>The unique, global identifier of an item.</p>
27450    ///   
27451    pub itemid: core::option::Option<AttributeValueOwned>,
27452    ///
27453    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
27454    ///   
27455    pub itemprop: core::option::Option<AttributeValueOwned>,
27456    ///
27457    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
27458    ///   
27459    pub itemref: core::option::Option<AttributeValueOwned>,
27460    ///
27461    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
27462    ///   
27463    pub itemscope: core::option::Option<AttributeValueOwned>,
27464    ///
27465    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
27466    ///   
27467    pub itemtype: core::option::Option<AttributeValueOwned>,
27468    ///
27469    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
27470    ///   
27471    pub lang: core::option::Option<AttributeValueOwned>,
27472    ///
27473    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
27474    ///   
27475    pub nonce: core::option::Option<AttributeValueOwned>,
27476    ///
27477    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
27478    ///   
27479    pub part: core::option::Option<AttributeValueOwned>,
27480    ///
27481    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
27482    ///   
27483    pub popover: core::option::Option<AttributeValueOwned>,
27484    ///
27485    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
27486    ///   
27487    pub role: core::option::Option<AttributeValueOwned>,
27488    ///
27489    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
27490    ///   
27491    pub slot: core::option::Option<AttributeValueOwned>,
27492    ///
27493    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
27494    ///     <ul>
27495    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
27496    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
27497    ///     </ul>
27498    ///   
27499    pub spellcheck: core::option::Option<AttributeValueOwned>,
27500    ///
27501    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
27502    ///   
27503    pub style: core::option::Option<AttributeValueOwned>,
27504    ///
27505    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
27506    ///     <ul>
27507    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
27508    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
27509    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
27510    ///     </ul>
27511    ///   
27512    pub tabindex: core::option::Option<AttributeValueOwned>,
27513    ///
27514    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
27515    ///   
27516    pub title: core::option::Option<AttributeValueOwned>,
27517    ///
27518    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
27519    ///     <ul>
27520    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
27521    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
27522    ///     </ul>
27523    ///   
27524    pub translate: core::option::Option<AttributeValueOwned>,
27525    ///
27526    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
27527    ///     <ul>
27528    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
27529    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
27530    ///     </ul>
27531    ///   
27532    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
27533}
27534#[allow(deprecated)]
27535#[cfg(feature = "alloc")]
27536impl StrongOwned {
27537    /// Get the tag name of the element.
27538    /// This is the same as the name of the struct, in kebab-case.
27539    pub fn tag() -> &'static str {
27540        "strong"
27541    }
27542    /// Sets an attribute of the element.
27543    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
27544    /// If the `alloc` feature is disabled, this function will silently fail.
27545    ///
27546    /// # Note
27547    /// This only works when the attribute is lowercase.
27548    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
27549        match name {
27550            "accesskey" => self.accesskey = Some(value.into()),
27551            "autocapitalize" => self.autocapitalize = Some(value.into()),
27552            "autofocus" => self.autofocus = Some(value.into()),
27553            "class" => self.class = Some(value.into()),
27554            "contenteditable" => self.contenteditable = Some(value.into()),
27555            "contextmenu" => self.contextmenu = Some(value.into()),
27556            "dir" => self.dir = Some(value.into()),
27557            "draggable" => self.draggable = Some(value.into()),
27558            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
27559            "exportparts" => self.exportparts = Some(value.into()),
27560            "hidden" => self.hidden = Some(value.into()),
27561            "id" => self.id = Some(value.into()),
27562            "inert" => self.inert = Some(value.into()),
27563            "inputmode" => self.inputmode = Some(value.into()),
27564            "is" => self.is = Some(value.into()),
27565            "itemid" => self.itemid = Some(value.into()),
27566            "itemprop" => self.itemprop = Some(value.into()),
27567            "itemref" => self.itemref = Some(value.into()),
27568            "itemscope" => self.itemscope = Some(value.into()),
27569            "itemtype" => self.itemtype = Some(value.into()),
27570            "lang" => self.lang = Some(value.into()),
27571            "nonce" => self.nonce = Some(value.into()),
27572            "part" => self.part = Some(value.into()),
27573            "popover" => self.popover = Some(value.into()),
27574            "role" => self.role = Some(value.into()),
27575            "slot" => self.slot = Some(value.into()),
27576            "spellcheck" => self.spellcheck = Some(value.into()),
27577            "style" => self.style = Some(value.into()),
27578            "tabindex" => self.tabindex = Some(value.into()),
27579            "title" => self.title = Some(value.into()),
27580            "translate" => self.translate = Some(value.into()),
27581            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
27582            #[cfg(feature = "alloc")]
27583            _ => {
27584                #[allow(clippy::useless_conversion)]
27585                self.extra.insert(name.into(), value.into());
27586            }
27587            #[cfg(not(feature = "alloc"))]
27588            _ => {}
27589        }
27590    }
27591}
27592/// The <strong><code>&lt;sub&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element specifies inline text which should be displayed as subscript for solely typographical reasons. Subscripts are typically rendered with a lowered baseline using smaller text.
27593///
27594/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/sub>
27595
27596#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
27597pub struct Sub<'life> {
27598    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
27599    ///   
27600    pub accesskey: core::option::Option<AttributeValue<'life>>,
27601    ///
27602    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
27603    ///     <ul>
27604    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
27605    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
27606    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
27607    ///       <li><code>characters</code>, all letters should default to uppercase</li>
27608    ///     </ul>
27609    ///   
27610    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
27611    ///
27612    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
27613    ///   
27614    pub autofocus: core::option::Option<AttributeValue<'life>>,
27615    ///
27616    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
27617    ///   
27618    pub class: core::option::Option<AttributeValue<'life>>,
27619    ///
27620    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
27621    ///     <ul>
27622    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
27623    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
27624    ///     </ul>
27625    ///   
27626    pub contenteditable: core::option::Option<AttributeValue<'life>>,
27627    ///
27628    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
27629    ///   
27630    pub contextmenu: core::option::Option<AttributeValue<'life>>,
27631    ///
27632    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
27633    ///   
27634    #[cfg(feature = "alloc")]
27635    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
27636    ///
27637    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
27638    ///     <ul>
27639    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
27640    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
27641    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
27642    ///     </ul>
27643    ///   
27644    pub dir: core::option::Option<AttributeValue<'life>>,
27645    ///
27646    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
27647    ///     <ul>
27648    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
27649    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
27650    ///     </ul>
27651    ///   
27652    pub draggable: core::option::Option<AttributeValue<'life>>,
27653    ///
27654    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
27655    ///   
27656    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
27657    ///
27658    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
27659    ///   
27660    pub exportparts: core::option::Option<AttributeValue<'life>>,
27661    /// /// Extra attributes of the element.
27662
27663    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
27664    #[cfg(feature = "alloc")]
27665    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
27666    ///
27667    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
27668    ///   
27669    pub hidden: core::option::Option<AttributeValue<'life>>,
27670    ///
27671    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
27672    ///   
27673    pub id: core::option::Option<AttributeValue<'life>>,
27674    ///
27675    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
27676    ///   
27677    pub inert: core::option::Option<AttributeValue<'life>>,
27678    ///
27679    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
27680    ///   
27681    pub inputmode: core::option::Option<AttributeValue<'life>>,
27682    ///
27683    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
27684    ///   
27685    pub is: core::option::Option<AttributeValue<'life>>,
27686    ///
27687    ///     <p>The unique, global identifier of an item.</p>
27688    ///   
27689    pub itemid: core::option::Option<AttributeValue<'life>>,
27690    ///
27691    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
27692    ///   
27693    pub itemprop: core::option::Option<AttributeValue<'life>>,
27694    ///
27695    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
27696    ///   
27697    pub itemref: core::option::Option<AttributeValue<'life>>,
27698    ///
27699    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
27700    ///   
27701    pub itemscope: core::option::Option<AttributeValue<'life>>,
27702    ///
27703    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
27704    ///   
27705    pub itemtype: core::option::Option<AttributeValue<'life>>,
27706    ///
27707    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
27708    ///   
27709    pub lang: core::option::Option<AttributeValue<'life>>,
27710    ///
27711    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
27712    ///   
27713    pub nonce: core::option::Option<AttributeValue<'life>>,
27714    ///
27715    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
27716    ///   
27717    pub part: core::option::Option<AttributeValue<'life>>,
27718    ///
27719    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
27720    ///   
27721    pub popover: core::option::Option<AttributeValue<'life>>,
27722    ///
27723    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
27724    ///   
27725    pub role: core::option::Option<AttributeValue<'life>>,
27726    ///
27727    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
27728    ///   
27729    pub slot: core::option::Option<AttributeValue<'life>>,
27730    ///
27731    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
27732    ///     <ul>
27733    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
27734    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
27735    ///     </ul>
27736    ///   
27737    pub spellcheck: core::option::Option<AttributeValue<'life>>,
27738    ///
27739    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
27740    ///   
27741    pub style: core::option::Option<AttributeValue<'life>>,
27742    ///
27743    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
27744    ///     <ul>
27745    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
27746    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
27747    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
27748    ///     </ul>
27749    ///   
27750    pub tabindex: core::option::Option<AttributeValue<'life>>,
27751    ///
27752    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
27753    ///   
27754    pub title: core::option::Option<AttributeValue<'life>>,
27755    ///
27756    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
27757    ///     <ul>
27758    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
27759    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
27760    ///     </ul>
27761    ///   
27762    pub translate: core::option::Option<AttributeValue<'life>>,
27763    ///
27764    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
27765    ///     <ul>
27766    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
27767    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
27768    ///     </ul>
27769    ///   
27770    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
27771}
27772#[allow(deprecated)]
27773
27774impl<'life> Sub<'life> {
27775    /// Get the tag name of the element.
27776    /// This is the same as the name of the struct, in kebab-case.
27777    pub fn tag() -> &'static str {
27778        "sub"
27779    }
27780    /// Sets an attribute of the element.
27781    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
27782    /// If the `alloc` feature is disabled, this function will silently fail.
27783    ///
27784    /// # Note
27785    /// This only works when the attribute is lowercase.
27786    pub fn set_attr(
27787        &mut self,
27788        name: &'life str,
27789        value: impl core::convert::Into<AttributeValue<'life>>,
27790    ) {
27791        match name {
27792            "accesskey" => self.accesskey = Some(value.into()),
27793            "autocapitalize" => self.autocapitalize = Some(value.into()),
27794            "autofocus" => self.autofocus = Some(value.into()),
27795            "class" => self.class = Some(value.into()),
27796            "contenteditable" => self.contenteditable = Some(value.into()),
27797            "contextmenu" => self.contextmenu = Some(value.into()),
27798            "dir" => self.dir = Some(value.into()),
27799            "draggable" => self.draggable = Some(value.into()),
27800            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
27801            "exportparts" => self.exportparts = Some(value.into()),
27802            "hidden" => self.hidden = Some(value.into()),
27803            "id" => self.id = Some(value.into()),
27804            "inert" => self.inert = Some(value.into()),
27805            "inputmode" => self.inputmode = Some(value.into()),
27806            "is" => self.is = Some(value.into()),
27807            "itemid" => self.itemid = Some(value.into()),
27808            "itemprop" => self.itemprop = Some(value.into()),
27809            "itemref" => self.itemref = Some(value.into()),
27810            "itemscope" => self.itemscope = Some(value.into()),
27811            "itemtype" => self.itemtype = Some(value.into()),
27812            "lang" => self.lang = Some(value.into()),
27813            "nonce" => self.nonce = Some(value.into()),
27814            "part" => self.part = Some(value.into()),
27815            "popover" => self.popover = Some(value.into()),
27816            "role" => self.role = Some(value.into()),
27817            "slot" => self.slot = Some(value.into()),
27818            "spellcheck" => self.spellcheck = Some(value.into()),
27819            "style" => self.style = Some(value.into()),
27820            "tabindex" => self.tabindex = Some(value.into()),
27821            "title" => self.title = Some(value.into()),
27822            "translate" => self.translate = Some(value.into()),
27823            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
27824            #[cfg(feature = "alloc")]
27825            _ => {
27826                #[allow(clippy::useless_conversion)]
27827                self.extra.insert(name.into(), value.into());
27828            }
27829            #[cfg(not(feature = "alloc"))]
27830            _ => {}
27831        }
27832    }
27833}
27834/// The <strong><code>&lt;sub&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element specifies inline text which should be displayed as subscript for solely typographical reasons. Subscripts are typically rendered with a lowered baseline using smaller text.
27835///
27836/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/sub>
27837
27838#[cfg(feature = "alloc")]
27839#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
27840pub struct SubOwned {
27841    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
27842    ///   
27843    pub accesskey: core::option::Option<AttributeValueOwned>,
27844    ///
27845    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
27846    ///     <ul>
27847    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
27848    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
27849    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
27850    ///       <li><code>characters</code>, all letters should default to uppercase</li>
27851    ///     </ul>
27852    ///   
27853    pub autocapitalize: core::option::Option<AttributeValueOwned>,
27854    ///
27855    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
27856    ///   
27857    pub autofocus: core::option::Option<AttributeValueOwned>,
27858    ///
27859    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
27860    ///   
27861    pub class: core::option::Option<AttributeValueOwned>,
27862    ///
27863    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
27864    ///     <ul>
27865    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
27866    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
27867    ///     </ul>
27868    ///   
27869    pub contenteditable: core::option::Option<AttributeValueOwned>,
27870    ///
27871    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
27872    ///   
27873    pub contextmenu: core::option::Option<AttributeValueOwned>,
27874    ///
27875    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
27876    ///   
27877    #[cfg(feature = "alloc")]
27878    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
27879    ///
27880    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
27881    ///     <ul>
27882    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
27883    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
27884    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
27885    ///     </ul>
27886    ///   
27887    pub dir: core::option::Option<AttributeValueOwned>,
27888    ///
27889    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
27890    ///     <ul>
27891    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
27892    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
27893    ///     </ul>
27894    ///   
27895    pub draggable: core::option::Option<AttributeValueOwned>,
27896    ///
27897    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
27898    ///   
27899    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
27900    ///
27901    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
27902    ///   
27903    pub exportparts: core::option::Option<AttributeValueOwned>,
27904    /// /// Extra attributes of the element.
27905
27906    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
27907    #[cfg(feature = "alloc")]
27908    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
27909    ///
27910    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
27911    ///   
27912    pub hidden: core::option::Option<AttributeValueOwned>,
27913    ///
27914    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
27915    ///   
27916    pub id: core::option::Option<AttributeValueOwned>,
27917    ///
27918    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
27919    ///   
27920    pub inert: core::option::Option<AttributeValueOwned>,
27921    ///
27922    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
27923    ///   
27924    pub inputmode: core::option::Option<AttributeValueOwned>,
27925    ///
27926    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
27927    ///   
27928    pub is: core::option::Option<AttributeValueOwned>,
27929    ///
27930    ///     <p>The unique, global identifier of an item.</p>
27931    ///   
27932    pub itemid: core::option::Option<AttributeValueOwned>,
27933    ///
27934    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
27935    ///   
27936    pub itemprop: core::option::Option<AttributeValueOwned>,
27937    ///
27938    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
27939    ///   
27940    pub itemref: core::option::Option<AttributeValueOwned>,
27941    ///
27942    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
27943    ///   
27944    pub itemscope: core::option::Option<AttributeValueOwned>,
27945    ///
27946    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
27947    ///   
27948    pub itemtype: core::option::Option<AttributeValueOwned>,
27949    ///
27950    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
27951    ///   
27952    pub lang: core::option::Option<AttributeValueOwned>,
27953    ///
27954    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
27955    ///   
27956    pub nonce: core::option::Option<AttributeValueOwned>,
27957    ///
27958    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
27959    ///   
27960    pub part: core::option::Option<AttributeValueOwned>,
27961    ///
27962    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
27963    ///   
27964    pub popover: core::option::Option<AttributeValueOwned>,
27965    ///
27966    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
27967    ///   
27968    pub role: core::option::Option<AttributeValueOwned>,
27969    ///
27970    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
27971    ///   
27972    pub slot: core::option::Option<AttributeValueOwned>,
27973    ///
27974    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
27975    ///     <ul>
27976    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
27977    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
27978    ///     </ul>
27979    ///   
27980    pub spellcheck: core::option::Option<AttributeValueOwned>,
27981    ///
27982    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
27983    ///   
27984    pub style: core::option::Option<AttributeValueOwned>,
27985    ///
27986    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
27987    ///     <ul>
27988    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
27989    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
27990    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
27991    ///     </ul>
27992    ///   
27993    pub tabindex: core::option::Option<AttributeValueOwned>,
27994    ///
27995    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
27996    ///   
27997    pub title: core::option::Option<AttributeValueOwned>,
27998    ///
27999    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
28000    ///     <ul>
28001    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
28002    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
28003    ///     </ul>
28004    ///   
28005    pub translate: core::option::Option<AttributeValueOwned>,
28006    ///
28007    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
28008    ///     <ul>
28009    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
28010    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
28011    ///     </ul>
28012    ///   
28013    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
28014}
28015#[allow(deprecated)]
28016#[cfg(feature = "alloc")]
28017impl SubOwned {
28018    /// Get the tag name of the element.
28019    /// This is the same as the name of the struct, in kebab-case.
28020    pub fn tag() -> &'static str {
28021        "sub"
28022    }
28023    /// Sets an attribute of the element.
28024    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
28025    /// If the `alloc` feature is disabled, this function will silently fail.
28026    ///
28027    /// # Note
28028    /// This only works when the attribute is lowercase.
28029    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
28030        match name {
28031            "accesskey" => self.accesskey = Some(value.into()),
28032            "autocapitalize" => self.autocapitalize = Some(value.into()),
28033            "autofocus" => self.autofocus = Some(value.into()),
28034            "class" => self.class = Some(value.into()),
28035            "contenteditable" => self.contenteditable = Some(value.into()),
28036            "contextmenu" => self.contextmenu = Some(value.into()),
28037            "dir" => self.dir = Some(value.into()),
28038            "draggable" => self.draggable = Some(value.into()),
28039            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
28040            "exportparts" => self.exportparts = Some(value.into()),
28041            "hidden" => self.hidden = Some(value.into()),
28042            "id" => self.id = Some(value.into()),
28043            "inert" => self.inert = Some(value.into()),
28044            "inputmode" => self.inputmode = Some(value.into()),
28045            "is" => self.is = Some(value.into()),
28046            "itemid" => self.itemid = Some(value.into()),
28047            "itemprop" => self.itemprop = Some(value.into()),
28048            "itemref" => self.itemref = Some(value.into()),
28049            "itemscope" => self.itemscope = Some(value.into()),
28050            "itemtype" => self.itemtype = Some(value.into()),
28051            "lang" => self.lang = Some(value.into()),
28052            "nonce" => self.nonce = Some(value.into()),
28053            "part" => self.part = Some(value.into()),
28054            "popover" => self.popover = Some(value.into()),
28055            "role" => self.role = Some(value.into()),
28056            "slot" => self.slot = Some(value.into()),
28057            "spellcheck" => self.spellcheck = Some(value.into()),
28058            "style" => self.style = Some(value.into()),
28059            "tabindex" => self.tabindex = Some(value.into()),
28060            "title" => self.title = Some(value.into()),
28061            "translate" => self.translate = Some(value.into()),
28062            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
28063            #[cfg(feature = "alloc")]
28064            _ => {
28065                #[allow(clippy::useless_conversion)]
28066                self.extra.insert(name.into(), value.into());
28067            }
28068            #[cfg(not(feature = "alloc"))]
28069            _ => {}
28070        }
28071    }
28072}
28073/// The <strong><code>&lt;sup&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element specifies inline text which is to be displayed as superscript for solely typographical reasons. Superscripts are usually rendered with a raised baseline using smaller text.
28074///
28075/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/sup>
28076
28077#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
28078pub struct Sup<'life> {
28079    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
28080    ///   
28081    pub accesskey: core::option::Option<AttributeValue<'life>>,
28082    ///
28083    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
28084    ///     <ul>
28085    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
28086    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
28087    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
28088    ///       <li><code>characters</code>, all letters should default to uppercase</li>
28089    ///     </ul>
28090    ///   
28091    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
28092    ///
28093    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
28094    ///   
28095    pub autofocus: core::option::Option<AttributeValue<'life>>,
28096    ///
28097    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
28098    ///   
28099    pub class: core::option::Option<AttributeValue<'life>>,
28100    ///
28101    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
28102    ///     <ul>
28103    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
28104    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
28105    ///     </ul>
28106    ///   
28107    pub contenteditable: core::option::Option<AttributeValue<'life>>,
28108    ///
28109    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
28110    ///   
28111    pub contextmenu: core::option::Option<AttributeValue<'life>>,
28112    ///
28113    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
28114    ///   
28115    #[cfg(feature = "alloc")]
28116    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
28117    ///
28118    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
28119    ///     <ul>
28120    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
28121    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
28122    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
28123    ///     </ul>
28124    ///   
28125    pub dir: core::option::Option<AttributeValue<'life>>,
28126    ///
28127    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
28128    ///     <ul>
28129    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
28130    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
28131    ///     </ul>
28132    ///   
28133    pub draggable: core::option::Option<AttributeValue<'life>>,
28134    ///
28135    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
28136    ///   
28137    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
28138    ///
28139    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
28140    ///   
28141    pub exportparts: core::option::Option<AttributeValue<'life>>,
28142    /// /// Extra attributes of the element.
28143
28144    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
28145    #[cfg(feature = "alloc")]
28146    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
28147    ///
28148    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
28149    ///   
28150    pub hidden: core::option::Option<AttributeValue<'life>>,
28151    ///
28152    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
28153    ///   
28154    pub id: core::option::Option<AttributeValue<'life>>,
28155    ///
28156    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
28157    ///   
28158    pub inert: core::option::Option<AttributeValue<'life>>,
28159    ///
28160    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
28161    ///   
28162    pub inputmode: core::option::Option<AttributeValue<'life>>,
28163    ///
28164    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
28165    ///   
28166    pub is: core::option::Option<AttributeValue<'life>>,
28167    ///
28168    ///     <p>The unique, global identifier of an item.</p>
28169    ///   
28170    pub itemid: core::option::Option<AttributeValue<'life>>,
28171    ///
28172    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
28173    ///   
28174    pub itemprop: core::option::Option<AttributeValue<'life>>,
28175    ///
28176    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
28177    ///   
28178    pub itemref: core::option::Option<AttributeValue<'life>>,
28179    ///
28180    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
28181    ///   
28182    pub itemscope: core::option::Option<AttributeValue<'life>>,
28183    ///
28184    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
28185    ///   
28186    pub itemtype: core::option::Option<AttributeValue<'life>>,
28187    ///
28188    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
28189    ///   
28190    pub lang: core::option::Option<AttributeValue<'life>>,
28191    ///
28192    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
28193    ///   
28194    pub nonce: core::option::Option<AttributeValue<'life>>,
28195    ///
28196    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
28197    ///   
28198    pub part: core::option::Option<AttributeValue<'life>>,
28199    ///
28200    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
28201    ///   
28202    pub popover: core::option::Option<AttributeValue<'life>>,
28203    ///
28204    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
28205    ///   
28206    pub role: core::option::Option<AttributeValue<'life>>,
28207    ///
28208    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
28209    ///   
28210    pub slot: core::option::Option<AttributeValue<'life>>,
28211    ///
28212    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
28213    ///     <ul>
28214    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
28215    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
28216    ///     </ul>
28217    ///   
28218    pub spellcheck: core::option::Option<AttributeValue<'life>>,
28219    ///
28220    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
28221    ///   
28222    pub style: core::option::Option<AttributeValue<'life>>,
28223    ///
28224    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
28225    ///     <ul>
28226    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
28227    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
28228    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
28229    ///     </ul>
28230    ///   
28231    pub tabindex: core::option::Option<AttributeValue<'life>>,
28232    ///
28233    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
28234    ///   
28235    pub title: core::option::Option<AttributeValue<'life>>,
28236    ///
28237    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
28238    ///     <ul>
28239    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
28240    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
28241    ///     </ul>
28242    ///   
28243    pub translate: core::option::Option<AttributeValue<'life>>,
28244    ///
28245    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
28246    ///     <ul>
28247    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
28248    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
28249    ///     </ul>
28250    ///   
28251    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
28252}
28253#[allow(deprecated)]
28254
28255impl<'life> Sup<'life> {
28256    /// Get the tag name of the element.
28257    /// This is the same as the name of the struct, in kebab-case.
28258    pub fn tag() -> &'static str {
28259        "sup"
28260    }
28261    /// Sets an attribute of the element.
28262    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
28263    /// If the `alloc` feature is disabled, this function will silently fail.
28264    ///
28265    /// # Note
28266    /// This only works when the attribute is lowercase.
28267    pub fn set_attr(
28268        &mut self,
28269        name: &'life str,
28270        value: impl core::convert::Into<AttributeValue<'life>>,
28271    ) {
28272        match name {
28273            "accesskey" => self.accesskey = Some(value.into()),
28274            "autocapitalize" => self.autocapitalize = Some(value.into()),
28275            "autofocus" => self.autofocus = Some(value.into()),
28276            "class" => self.class = Some(value.into()),
28277            "contenteditable" => self.contenteditable = Some(value.into()),
28278            "contextmenu" => self.contextmenu = Some(value.into()),
28279            "dir" => self.dir = Some(value.into()),
28280            "draggable" => self.draggable = Some(value.into()),
28281            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
28282            "exportparts" => self.exportparts = Some(value.into()),
28283            "hidden" => self.hidden = Some(value.into()),
28284            "id" => self.id = Some(value.into()),
28285            "inert" => self.inert = Some(value.into()),
28286            "inputmode" => self.inputmode = Some(value.into()),
28287            "is" => self.is = Some(value.into()),
28288            "itemid" => self.itemid = Some(value.into()),
28289            "itemprop" => self.itemprop = Some(value.into()),
28290            "itemref" => self.itemref = Some(value.into()),
28291            "itemscope" => self.itemscope = Some(value.into()),
28292            "itemtype" => self.itemtype = Some(value.into()),
28293            "lang" => self.lang = Some(value.into()),
28294            "nonce" => self.nonce = Some(value.into()),
28295            "part" => self.part = Some(value.into()),
28296            "popover" => self.popover = Some(value.into()),
28297            "role" => self.role = Some(value.into()),
28298            "slot" => self.slot = Some(value.into()),
28299            "spellcheck" => self.spellcheck = Some(value.into()),
28300            "style" => self.style = Some(value.into()),
28301            "tabindex" => self.tabindex = Some(value.into()),
28302            "title" => self.title = Some(value.into()),
28303            "translate" => self.translate = Some(value.into()),
28304            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
28305            #[cfg(feature = "alloc")]
28306            _ => {
28307                #[allow(clippy::useless_conversion)]
28308                self.extra.insert(name.into(), value.into());
28309            }
28310            #[cfg(not(feature = "alloc"))]
28311            _ => {}
28312        }
28313    }
28314}
28315/// The <strong><code>&lt;sup&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element specifies inline text which is to be displayed as superscript for solely typographical reasons. Superscripts are usually rendered with a raised baseline using smaller text.
28316///
28317/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/sup>
28318
28319#[cfg(feature = "alloc")]
28320#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
28321pub struct SupOwned {
28322    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
28323    ///   
28324    pub accesskey: core::option::Option<AttributeValueOwned>,
28325    ///
28326    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
28327    ///     <ul>
28328    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
28329    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
28330    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
28331    ///       <li><code>characters</code>, all letters should default to uppercase</li>
28332    ///     </ul>
28333    ///   
28334    pub autocapitalize: core::option::Option<AttributeValueOwned>,
28335    ///
28336    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
28337    ///   
28338    pub autofocus: core::option::Option<AttributeValueOwned>,
28339    ///
28340    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
28341    ///   
28342    pub class: core::option::Option<AttributeValueOwned>,
28343    ///
28344    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
28345    ///     <ul>
28346    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
28347    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
28348    ///     </ul>
28349    ///   
28350    pub contenteditable: core::option::Option<AttributeValueOwned>,
28351    ///
28352    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
28353    ///   
28354    pub contextmenu: core::option::Option<AttributeValueOwned>,
28355    ///
28356    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
28357    ///   
28358    #[cfg(feature = "alloc")]
28359    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
28360    ///
28361    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
28362    ///     <ul>
28363    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
28364    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
28365    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
28366    ///     </ul>
28367    ///   
28368    pub dir: core::option::Option<AttributeValueOwned>,
28369    ///
28370    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
28371    ///     <ul>
28372    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
28373    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
28374    ///     </ul>
28375    ///   
28376    pub draggable: core::option::Option<AttributeValueOwned>,
28377    ///
28378    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
28379    ///   
28380    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
28381    ///
28382    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
28383    ///   
28384    pub exportparts: core::option::Option<AttributeValueOwned>,
28385    /// /// Extra attributes of the element.
28386
28387    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
28388    #[cfg(feature = "alloc")]
28389    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
28390    ///
28391    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
28392    ///   
28393    pub hidden: core::option::Option<AttributeValueOwned>,
28394    ///
28395    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
28396    ///   
28397    pub id: core::option::Option<AttributeValueOwned>,
28398    ///
28399    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
28400    ///   
28401    pub inert: core::option::Option<AttributeValueOwned>,
28402    ///
28403    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
28404    ///   
28405    pub inputmode: core::option::Option<AttributeValueOwned>,
28406    ///
28407    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
28408    ///   
28409    pub is: core::option::Option<AttributeValueOwned>,
28410    ///
28411    ///     <p>The unique, global identifier of an item.</p>
28412    ///   
28413    pub itemid: core::option::Option<AttributeValueOwned>,
28414    ///
28415    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
28416    ///   
28417    pub itemprop: core::option::Option<AttributeValueOwned>,
28418    ///
28419    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
28420    ///   
28421    pub itemref: core::option::Option<AttributeValueOwned>,
28422    ///
28423    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
28424    ///   
28425    pub itemscope: core::option::Option<AttributeValueOwned>,
28426    ///
28427    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
28428    ///   
28429    pub itemtype: core::option::Option<AttributeValueOwned>,
28430    ///
28431    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
28432    ///   
28433    pub lang: core::option::Option<AttributeValueOwned>,
28434    ///
28435    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
28436    ///   
28437    pub nonce: core::option::Option<AttributeValueOwned>,
28438    ///
28439    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
28440    ///   
28441    pub part: core::option::Option<AttributeValueOwned>,
28442    ///
28443    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
28444    ///   
28445    pub popover: core::option::Option<AttributeValueOwned>,
28446    ///
28447    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
28448    ///   
28449    pub role: core::option::Option<AttributeValueOwned>,
28450    ///
28451    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
28452    ///   
28453    pub slot: core::option::Option<AttributeValueOwned>,
28454    ///
28455    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
28456    ///     <ul>
28457    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
28458    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
28459    ///     </ul>
28460    ///   
28461    pub spellcheck: core::option::Option<AttributeValueOwned>,
28462    ///
28463    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
28464    ///   
28465    pub style: core::option::Option<AttributeValueOwned>,
28466    ///
28467    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
28468    ///     <ul>
28469    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
28470    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
28471    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
28472    ///     </ul>
28473    ///   
28474    pub tabindex: core::option::Option<AttributeValueOwned>,
28475    ///
28476    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
28477    ///   
28478    pub title: core::option::Option<AttributeValueOwned>,
28479    ///
28480    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
28481    ///     <ul>
28482    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
28483    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
28484    ///     </ul>
28485    ///   
28486    pub translate: core::option::Option<AttributeValueOwned>,
28487    ///
28488    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
28489    ///     <ul>
28490    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
28491    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
28492    ///     </ul>
28493    ///   
28494    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
28495}
28496#[allow(deprecated)]
28497#[cfg(feature = "alloc")]
28498impl SupOwned {
28499    /// Get the tag name of the element.
28500    /// This is the same as the name of the struct, in kebab-case.
28501    pub fn tag() -> &'static str {
28502        "sup"
28503    }
28504    /// Sets an attribute of the element.
28505    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
28506    /// If the `alloc` feature is disabled, this function will silently fail.
28507    ///
28508    /// # Note
28509    /// This only works when the attribute is lowercase.
28510    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
28511        match name {
28512            "accesskey" => self.accesskey = Some(value.into()),
28513            "autocapitalize" => self.autocapitalize = Some(value.into()),
28514            "autofocus" => self.autofocus = Some(value.into()),
28515            "class" => self.class = Some(value.into()),
28516            "contenteditable" => self.contenteditable = Some(value.into()),
28517            "contextmenu" => self.contextmenu = Some(value.into()),
28518            "dir" => self.dir = Some(value.into()),
28519            "draggable" => self.draggable = Some(value.into()),
28520            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
28521            "exportparts" => self.exportparts = Some(value.into()),
28522            "hidden" => self.hidden = Some(value.into()),
28523            "id" => self.id = Some(value.into()),
28524            "inert" => self.inert = Some(value.into()),
28525            "inputmode" => self.inputmode = Some(value.into()),
28526            "is" => self.is = Some(value.into()),
28527            "itemid" => self.itemid = Some(value.into()),
28528            "itemprop" => self.itemprop = Some(value.into()),
28529            "itemref" => self.itemref = Some(value.into()),
28530            "itemscope" => self.itemscope = Some(value.into()),
28531            "itemtype" => self.itemtype = Some(value.into()),
28532            "lang" => self.lang = Some(value.into()),
28533            "nonce" => self.nonce = Some(value.into()),
28534            "part" => self.part = Some(value.into()),
28535            "popover" => self.popover = Some(value.into()),
28536            "role" => self.role = Some(value.into()),
28537            "slot" => self.slot = Some(value.into()),
28538            "spellcheck" => self.spellcheck = Some(value.into()),
28539            "style" => self.style = Some(value.into()),
28540            "tabindex" => self.tabindex = Some(value.into()),
28541            "title" => self.title = Some(value.into()),
28542            "translate" => self.translate = Some(value.into()),
28543            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
28544            #[cfg(feature = "alloc")]
28545            _ => {
28546                #[allow(clippy::useless_conversion)]
28547                self.extra.insert(name.into(), value.into());
28548            }
28549            #[cfg(not(feature = "alloc"))]
28550            _ => {}
28551        }
28552    }
28553}
28554/// The <strong><code>&lt;time&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents a specific period in time. It may include the <code>datetime</code> attribute to translate dates into machine-readable format, allowing for better search engine results or custom features such as reminders.
28555///
28556/// It may represent one of the following:
28557///
28558/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/time>
28559
28560#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
28561pub struct Time<'life> {
28562    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
28563    ///   
28564    pub accesskey: core::option::Option<AttributeValue<'life>>,
28565    ///
28566    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
28567    ///     <ul>
28568    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
28569    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
28570    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
28571    ///       <li><code>characters</code>, all letters should default to uppercase</li>
28572    ///     </ul>
28573    ///   
28574    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
28575    ///
28576    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
28577    ///   
28578    pub autofocus: core::option::Option<AttributeValue<'life>>,
28579    ///
28580    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
28581    ///   
28582    pub class: core::option::Option<AttributeValue<'life>>,
28583    ///
28584    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
28585    ///     <ul>
28586    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
28587    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
28588    ///     </ul>
28589    ///   
28590    pub contenteditable: core::option::Option<AttributeValue<'life>>,
28591    ///
28592    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
28593    ///   
28594    pub contextmenu: core::option::Option<AttributeValue<'life>>,
28595    ///
28596    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
28597    ///   
28598    #[cfg(feature = "alloc")]
28599    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
28600    ///
28601    ///     <p>This attribute indicates the time and/or date of the element and must be in one of the formats described below.</p>
28602    ///   
28603    pub datetime: core::option::Option<AttributeValue<'life>>,
28604    ///
28605    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
28606    ///     <ul>
28607    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
28608    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
28609    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
28610    ///     </ul>
28611    ///   
28612    pub dir: core::option::Option<AttributeValue<'life>>,
28613    ///
28614    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
28615    ///     <ul>
28616    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
28617    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
28618    ///     </ul>
28619    ///   
28620    pub draggable: core::option::Option<AttributeValue<'life>>,
28621    ///
28622    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
28623    ///   
28624    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
28625    ///
28626    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
28627    ///   
28628    pub exportparts: core::option::Option<AttributeValue<'life>>,
28629    /// /// Extra attributes of the element.
28630
28631    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
28632    #[cfg(feature = "alloc")]
28633    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
28634    ///
28635    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
28636    ///   
28637    pub hidden: core::option::Option<AttributeValue<'life>>,
28638    ///
28639    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
28640    ///   
28641    pub id: core::option::Option<AttributeValue<'life>>,
28642    ///
28643    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
28644    ///   
28645    pub inert: core::option::Option<AttributeValue<'life>>,
28646    ///
28647    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
28648    ///   
28649    pub inputmode: core::option::Option<AttributeValue<'life>>,
28650    ///
28651    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
28652    ///   
28653    pub is: core::option::Option<AttributeValue<'life>>,
28654    ///
28655    ///     <p>The unique, global identifier of an item.</p>
28656    ///   
28657    pub itemid: core::option::Option<AttributeValue<'life>>,
28658    ///
28659    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
28660    ///   
28661    pub itemprop: core::option::Option<AttributeValue<'life>>,
28662    ///
28663    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
28664    ///   
28665    pub itemref: core::option::Option<AttributeValue<'life>>,
28666    ///
28667    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
28668    ///   
28669    pub itemscope: core::option::Option<AttributeValue<'life>>,
28670    ///
28671    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
28672    ///   
28673    pub itemtype: core::option::Option<AttributeValue<'life>>,
28674    ///
28675    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
28676    ///   
28677    pub lang: core::option::Option<AttributeValue<'life>>,
28678    ///
28679    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
28680    ///   
28681    pub nonce: core::option::Option<AttributeValue<'life>>,
28682    ///
28683    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
28684    ///   
28685    pub part: core::option::Option<AttributeValue<'life>>,
28686    ///
28687    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
28688    ///   
28689    pub popover: core::option::Option<AttributeValue<'life>>,
28690    ///
28691    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
28692    ///   
28693    pub role: core::option::Option<AttributeValue<'life>>,
28694    ///
28695    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
28696    ///   
28697    pub slot: core::option::Option<AttributeValue<'life>>,
28698    ///
28699    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
28700    ///     <ul>
28701    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
28702    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
28703    ///     </ul>
28704    ///   
28705    pub spellcheck: core::option::Option<AttributeValue<'life>>,
28706    ///
28707    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
28708    ///   
28709    pub style: core::option::Option<AttributeValue<'life>>,
28710    ///
28711    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
28712    ///     <ul>
28713    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
28714    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
28715    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
28716    ///     </ul>
28717    ///   
28718    pub tabindex: core::option::Option<AttributeValue<'life>>,
28719    ///
28720    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
28721    ///   
28722    pub title: core::option::Option<AttributeValue<'life>>,
28723    ///
28724    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
28725    ///     <ul>
28726    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
28727    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
28728    ///     </ul>
28729    ///   
28730    pub translate: core::option::Option<AttributeValue<'life>>,
28731    ///
28732    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
28733    ///     <ul>
28734    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
28735    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
28736    ///     </ul>
28737    ///   
28738    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
28739}
28740#[allow(deprecated)]
28741
28742impl<'life> Time<'life> {
28743    /// Get the tag name of the element.
28744    /// This is the same as the name of the struct, in kebab-case.
28745    pub fn tag() -> &'static str {
28746        "time"
28747    }
28748    /// Sets an attribute of the element.
28749    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
28750    /// If the `alloc` feature is disabled, this function will silently fail.
28751    ///
28752    /// # Note
28753    /// This only works when the attribute is lowercase.
28754    pub fn set_attr(
28755        &mut self,
28756        name: &'life str,
28757        value: impl core::convert::Into<AttributeValue<'life>>,
28758    ) {
28759        match name {
28760            "accesskey" => self.accesskey = Some(value.into()),
28761            "autocapitalize" => self.autocapitalize = Some(value.into()),
28762            "autofocus" => self.autofocus = Some(value.into()),
28763            "class" => self.class = Some(value.into()),
28764            "contenteditable" => self.contenteditable = Some(value.into()),
28765            "contextmenu" => self.contextmenu = Some(value.into()),
28766            "datetime" => self.datetime = Some(value.into()),
28767            "dir" => self.dir = Some(value.into()),
28768            "draggable" => self.draggable = Some(value.into()),
28769            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
28770            "exportparts" => self.exportparts = Some(value.into()),
28771            "hidden" => self.hidden = Some(value.into()),
28772            "id" => self.id = Some(value.into()),
28773            "inert" => self.inert = Some(value.into()),
28774            "inputmode" => self.inputmode = Some(value.into()),
28775            "is" => self.is = Some(value.into()),
28776            "itemid" => self.itemid = Some(value.into()),
28777            "itemprop" => self.itemprop = Some(value.into()),
28778            "itemref" => self.itemref = Some(value.into()),
28779            "itemscope" => self.itemscope = Some(value.into()),
28780            "itemtype" => self.itemtype = Some(value.into()),
28781            "lang" => self.lang = Some(value.into()),
28782            "nonce" => self.nonce = Some(value.into()),
28783            "part" => self.part = Some(value.into()),
28784            "popover" => self.popover = Some(value.into()),
28785            "role" => self.role = Some(value.into()),
28786            "slot" => self.slot = Some(value.into()),
28787            "spellcheck" => self.spellcheck = Some(value.into()),
28788            "style" => self.style = Some(value.into()),
28789            "tabindex" => self.tabindex = Some(value.into()),
28790            "title" => self.title = Some(value.into()),
28791            "translate" => self.translate = Some(value.into()),
28792            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
28793            #[cfg(feature = "alloc")]
28794            _ => {
28795                #[allow(clippy::useless_conversion)]
28796                self.extra.insert(name.into(), value.into());
28797            }
28798            #[cfg(not(feature = "alloc"))]
28799            _ => {}
28800        }
28801    }
28802}
28803/// The <strong><code>&lt;time&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents a specific period in time. It may include the <code>datetime</code> attribute to translate dates into machine-readable format, allowing for better search engine results or custom features such as reminders.
28804///
28805/// It may represent one of the following:
28806///
28807/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/time>
28808
28809#[cfg(feature = "alloc")]
28810#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
28811pub struct TimeOwned {
28812    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
28813    ///   
28814    pub accesskey: core::option::Option<AttributeValueOwned>,
28815    ///
28816    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
28817    ///     <ul>
28818    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
28819    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
28820    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
28821    ///       <li><code>characters</code>, all letters should default to uppercase</li>
28822    ///     </ul>
28823    ///   
28824    pub autocapitalize: core::option::Option<AttributeValueOwned>,
28825    ///
28826    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
28827    ///   
28828    pub autofocus: core::option::Option<AttributeValueOwned>,
28829    ///
28830    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
28831    ///   
28832    pub class: core::option::Option<AttributeValueOwned>,
28833    ///
28834    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
28835    ///     <ul>
28836    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
28837    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
28838    ///     </ul>
28839    ///   
28840    pub contenteditable: core::option::Option<AttributeValueOwned>,
28841    ///
28842    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
28843    ///   
28844    pub contextmenu: core::option::Option<AttributeValueOwned>,
28845    ///
28846    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
28847    ///   
28848    #[cfg(feature = "alloc")]
28849    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
28850    ///
28851    ///     <p>This attribute indicates the time and/or date of the element and must be in one of the formats described below.</p>
28852    ///   
28853    pub datetime: core::option::Option<AttributeValueOwned>,
28854    ///
28855    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
28856    ///     <ul>
28857    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
28858    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
28859    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
28860    ///     </ul>
28861    ///   
28862    pub dir: core::option::Option<AttributeValueOwned>,
28863    ///
28864    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
28865    ///     <ul>
28866    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
28867    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
28868    ///     </ul>
28869    ///   
28870    pub draggable: core::option::Option<AttributeValueOwned>,
28871    ///
28872    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
28873    ///   
28874    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
28875    ///
28876    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
28877    ///   
28878    pub exportparts: core::option::Option<AttributeValueOwned>,
28879    /// /// Extra attributes of the element.
28880
28881    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
28882    #[cfg(feature = "alloc")]
28883    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
28884    ///
28885    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
28886    ///   
28887    pub hidden: core::option::Option<AttributeValueOwned>,
28888    ///
28889    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
28890    ///   
28891    pub id: core::option::Option<AttributeValueOwned>,
28892    ///
28893    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
28894    ///   
28895    pub inert: core::option::Option<AttributeValueOwned>,
28896    ///
28897    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
28898    ///   
28899    pub inputmode: core::option::Option<AttributeValueOwned>,
28900    ///
28901    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
28902    ///   
28903    pub is: core::option::Option<AttributeValueOwned>,
28904    ///
28905    ///     <p>The unique, global identifier of an item.</p>
28906    ///   
28907    pub itemid: core::option::Option<AttributeValueOwned>,
28908    ///
28909    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
28910    ///   
28911    pub itemprop: core::option::Option<AttributeValueOwned>,
28912    ///
28913    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
28914    ///   
28915    pub itemref: core::option::Option<AttributeValueOwned>,
28916    ///
28917    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
28918    ///   
28919    pub itemscope: core::option::Option<AttributeValueOwned>,
28920    ///
28921    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
28922    ///   
28923    pub itemtype: core::option::Option<AttributeValueOwned>,
28924    ///
28925    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
28926    ///   
28927    pub lang: core::option::Option<AttributeValueOwned>,
28928    ///
28929    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
28930    ///   
28931    pub nonce: core::option::Option<AttributeValueOwned>,
28932    ///
28933    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
28934    ///   
28935    pub part: core::option::Option<AttributeValueOwned>,
28936    ///
28937    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
28938    ///   
28939    pub popover: core::option::Option<AttributeValueOwned>,
28940    ///
28941    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
28942    ///   
28943    pub role: core::option::Option<AttributeValueOwned>,
28944    ///
28945    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
28946    ///   
28947    pub slot: core::option::Option<AttributeValueOwned>,
28948    ///
28949    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
28950    ///     <ul>
28951    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
28952    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
28953    ///     </ul>
28954    ///   
28955    pub spellcheck: core::option::Option<AttributeValueOwned>,
28956    ///
28957    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
28958    ///   
28959    pub style: core::option::Option<AttributeValueOwned>,
28960    ///
28961    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
28962    ///     <ul>
28963    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
28964    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
28965    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
28966    ///     </ul>
28967    ///   
28968    pub tabindex: core::option::Option<AttributeValueOwned>,
28969    ///
28970    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
28971    ///   
28972    pub title: core::option::Option<AttributeValueOwned>,
28973    ///
28974    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
28975    ///     <ul>
28976    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
28977    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
28978    ///     </ul>
28979    ///   
28980    pub translate: core::option::Option<AttributeValueOwned>,
28981    ///
28982    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
28983    ///     <ul>
28984    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
28985    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
28986    ///     </ul>
28987    ///   
28988    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
28989}
28990#[allow(deprecated)]
28991#[cfg(feature = "alloc")]
28992impl TimeOwned {
28993    /// Get the tag name of the element.
28994    /// This is the same as the name of the struct, in kebab-case.
28995    pub fn tag() -> &'static str {
28996        "time"
28997    }
28998    /// Sets an attribute of the element.
28999    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
29000    /// If the `alloc` feature is disabled, this function will silently fail.
29001    ///
29002    /// # Note
29003    /// This only works when the attribute is lowercase.
29004    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
29005        match name {
29006            "accesskey" => self.accesskey = Some(value.into()),
29007            "autocapitalize" => self.autocapitalize = Some(value.into()),
29008            "autofocus" => self.autofocus = Some(value.into()),
29009            "class" => self.class = Some(value.into()),
29010            "contenteditable" => self.contenteditable = Some(value.into()),
29011            "contextmenu" => self.contextmenu = Some(value.into()),
29012            "datetime" => self.datetime = Some(value.into()),
29013            "dir" => self.dir = Some(value.into()),
29014            "draggable" => self.draggable = Some(value.into()),
29015            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
29016            "exportparts" => self.exportparts = Some(value.into()),
29017            "hidden" => self.hidden = Some(value.into()),
29018            "id" => self.id = Some(value.into()),
29019            "inert" => self.inert = Some(value.into()),
29020            "inputmode" => self.inputmode = Some(value.into()),
29021            "is" => self.is = Some(value.into()),
29022            "itemid" => self.itemid = Some(value.into()),
29023            "itemprop" => self.itemprop = Some(value.into()),
29024            "itemref" => self.itemref = Some(value.into()),
29025            "itemscope" => self.itemscope = Some(value.into()),
29026            "itemtype" => self.itemtype = Some(value.into()),
29027            "lang" => self.lang = Some(value.into()),
29028            "nonce" => self.nonce = Some(value.into()),
29029            "part" => self.part = Some(value.into()),
29030            "popover" => self.popover = Some(value.into()),
29031            "role" => self.role = Some(value.into()),
29032            "slot" => self.slot = Some(value.into()),
29033            "spellcheck" => self.spellcheck = Some(value.into()),
29034            "style" => self.style = Some(value.into()),
29035            "tabindex" => self.tabindex = Some(value.into()),
29036            "title" => self.title = Some(value.into()),
29037            "translate" => self.translate = Some(value.into()),
29038            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
29039            #[cfg(feature = "alloc")]
29040            _ => {
29041                #[allow(clippy::useless_conversion)]
29042                self.extra.insert(name.into(), value.into());
29043            }
29044            #[cfg(not(feature = "alloc"))]
29045            _ => {}
29046        }
29047    }
29048}
29049/// The <strong><code>&lt;u&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents a span of inline text which should be rendered in a way that indicates that it has a non-textual annotation. This is rendered by default as a simple solid underline, but may be altered using CSS.
29050///
29051/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/u>
29052
29053#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
29054pub struct U<'life> {
29055    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
29056    ///   
29057    pub accesskey: core::option::Option<AttributeValue<'life>>,
29058    ///
29059    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
29060    ///     <ul>
29061    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
29062    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
29063    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
29064    ///       <li><code>characters</code>, all letters should default to uppercase</li>
29065    ///     </ul>
29066    ///   
29067    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
29068    ///
29069    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
29070    ///   
29071    pub autofocus: core::option::Option<AttributeValue<'life>>,
29072    ///
29073    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
29074    ///   
29075    pub class: core::option::Option<AttributeValue<'life>>,
29076    ///
29077    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
29078    ///     <ul>
29079    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
29080    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
29081    ///     </ul>
29082    ///   
29083    pub contenteditable: core::option::Option<AttributeValue<'life>>,
29084    ///
29085    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
29086    ///   
29087    pub contextmenu: core::option::Option<AttributeValue<'life>>,
29088    ///
29089    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
29090    ///   
29091    #[cfg(feature = "alloc")]
29092    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
29093    ///
29094    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
29095    ///     <ul>
29096    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
29097    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
29098    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
29099    ///     </ul>
29100    ///   
29101    pub dir: core::option::Option<AttributeValue<'life>>,
29102    ///
29103    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
29104    ///     <ul>
29105    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
29106    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
29107    ///     </ul>
29108    ///   
29109    pub draggable: core::option::Option<AttributeValue<'life>>,
29110    ///
29111    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
29112    ///   
29113    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
29114    ///
29115    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
29116    ///   
29117    pub exportparts: core::option::Option<AttributeValue<'life>>,
29118    /// /// Extra attributes of the element.
29119
29120    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
29121    #[cfg(feature = "alloc")]
29122    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
29123    ///
29124    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
29125    ///   
29126    pub hidden: core::option::Option<AttributeValue<'life>>,
29127    ///
29128    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
29129    ///   
29130    pub id: core::option::Option<AttributeValue<'life>>,
29131    ///
29132    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
29133    ///   
29134    pub inert: core::option::Option<AttributeValue<'life>>,
29135    ///
29136    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
29137    ///   
29138    pub inputmode: core::option::Option<AttributeValue<'life>>,
29139    ///
29140    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
29141    ///   
29142    pub is: core::option::Option<AttributeValue<'life>>,
29143    ///
29144    ///     <p>The unique, global identifier of an item.</p>
29145    ///   
29146    pub itemid: core::option::Option<AttributeValue<'life>>,
29147    ///
29148    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
29149    ///   
29150    pub itemprop: core::option::Option<AttributeValue<'life>>,
29151    ///
29152    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
29153    ///   
29154    pub itemref: core::option::Option<AttributeValue<'life>>,
29155    ///
29156    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
29157    ///   
29158    pub itemscope: core::option::Option<AttributeValue<'life>>,
29159    ///
29160    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
29161    ///   
29162    pub itemtype: core::option::Option<AttributeValue<'life>>,
29163    ///
29164    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
29165    ///   
29166    pub lang: core::option::Option<AttributeValue<'life>>,
29167    ///
29168    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
29169    ///   
29170    pub nonce: core::option::Option<AttributeValue<'life>>,
29171    ///
29172    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
29173    ///   
29174    pub part: core::option::Option<AttributeValue<'life>>,
29175    ///
29176    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
29177    ///   
29178    pub popover: core::option::Option<AttributeValue<'life>>,
29179    ///
29180    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
29181    ///   
29182    pub role: core::option::Option<AttributeValue<'life>>,
29183    ///
29184    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
29185    ///   
29186    pub slot: core::option::Option<AttributeValue<'life>>,
29187    ///
29188    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
29189    ///     <ul>
29190    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
29191    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
29192    ///     </ul>
29193    ///   
29194    pub spellcheck: core::option::Option<AttributeValue<'life>>,
29195    ///
29196    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
29197    ///   
29198    pub style: core::option::Option<AttributeValue<'life>>,
29199    ///
29200    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
29201    ///     <ul>
29202    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
29203    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
29204    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
29205    ///     </ul>
29206    ///   
29207    pub tabindex: core::option::Option<AttributeValue<'life>>,
29208    ///
29209    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
29210    ///   
29211    pub title: core::option::Option<AttributeValue<'life>>,
29212    ///
29213    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
29214    ///     <ul>
29215    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
29216    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
29217    ///     </ul>
29218    ///   
29219    pub translate: core::option::Option<AttributeValue<'life>>,
29220    ///
29221    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
29222    ///     <ul>
29223    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
29224    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
29225    ///     </ul>
29226    ///   
29227    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
29228}
29229#[allow(deprecated)]
29230
29231impl<'life> U<'life> {
29232    /// Get the tag name of the element.
29233    /// This is the same as the name of the struct, in kebab-case.
29234    pub fn tag() -> &'static str {
29235        "u"
29236    }
29237    /// Sets an attribute of the element.
29238    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
29239    /// If the `alloc` feature is disabled, this function will silently fail.
29240    ///
29241    /// # Note
29242    /// This only works when the attribute is lowercase.
29243    pub fn set_attr(
29244        &mut self,
29245        name: &'life str,
29246        value: impl core::convert::Into<AttributeValue<'life>>,
29247    ) {
29248        match name {
29249            "accesskey" => self.accesskey = Some(value.into()),
29250            "autocapitalize" => self.autocapitalize = Some(value.into()),
29251            "autofocus" => self.autofocus = Some(value.into()),
29252            "class" => self.class = Some(value.into()),
29253            "contenteditable" => self.contenteditable = Some(value.into()),
29254            "contextmenu" => self.contextmenu = Some(value.into()),
29255            "dir" => self.dir = Some(value.into()),
29256            "draggable" => self.draggable = Some(value.into()),
29257            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
29258            "exportparts" => self.exportparts = Some(value.into()),
29259            "hidden" => self.hidden = Some(value.into()),
29260            "id" => self.id = Some(value.into()),
29261            "inert" => self.inert = Some(value.into()),
29262            "inputmode" => self.inputmode = Some(value.into()),
29263            "is" => self.is = Some(value.into()),
29264            "itemid" => self.itemid = Some(value.into()),
29265            "itemprop" => self.itemprop = Some(value.into()),
29266            "itemref" => self.itemref = Some(value.into()),
29267            "itemscope" => self.itemscope = Some(value.into()),
29268            "itemtype" => self.itemtype = Some(value.into()),
29269            "lang" => self.lang = Some(value.into()),
29270            "nonce" => self.nonce = Some(value.into()),
29271            "part" => self.part = Some(value.into()),
29272            "popover" => self.popover = Some(value.into()),
29273            "role" => self.role = Some(value.into()),
29274            "slot" => self.slot = Some(value.into()),
29275            "spellcheck" => self.spellcheck = Some(value.into()),
29276            "style" => self.style = Some(value.into()),
29277            "tabindex" => self.tabindex = Some(value.into()),
29278            "title" => self.title = Some(value.into()),
29279            "translate" => self.translate = Some(value.into()),
29280            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
29281            #[cfg(feature = "alloc")]
29282            _ => {
29283                #[allow(clippy::useless_conversion)]
29284                self.extra.insert(name.into(), value.into());
29285            }
29286            #[cfg(not(feature = "alloc"))]
29287            _ => {}
29288        }
29289    }
29290}
29291/// The <strong><code>&lt;u&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents a span of inline text which should be rendered in a way that indicates that it has a non-textual annotation. This is rendered by default as a simple solid underline, but may be altered using CSS.
29292///
29293/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/u>
29294
29295#[cfg(feature = "alloc")]
29296#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
29297pub struct UOwned {
29298    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
29299    ///   
29300    pub accesskey: core::option::Option<AttributeValueOwned>,
29301    ///
29302    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
29303    ///     <ul>
29304    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
29305    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
29306    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
29307    ///       <li><code>characters</code>, all letters should default to uppercase</li>
29308    ///     </ul>
29309    ///   
29310    pub autocapitalize: core::option::Option<AttributeValueOwned>,
29311    ///
29312    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
29313    ///   
29314    pub autofocus: core::option::Option<AttributeValueOwned>,
29315    ///
29316    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
29317    ///   
29318    pub class: core::option::Option<AttributeValueOwned>,
29319    ///
29320    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
29321    ///     <ul>
29322    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
29323    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
29324    ///     </ul>
29325    ///   
29326    pub contenteditable: core::option::Option<AttributeValueOwned>,
29327    ///
29328    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
29329    ///   
29330    pub contextmenu: core::option::Option<AttributeValueOwned>,
29331    ///
29332    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
29333    ///   
29334    #[cfg(feature = "alloc")]
29335    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
29336    ///
29337    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
29338    ///     <ul>
29339    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
29340    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
29341    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
29342    ///     </ul>
29343    ///   
29344    pub dir: core::option::Option<AttributeValueOwned>,
29345    ///
29346    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
29347    ///     <ul>
29348    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
29349    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
29350    ///     </ul>
29351    ///   
29352    pub draggable: core::option::Option<AttributeValueOwned>,
29353    ///
29354    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
29355    ///   
29356    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
29357    ///
29358    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
29359    ///   
29360    pub exportparts: core::option::Option<AttributeValueOwned>,
29361    /// /// Extra attributes of the element.
29362
29363    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
29364    #[cfg(feature = "alloc")]
29365    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
29366    ///
29367    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
29368    ///   
29369    pub hidden: core::option::Option<AttributeValueOwned>,
29370    ///
29371    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
29372    ///   
29373    pub id: core::option::Option<AttributeValueOwned>,
29374    ///
29375    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
29376    ///   
29377    pub inert: core::option::Option<AttributeValueOwned>,
29378    ///
29379    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
29380    ///   
29381    pub inputmode: core::option::Option<AttributeValueOwned>,
29382    ///
29383    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
29384    ///   
29385    pub is: core::option::Option<AttributeValueOwned>,
29386    ///
29387    ///     <p>The unique, global identifier of an item.</p>
29388    ///   
29389    pub itemid: core::option::Option<AttributeValueOwned>,
29390    ///
29391    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
29392    ///   
29393    pub itemprop: core::option::Option<AttributeValueOwned>,
29394    ///
29395    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
29396    ///   
29397    pub itemref: core::option::Option<AttributeValueOwned>,
29398    ///
29399    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
29400    ///   
29401    pub itemscope: core::option::Option<AttributeValueOwned>,
29402    ///
29403    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
29404    ///   
29405    pub itemtype: core::option::Option<AttributeValueOwned>,
29406    ///
29407    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
29408    ///   
29409    pub lang: core::option::Option<AttributeValueOwned>,
29410    ///
29411    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
29412    ///   
29413    pub nonce: core::option::Option<AttributeValueOwned>,
29414    ///
29415    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
29416    ///   
29417    pub part: core::option::Option<AttributeValueOwned>,
29418    ///
29419    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
29420    ///   
29421    pub popover: core::option::Option<AttributeValueOwned>,
29422    ///
29423    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
29424    ///   
29425    pub role: core::option::Option<AttributeValueOwned>,
29426    ///
29427    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
29428    ///   
29429    pub slot: core::option::Option<AttributeValueOwned>,
29430    ///
29431    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
29432    ///     <ul>
29433    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
29434    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
29435    ///     </ul>
29436    ///   
29437    pub spellcheck: core::option::Option<AttributeValueOwned>,
29438    ///
29439    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
29440    ///   
29441    pub style: core::option::Option<AttributeValueOwned>,
29442    ///
29443    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
29444    ///     <ul>
29445    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
29446    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
29447    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
29448    ///     </ul>
29449    ///   
29450    pub tabindex: core::option::Option<AttributeValueOwned>,
29451    ///
29452    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
29453    ///   
29454    pub title: core::option::Option<AttributeValueOwned>,
29455    ///
29456    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
29457    ///     <ul>
29458    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
29459    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
29460    ///     </ul>
29461    ///   
29462    pub translate: core::option::Option<AttributeValueOwned>,
29463    ///
29464    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
29465    ///     <ul>
29466    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
29467    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
29468    ///     </ul>
29469    ///   
29470    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
29471}
29472#[allow(deprecated)]
29473#[cfg(feature = "alloc")]
29474impl UOwned {
29475    /// Get the tag name of the element.
29476    /// This is the same as the name of the struct, in kebab-case.
29477    pub fn tag() -> &'static str {
29478        "u"
29479    }
29480    /// Sets an attribute of the element.
29481    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
29482    /// If the `alloc` feature is disabled, this function will silently fail.
29483    ///
29484    /// # Note
29485    /// This only works when the attribute is lowercase.
29486    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
29487        match name {
29488            "accesskey" => self.accesskey = Some(value.into()),
29489            "autocapitalize" => self.autocapitalize = Some(value.into()),
29490            "autofocus" => self.autofocus = Some(value.into()),
29491            "class" => self.class = Some(value.into()),
29492            "contenteditable" => self.contenteditable = Some(value.into()),
29493            "contextmenu" => self.contextmenu = Some(value.into()),
29494            "dir" => self.dir = Some(value.into()),
29495            "draggable" => self.draggable = Some(value.into()),
29496            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
29497            "exportparts" => self.exportparts = Some(value.into()),
29498            "hidden" => self.hidden = Some(value.into()),
29499            "id" => self.id = Some(value.into()),
29500            "inert" => self.inert = Some(value.into()),
29501            "inputmode" => self.inputmode = Some(value.into()),
29502            "is" => self.is = Some(value.into()),
29503            "itemid" => self.itemid = Some(value.into()),
29504            "itemprop" => self.itemprop = Some(value.into()),
29505            "itemref" => self.itemref = Some(value.into()),
29506            "itemscope" => self.itemscope = Some(value.into()),
29507            "itemtype" => self.itemtype = Some(value.into()),
29508            "lang" => self.lang = Some(value.into()),
29509            "nonce" => self.nonce = Some(value.into()),
29510            "part" => self.part = Some(value.into()),
29511            "popover" => self.popover = Some(value.into()),
29512            "role" => self.role = Some(value.into()),
29513            "slot" => self.slot = Some(value.into()),
29514            "spellcheck" => self.spellcheck = Some(value.into()),
29515            "style" => self.style = Some(value.into()),
29516            "tabindex" => self.tabindex = Some(value.into()),
29517            "title" => self.title = Some(value.into()),
29518            "translate" => self.translate = Some(value.into()),
29519            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
29520            #[cfg(feature = "alloc")]
29521            _ => {
29522                #[allow(clippy::useless_conversion)]
29523                self.extra.insert(name.into(), value.into());
29524            }
29525            #[cfg(not(feature = "alloc"))]
29526            _ => {}
29527        }
29528    }
29529}
29530/// The <strong><code>&lt;var&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents the name of a variable in a mathematical expression or a programming context. It's typically presented using an italicized version of the current typeface, although that behavior is browser-dependent.
29531///
29532/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/var>
29533
29534#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
29535pub struct Var<'life> {
29536    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
29537    ///   
29538    pub accesskey: core::option::Option<AttributeValue<'life>>,
29539    ///
29540    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
29541    ///     <ul>
29542    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
29543    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
29544    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
29545    ///       <li><code>characters</code>, all letters should default to uppercase</li>
29546    ///     </ul>
29547    ///   
29548    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
29549    ///
29550    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
29551    ///   
29552    pub autofocus: core::option::Option<AttributeValue<'life>>,
29553    ///
29554    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
29555    ///   
29556    pub class: core::option::Option<AttributeValue<'life>>,
29557    ///
29558    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
29559    ///     <ul>
29560    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
29561    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
29562    ///     </ul>
29563    ///   
29564    pub contenteditable: core::option::Option<AttributeValue<'life>>,
29565    ///
29566    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
29567    ///   
29568    pub contextmenu: core::option::Option<AttributeValue<'life>>,
29569    ///
29570    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
29571    ///   
29572    #[cfg(feature = "alloc")]
29573    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
29574    ///
29575    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
29576    ///     <ul>
29577    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
29578    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
29579    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
29580    ///     </ul>
29581    ///   
29582    pub dir: core::option::Option<AttributeValue<'life>>,
29583    ///
29584    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
29585    ///     <ul>
29586    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
29587    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
29588    ///     </ul>
29589    ///   
29590    pub draggable: core::option::Option<AttributeValue<'life>>,
29591    ///
29592    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
29593    ///   
29594    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
29595    ///
29596    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
29597    ///   
29598    pub exportparts: core::option::Option<AttributeValue<'life>>,
29599    /// /// Extra attributes of the element.
29600
29601    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
29602    #[cfg(feature = "alloc")]
29603    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
29604    ///
29605    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
29606    ///   
29607    pub hidden: core::option::Option<AttributeValue<'life>>,
29608    ///
29609    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
29610    ///   
29611    pub id: core::option::Option<AttributeValue<'life>>,
29612    ///
29613    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
29614    ///   
29615    pub inert: core::option::Option<AttributeValue<'life>>,
29616    ///
29617    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
29618    ///   
29619    pub inputmode: core::option::Option<AttributeValue<'life>>,
29620    ///
29621    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
29622    ///   
29623    pub is: core::option::Option<AttributeValue<'life>>,
29624    ///
29625    ///     <p>The unique, global identifier of an item.</p>
29626    ///   
29627    pub itemid: core::option::Option<AttributeValue<'life>>,
29628    ///
29629    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
29630    ///   
29631    pub itemprop: core::option::Option<AttributeValue<'life>>,
29632    ///
29633    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
29634    ///   
29635    pub itemref: core::option::Option<AttributeValue<'life>>,
29636    ///
29637    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
29638    ///   
29639    pub itemscope: core::option::Option<AttributeValue<'life>>,
29640    ///
29641    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
29642    ///   
29643    pub itemtype: core::option::Option<AttributeValue<'life>>,
29644    ///
29645    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
29646    ///   
29647    pub lang: core::option::Option<AttributeValue<'life>>,
29648    ///
29649    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
29650    ///   
29651    pub nonce: core::option::Option<AttributeValue<'life>>,
29652    ///
29653    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
29654    ///   
29655    pub part: core::option::Option<AttributeValue<'life>>,
29656    ///
29657    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
29658    ///   
29659    pub popover: core::option::Option<AttributeValue<'life>>,
29660    ///
29661    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
29662    ///   
29663    pub role: core::option::Option<AttributeValue<'life>>,
29664    ///
29665    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
29666    ///   
29667    pub slot: core::option::Option<AttributeValue<'life>>,
29668    ///
29669    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
29670    ///     <ul>
29671    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
29672    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
29673    ///     </ul>
29674    ///   
29675    pub spellcheck: core::option::Option<AttributeValue<'life>>,
29676    ///
29677    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
29678    ///   
29679    pub style: core::option::Option<AttributeValue<'life>>,
29680    ///
29681    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
29682    ///     <ul>
29683    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
29684    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
29685    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
29686    ///     </ul>
29687    ///   
29688    pub tabindex: core::option::Option<AttributeValue<'life>>,
29689    ///
29690    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
29691    ///   
29692    pub title: core::option::Option<AttributeValue<'life>>,
29693    ///
29694    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
29695    ///     <ul>
29696    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
29697    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
29698    ///     </ul>
29699    ///   
29700    pub translate: core::option::Option<AttributeValue<'life>>,
29701    ///
29702    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
29703    ///     <ul>
29704    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
29705    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
29706    ///     </ul>
29707    ///   
29708    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
29709}
29710#[allow(deprecated)]
29711
29712impl<'life> Var<'life> {
29713    /// Get the tag name of the element.
29714    /// This is the same as the name of the struct, in kebab-case.
29715    pub fn tag() -> &'static str {
29716        "var"
29717    }
29718    /// Sets an attribute of the element.
29719    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
29720    /// If the `alloc` feature is disabled, this function will silently fail.
29721    ///
29722    /// # Note
29723    /// This only works when the attribute is lowercase.
29724    pub fn set_attr(
29725        &mut self,
29726        name: &'life str,
29727        value: impl core::convert::Into<AttributeValue<'life>>,
29728    ) {
29729        match name {
29730            "accesskey" => self.accesskey = Some(value.into()),
29731            "autocapitalize" => self.autocapitalize = Some(value.into()),
29732            "autofocus" => self.autofocus = Some(value.into()),
29733            "class" => self.class = Some(value.into()),
29734            "contenteditable" => self.contenteditable = Some(value.into()),
29735            "contextmenu" => self.contextmenu = Some(value.into()),
29736            "dir" => self.dir = Some(value.into()),
29737            "draggable" => self.draggable = Some(value.into()),
29738            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
29739            "exportparts" => self.exportparts = Some(value.into()),
29740            "hidden" => self.hidden = Some(value.into()),
29741            "id" => self.id = Some(value.into()),
29742            "inert" => self.inert = Some(value.into()),
29743            "inputmode" => self.inputmode = Some(value.into()),
29744            "is" => self.is = Some(value.into()),
29745            "itemid" => self.itemid = Some(value.into()),
29746            "itemprop" => self.itemprop = Some(value.into()),
29747            "itemref" => self.itemref = Some(value.into()),
29748            "itemscope" => self.itemscope = Some(value.into()),
29749            "itemtype" => self.itemtype = Some(value.into()),
29750            "lang" => self.lang = Some(value.into()),
29751            "nonce" => self.nonce = Some(value.into()),
29752            "part" => self.part = Some(value.into()),
29753            "popover" => self.popover = Some(value.into()),
29754            "role" => self.role = Some(value.into()),
29755            "slot" => self.slot = Some(value.into()),
29756            "spellcheck" => self.spellcheck = Some(value.into()),
29757            "style" => self.style = Some(value.into()),
29758            "tabindex" => self.tabindex = Some(value.into()),
29759            "title" => self.title = Some(value.into()),
29760            "translate" => self.translate = Some(value.into()),
29761            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
29762            #[cfg(feature = "alloc")]
29763            _ => {
29764                #[allow(clippy::useless_conversion)]
29765                self.extra.insert(name.into(), value.into());
29766            }
29767            #[cfg(not(feature = "alloc"))]
29768            _ => {}
29769        }
29770    }
29771}
29772/// The <strong><code>&lt;var&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents the name of a variable in a mathematical expression or a programming context. It's typically presented using an italicized version of the current typeface, although that behavior is browser-dependent.
29773///
29774/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/var>
29775
29776#[cfg(feature = "alloc")]
29777#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
29778pub struct VarOwned {
29779    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
29780    ///   
29781    pub accesskey: core::option::Option<AttributeValueOwned>,
29782    ///
29783    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
29784    ///     <ul>
29785    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
29786    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
29787    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
29788    ///       <li><code>characters</code>, all letters should default to uppercase</li>
29789    ///     </ul>
29790    ///   
29791    pub autocapitalize: core::option::Option<AttributeValueOwned>,
29792    ///
29793    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
29794    ///   
29795    pub autofocus: core::option::Option<AttributeValueOwned>,
29796    ///
29797    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
29798    ///   
29799    pub class: core::option::Option<AttributeValueOwned>,
29800    ///
29801    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
29802    ///     <ul>
29803    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
29804    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
29805    ///     </ul>
29806    ///   
29807    pub contenteditable: core::option::Option<AttributeValueOwned>,
29808    ///
29809    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
29810    ///   
29811    pub contextmenu: core::option::Option<AttributeValueOwned>,
29812    ///
29813    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
29814    ///   
29815    #[cfg(feature = "alloc")]
29816    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
29817    ///
29818    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
29819    ///     <ul>
29820    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
29821    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
29822    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
29823    ///     </ul>
29824    ///   
29825    pub dir: core::option::Option<AttributeValueOwned>,
29826    ///
29827    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
29828    ///     <ul>
29829    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
29830    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
29831    ///     </ul>
29832    ///   
29833    pub draggable: core::option::Option<AttributeValueOwned>,
29834    ///
29835    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
29836    ///   
29837    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
29838    ///
29839    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
29840    ///   
29841    pub exportparts: core::option::Option<AttributeValueOwned>,
29842    /// /// Extra attributes of the element.
29843
29844    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
29845    #[cfg(feature = "alloc")]
29846    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
29847    ///
29848    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
29849    ///   
29850    pub hidden: core::option::Option<AttributeValueOwned>,
29851    ///
29852    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
29853    ///   
29854    pub id: core::option::Option<AttributeValueOwned>,
29855    ///
29856    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
29857    ///   
29858    pub inert: core::option::Option<AttributeValueOwned>,
29859    ///
29860    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
29861    ///   
29862    pub inputmode: core::option::Option<AttributeValueOwned>,
29863    ///
29864    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
29865    ///   
29866    pub is: core::option::Option<AttributeValueOwned>,
29867    ///
29868    ///     <p>The unique, global identifier of an item.</p>
29869    ///   
29870    pub itemid: core::option::Option<AttributeValueOwned>,
29871    ///
29872    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
29873    ///   
29874    pub itemprop: core::option::Option<AttributeValueOwned>,
29875    ///
29876    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
29877    ///   
29878    pub itemref: core::option::Option<AttributeValueOwned>,
29879    ///
29880    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
29881    ///   
29882    pub itemscope: core::option::Option<AttributeValueOwned>,
29883    ///
29884    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
29885    ///   
29886    pub itemtype: core::option::Option<AttributeValueOwned>,
29887    ///
29888    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
29889    ///   
29890    pub lang: core::option::Option<AttributeValueOwned>,
29891    ///
29892    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
29893    ///   
29894    pub nonce: core::option::Option<AttributeValueOwned>,
29895    ///
29896    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
29897    ///   
29898    pub part: core::option::Option<AttributeValueOwned>,
29899    ///
29900    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
29901    ///   
29902    pub popover: core::option::Option<AttributeValueOwned>,
29903    ///
29904    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
29905    ///   
29906    pub role: core::option::Option<AttributeValueOwned>,
29907    ///
29908    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
29909    ///   
29910    pub slot: core::option::Option<AttributeValueOwned>,
29911    ///
29912    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
29913    ///     <ul>
29914    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
29915    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
29916    ///     </ul>
29917    ///   
29918    pub spellcheck: core::option::Option<AttributeValueOwned>,
29919    ///
29920    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
29921    ///   
29922    pub style: core::option::Option<AttributeValueOwned>,
29923    ///
29924    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
29925    ///     <ul>
29926    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
29927    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
29928    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
29929    ///     </ul>
29930    ///   
29931    pub tabindex: core::option::Option<AttributeValueOwned>,
29932    ///
29933    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
29934    ///   
29935    pub title: core::option::Option<AttributeValueOwned>,
29936    ///
29937    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
29938    ///     <ul>
29939    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
29940    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
29941    ///     </ul>
29942    ///   
29943    pub translate: core::option::Option<AttributeValueOwned>,
29944    ///
29945    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
29946    ///     <ul>
29947    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
29948    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
29949    ///     </ul>
29950    ///   
29951    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
29952}
29953#[allow(deprecated)]
29954#[cfg(feature = "alloc")]
29955impl VarOwned {
29956    /// Get the tag name of the element.
29957    /// This is the same as the name of the struct, in kebab-case.
29958    pub fn tag() -> &'static str {
29959        "var"
29960    }
29961    /// Sets an attribute of the element.
29962    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
29963    /// If the `alloc` feature is disabled, this function will silently fail.
29964    ///
29965    /// # Note
29966    /// This only works when the attribute is lowercase.
29967    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
29968        match name {
29969            "accesskey" => self.accesskey = Some(value.into()),
29970            "autocapitalize" => self.autocapitalize = Some(value.into()),
29971            "autofocus" => self.autofocus = Some(value.into()),
29972            "class" => self.class = Some(value.into()),
29973            "contenteditable" => self.contenteditable = Some(value.into()),
29974            "contextmenu" => self.contextmenu = Some(value.into()),
29975            "dir" => self.dir = Some(value.into()),
29976            "draggable" => self.draggable = Some(value.into()),
29977            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
29978            "exportparts" => self.exportparts = Some(value.into()),
29979            "hidden" => self.hidden = Some(value.into()),
29980            "id" => self.id = Some(value.into()),
29981            "inert" => self.inert = Some(value.into()),
29982            "inputmode" => self.inputmode = Some(value.into()),
29983            "is" => self.is = Some(value.into()),
29984            "itemid" => self.itemid = Some(value.into()),
29985            "itemprop" => self.itemprop = Some(value.into()),
29986            "itemref" => self.itemref = Some(value.into()),
29987            "itemscope" => self.itemscope = Some(value.into()),
29988            "itemtype" => self.itemtype = Some(value.into()),
29989            "lang" => self.lang = Some(value.into()),
29990            "nonce" => self.nonce = Some(value.into()),
29991            "part" => self.part = Some(value.into()),
29992            "popover" => self.popover = Some(value.into()),
29993            "role" => self.role = Some(value.into()),
29994            "slot" => self.slot = Some(value.into()),
29995            "spellcheck" => self.spellcheck = Some(value.into()),
29996            "style" => self.style = Some(value.into()),
29997            "tabindex" => self.tabindex = Some(value.into()),
29998            "title" => self.title = Some(value.into()),
29999            "translate" => self.translate = Some(value.into()),
30000            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
30001            #[cfg(feature = "alloc")]
30002            _ => {
30003                #[allow(clippy::useless_conversion)]
30004                self.extra.insert(name.into(), value.into());
30005            }
30006            #[cfg(not(feature = "alloc"))]
30007            _ => {}
30008        }
30009    }
30010}
30011/// The <strong><code>&lt;wbr&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents a word break opportunity—a position within text where the browser may optionally break a line, though its line-breaking rules would not otherwise create a break at that location.
30012///
30013/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/wbr>
30014
30015#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
30016pub struct Wbr<'life> {
30017    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
30018    ///   
30019    pub accesskey: core::option::Option<AttributeValue<'life>>,
30020    ///
30021    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
30022    ///     <ul>
30023    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
30024    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
30025    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
30026    ///       <li><code>characters</code>, all letters should default to uppercase</li>
30027    ///     </ul>
30028    ///   
30029    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
30030    ///
30031    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
30032    ///   
30033    pub autofocus: core::option::Option<AttributeValue<'life>>,
30034    ///
30035    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
30036    ///   
30037    pub class: core::option::Option<AttributeValue<'life>>,
30038    ///
30039    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
30040    ///     <ul>
30041    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
30042    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
30043    ///     </ul>
30044    ///   
30045    pub contenteditable: core::option::Option<AttributeValue<'life>>,
30046    ///
30047    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
30048    ///   
30049    pub contextmenu: core::option::Option<AttributeValue<'life>>,
30050    ///
30051    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
30052    ///   
30053    #[cfg(feature = "alloc")]
30054    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
30055    ///
30056    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
30057    ///     <ul>
30058    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
30059    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
30060    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
30061    ///     </ul>
30062    ///   
30063    pub dir: core::option::Option<AttributeValue<'life>>,
30064    ///
30065    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
30066    ///     <ul>
30067    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
30068    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
30069    ///     </ul>
30070    ///   
30071    pub draggable: core::option::Option<AttributeValue<'life>>,
30072    ///
30073    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
30074    ///   
30075    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
30076    ///
30077    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
30078    ///   
30079    pub exportparts: core::option::Option<AttributeValue<'life>>,
30080    /// /// Extra attributes of the element.
30081
30082    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
30083    #[cfg(feature = "alloc")]
30084    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
30085    ///
30086    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
30087    ///   
30088    pub hidden: core::option::Option<AttributeValue<'life>>,
30089    ///
30090    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
30091    ///   
30092    pub id: core::option::Option<AttributeValue<'life>>,
30093    ///
30094    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
30095    ///   
30096    pub inert: core::option::Option<AttributeValue<'life>>,
30097    ///
30098    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
30099    ///   
30100    pub inputmode: core::option::Option<AttributeValue<'life>>,
30101    ///
30102    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
30103    ///   
30104    pub is: core::option::Option<AttributeValue<'life>>,
30105    ///
30106    ///     <p>The unique, global identifier of an item.</p>
30107    ///   
30108    pub itemid: core::option::Option<AttributeValue<'life>>,
30109    ///
30110    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
30111    ///   
30112    pub itemprop: core::option::Option<AttributeValue<'life>>,
30113    ///
30114    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
30115    ///   
30116    pub itemref: core::option::Option<AttributeValue<'life>>,
30117    ///
30118    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
30119    ///   
30120    pub itemscope: core::option::Option<AttributeValue<'life>>,
30121    ///
30122    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
30123    ///   
30124    pub itemtype: core::option::Option<AttributeValue<'life>>,
30125    ///
30126    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
30127    ///   
30128    pub lang: core::option::Option<AttributeValue<'life>>,
30129    ///
30130    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
30131    ///   
30132    pub nonce: core::option::Option<AttributeValue<'life>>,
30133    ///
30134    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
30135    ///   
30136    pub part: core::option::Option<AttributeValue<'life>>,
30137    ///
30138    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
30139    ///   
30140    pub popover: core::option::Option<AttributeValue<'life>>,
30141    ///
30142    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
30143    ///   
30144    pub role: core::option::Option<AttributeValue<'life>>,
30145    ///
30146    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
30147    ///   
30148    pub slot: core::option::Option<AttributeValue<'life>>,
30149    ///
30150    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
30151    ///     <ul>
30152    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
30153    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
30154    ///     </ul>
30155    ///   
30156    pub spellcheck: core::option::Option<AttributeValue<'life>>,
30157    ///
30158    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
30159    ///   
30160    pub style: core::option::Option<AttributeValue<'life>>,
30161    ///
30162    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
30163    ///     <ul>
30164    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
30165    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
30166    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
30167    ///     </ul>
30168    ///   
30169    pub tabindex: core::option::Option<AttributeValue<'life>>,
30170    ///
30171    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
30172    ///   
30173    pub title: core::option::Option<AttributeValue<'life>>,
30174    ///
30175    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
30176    ///     <ul>
30177    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
30178    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
30179    ///     </ul>
30180    ///   
30181    pub translate: core::option::Option<AttributeValue<'life>>,
30182    ///
30183    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
30184    ///     <ul>
30185    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
30186    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
30187    ///     </ul>
30188    ///   
30189    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
30190}
30191#[allow(deprecated)]
30192
30193impl<'life> Wbr<'life> {
30194    /// Get the tag name of the element.
30195    /// This is the same as the name of the struct, in kebab-case.
30196    pub fn tag() -> &'static str {
30197        "wbr"
30198    }
30199    /// Sets an attribute of the element.
30200    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
30201    /// If the `alloc` feature is disabled, this function will silently fail.
30202    ///
30203    /// # Note
30204    /// This only works when the attribute is lowercase.
30205    pub fn set_attr(
30206        &mut self,
30207        name: &'life str,
30208        value: impl core::convert::Into<AttributeValue<'life>>,
30209    ) {
30210        match name {
30211            "accesskey" => self.accesskey = Some(value.into()),
30212            "autocapitalize" => self.autocapitalize = Some(value.into()),
30213            "autofocus" => self.autofocus = Some(value.into()),
30214            "class" => self.class = Some(value.into()),
30215            "contenteditable" => self.contenteditable = Some(value.into()),
30216            "contextmenu" => self.contextmenu = Some(value.into()),
30217            "dir" => self.dir = Some(value.into()),
30218            "draggable" => self.draggable = Some(value.into()),
30219            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
30220            "exportparts" => self.exportparts = Some(value.into()),
30221            "hidden" => self.hidden = Some(value.into()),
30222            "id" => self.id = Some(value.into()),
30223            "inert" => self.inert = Some(value.into()),
30224            "inputmode" => self.inputmode = Some(value.into()),
30225            "is" => self.is = Some(value.into()),
30226            "itemid" => self.itemid = Some(value.into()),
30227            "itemprop" => self.itemprop = Some(value.into()),
30228            "itemref" => self.itemref = Some(value.into()),
30229            "itemscope" => self.itemscope = Some(value.into()),
30230            "itemtype" => self.itemtype = Some(value.into()),
30231            "lang" => self.lang = Some(value.into()),
30232            "nonce" => self.nonce = Some(value.into()),
30233            "part" => self.part = Some(value.into()),
30234            "popover" => self.popover = Some(value.into()),
30235            "role" => self.role = Some(value.into()),
30236            "slot" => self.slot = Some(value.into()),
30237            "spellcheck" => self.spellcheck = Some(value.into()),
30238            "style" => self.style = Some(value.into()),
30239            "tabindex" => self.tabindex = Some(value.into()),
30240            "title" => self.title = Some(value.into()),
30241            "translate" => self.translate = Some(value.into()),
30242            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
30243            #[cfg(feature = "alloc")]
30244            _ => {
30245                #[allow(clippy::useless_conversion)]
30246                self.extra.insert(name.into(), value.into());
30247            }
30248            #[cfg(not(feature = "alloc"))]
30249            _ => {}
30250        }
30251    }
30252}
30253/// The <strong><code>&lt;wbr&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents a word break opportunity—a position within text where the browser may optionally break a line, though its line-breaking rules would not otherwise create a break at that location.
30254///
30255/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/wbr>
30256
30257#[cfg(feature = "alloc")]
30258#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
30259pub struct WbrOwned {
30260    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
30261    ///   
30262    pub accesskey: core::option::Option<AttributeValueOwned>,
30263    ///
30264    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
30265    ///     <ul>
30266    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
30267    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
30268    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
30269    ///       <li><code>characters</code>, all letters should default to uppercase</li>
30270    ///     </ul>
30271    ///   
30272    pub autocapitalize: core::option::Option<AttributeValueOwned>,
30273    ///
30274    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
30275    ///   
30276    pub autofocus: core::option::Option<AttributeValueOwned>,
30277    ///
30278    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
30279    ///   
30280    pub class: core::option::Option<AttributeValueOwned>,
30281    ///
30282    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
30283    ///     <ul>
30284    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
30285    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
30286    ///     </ul>
30287    ///   
30288    pub contenteditable: core::option::Option<AttributeValueOwned>,
30289    ///
30290    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
30291    ///   
30292    pub contextmenu: core::option::Option<AttributeValueOwned>,
30293    ///
30294    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
30295    ///   
30296    #[cfg(feature = "alloc")]
30297    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
30298    ///
30299    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
30300    ///     <ul>
30301    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
30302    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
30303    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
30304    ///     </ul>
30305    ///   
30306    pub dir: core::option::Option<AttributeValueOwned>,
30307    ///
30308    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
30309    ///     <ul>
30310    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
30311    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
30312    ///     </ul>
30313    ///   
30314    pub draggable: core::option::Option<AttributeValueOwned>,
30315    ///
30316    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
30317    ///   
30318    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
30319    ///
30320    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
30321    ///   
30322    pub exportparts: core::option::Option<AttributeValueOwned>,
30323    /// /// Extra attributes of the element.
30324
30325    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
30326    #[cfg(feature = "alloc")]
30327    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
30328    ///
30329    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
30330    ///   
30331    pub hidden: core::option::Option<AttributeValueOwned>,
30332    ///
30333    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
30334    ///   
30335    pub id: core::option::Option<AttributeValueOwned>,
30336    ///
30337    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
30338    ///   
30339    pub inert: core::option::Option<AttributeValueOwned>,
30340    ///
30341    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
30342    ///   
30343    pub inputmode: core::option::Option<AttributeValueOwned>,
30344    ///
30345    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
30346    ///   
30347    pub is: core::option::Option<AttributeValueOwned>,
30348    ///
30349    ///     <p>The unique, global identifier of an item.</p>
30350    ///   
30351    pub itemid: core::option::Option<AttributeValueOwned>,
30352    ///
30353    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
30354    ///   
30355    pub itemprop: core::option::Option<AttributeValueOwned>,
30356    ///
30357    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
30358    ///   
30359    pub itemref: core::option::Option<AttributeValueOwned>,
30360    ///
30361    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
30362    ///   
30363    pub itemscope: core::option::Option<AttributeValueOwned>,
30364    ///
30365    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
30366    ///   
30367    pub itemtype: core::option::Option<AttributeValueOwned>,
30368    ///
30369    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
30370    ///   
30371    pub lang: core::option::Option<AttributeValueOwned>,
30372    ///
30373    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
30374    ///   
30375    pub nonce: core::option::Option<AttributeValueOwned>,
30376    ///
30377    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
30378    ///   
30379    pub part: core::option::Option<AttributeValueOwned>,
30380    ///
30381    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
30382    ///   
30383    pub popover: core::option::Option<AttributeValueOwned>,
30384    ///
30385    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
30386    ///   
30387    pub role: core::option::Option<AttributeValueOwned>,
30388    ///
30389    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
30390    ///   
30391    pub slot: core::option::Option<AttributeValueOwned>,
30392    ///
30393    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
30394    ///     <ul>
30395    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
30396    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
30397    ///     </ul>
30398    ///   
30399    pub spellcheck: core::option::Option<AttributeValueOwned>,
30400    ///
30401    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
30402    ///   
30403    pub style: core::option::Option<AttributeValueOwned>,
30404    ///
30405    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
30406    ///     <ul>
30407    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
30408    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
30409    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
30410    ///     </ul>
30411    ///   
30412    pub tabindex: core::option::Option<AttributeValueOwned>,
30413    ///
30414    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
30415    ///   
30416    pub title: core::option::Option<AttributeValueOwned>,
30417    ///
30418    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
30419    ///     <ul>
30420    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
30421    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
30422    ///     </ul>
30423    ///   
30424    pub translate: core::option::Option<AttributeValueOwned>,
30425    ///
30426    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
30427    ///     <ul>
30428    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
30429    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
30430    ///     </ul>
30431    ///   
30432    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
30433}
30434#[allow(deprecated)]
30435#[cfg(feature = "alloc")]
30436impl WbrOwned {
30437    /// Get the tag name of the element.
30438    /// This is the same as the name of the struct, in kebab-case.
30439    pub fn tag() -> &'static str {
30440        "wbr"
30441    }
30442    /// Sets an attribute of the element.
30443    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
30444    /// If the `alloc` feature is disabled, this function will silently fail.
30445    ///
30446    /// # Note
30447    /// This only works when the attribute is lowercase.
30448    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
30449        match name {
30450            "accesskey" => self.accesskey = Some(value.into()),
30451            "autocapitalize" => self.autocapitalize = Some(value.into()),
30452            "autofocus" => self.autofocus = Some(value.into()),
30453            "class" => self.class = Some(value.into()),
30454            "contenteditable" => self.contenteditable = Some(value.into()),
30455            "contextmenu" => self.contextmenu = Some(value.into()),
30456            "dir" => self.dir = Some(value.into()),
30457            "draggable" => self.draggable = Some(value.into()),
30458            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
30459            "exportparts" => self.exportparts = Some(value.into()),
30460            "hidden" => self.hidden = Some(value.into()),
30461            "id" => self.id = Some(value.into()),
30462            "inert" => self.inert = Some(value.into()),
30463            "inputmode" => self.inputmode = Some(value.into()),
30464            "is" => self.is = Some(value.into()),
30465            "itemid" => self.itemid = Some(value.into()),
30466            "itemprop" => self.itemprop = Some(value.into()),
30467            "itemref" => self.itemref = Some(value.into()),
30468            "itemscope" => self.itemscope = Some(value.into()),
30469            "itemtype" => self.itemtype = Some(value.into()),
30470            "lang" => self.lang = Some(value.into()),
30471            "nonce" => self.nonce = Some(value.into()),
30472            "part" => self.part = Some(value.into()),
30473            "popover" => self.popover = Some(value.into()),
30474            "role" => self.role = Some(value.into()),
30475            "slot" => self.slot = Some(value.into()),
30476            "spellcheck" => self.spellcheck = Some(value.into()),
30477            "style" => self.style = Some(value.into()),
30478            "tabindex" => self.tabindex = Some(value.into()),
30479            "title" => self.title = Some(value.into()),
30480            "translate" => self.translate = Some(value.into()),
30481            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
30482            #[cfg(feature = "alloc")]
30483            _ => {
30484                #[allow(clippy::useless_conversion)]
30485                self.extra.insert(name.into(), value.into());
30486            }
30487            #[cfg(not(feature = "alloc"))]
30488            _ => {}
30489        }
30490    }
30491}
30492/// The <strong><code>&lt;area&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element defines an area inside an image map that has predefined clickable areas. An <em>image map</em> allows geometric areas on an image to be associated with <a href="/en-US/docs/Glossary/Hyperlink">hypertext links</a>.
30493///
30494/// This element is used only within a <a href="/en-US/docs/Web/HTML/Element/map"><code>&lt;map&gt;</code></a> element.
30495///
30496/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/area>
30497
30498#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
30499pub struct Area<'life> {
30500    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
30501    ///   
30502    pub accesskey: core::option::Option<AttributeValue<'life>>,
30503    ///
30504    ///     <p>
30505    ///       A text string alternative to display on browsers that do not display images.
30506    ///       The text should be phrased so that it presents the user with the same kind of choice as the image would offer when displayed without the alternative text.
30507    ///       This attribute is required only if the <a href="#href"><code>href</code></a> attribute is used.
30508    ///     </p>
30509    ///   
30510    pub alt: core::option::Option<AttributeValue<'life>>,
30511    ///
30512    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
30513    ///     <ul>
30514    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
30515    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
30516    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
30517    ///       <li><code>characters</code>, all letters should default to uppercase</li>
30518    ///     </ul>
30519    ///   
30520    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
30521    ///
30522    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
30523    ///   
30524    pub autofocus: core::option::Option<AttributeValue<'life>>,
30525    ///
30526    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
30527    ///   
30528    pub class: core::option::Option<AttributeValue<'life>>,
30529    ///
30530    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
30531    ///     <ul>
30532    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
30533    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
30534    ///     </ul>
30535    ///   
30536    pub contenteditable: core::option::Option<AttributeValue<'life>>,
30537    ///
30538    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
30539    ///   
30540    pub contextmenu: core::option::Option<AttributeValue<'life>>,
30541    ///
30542    ///     <p>
30543    ///       The <code>coords</code> attribute details the coordinates of the <a href="#shape"><code>shape</code></a> attribute in size, shape, and placement of an <code>&lt;area&gt;</code>.
30544    ///       This attribute must not be used if <code>shape</code> is set to <code>default</code>.
30545    ///     </p>
30546    ///     <ul>
30547    ///       <li>
30548    ///         <code>rect</code>: the value is <code>x1,y1,x2,y2</code>.
30549    ///         The value specifies the coordinates of the top-left and bottom-right corner of the rectangle.
30550    ///         For example, in <code>&lt;area shape="rect" coords="0,0,253,27" href="#" target="_blank" alt="Mozilla"&gt;</code> the coordinates are <code>0,0</code> and <code>253,27</code>, indicating the top-left and bottom-right corners of the rectangle, respectively.
30551    ///       </li>
30552    ///       <li>
30553    ///         <code>circle</code>: the value is <code>x,y,radius</code>. Value specifies the coordinates of the circle center and the radius.
30554    ///         For example: <code>&lt;area shape="circle" coords="130,136,60" href="#" target="_blank" alt="MDN"&gt;</code>
30555    ///       </li>
30556    ///       <li>
30557    ///         <code>poly</code>: the value is <code>x1,y1,x2,y2,..,xn,yn</code>. Value specifies the coordinates of the edges of the polygon.
30558    ///         If the first and last coordinate pairs are not the same, the browser will add the last coordinate pair to close the polygon
30559    ///       </li>
30560    ///     </ul>
30561    ///     <p>The values are numbers of CSS pixels.</p>
30562    ///   
30563    pub coords: core::option::Option<AttributeValue<'life>>,
30564    ///
30565    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
30566    ///   
30567    #[cfg(feature = "alloc")]
30568    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
30569    ///
30570    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
30571    ///     <ul>
30572    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
30573    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
30574    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
30575    ///     </ul>
30576    ///   
30577    pub dir: core::option::Option<AttributeValue<'life>>,
30578    ///
30579    ///     <p>
30580    ///       This attribute, if present, indicates that the author intends the hyperlink to be used for downloading a resource.
30581    ///       See <a href="/en-US/docs/Web/HTML/Element/a"><code>&lt;a&gt;</code></a> for a full description of the <a href="/en-US/docs/Web/HTML/Element/a#download"><code>download</code></a> attribute.
30582    ///     </p>
30583    ///   
30584    pub download: core::option::Option<AttributeValue<'life>>,
30585    ///
30586    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
30587    ///     <ul>
30588    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
30589    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
30590    ///     </ul>
30591    ///   
30592    pub draggable: core::option::Option<AttributeValue<'life>>,
30593    ///
30594    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
30595    ///   
30596    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
30597    ///
30598    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
30599    ///   
30600    pub exportparts: core::option::Option<AttributeValue<'life>>,
30601    /// /// Extra attributes of the element.
30602
30603    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
30604    #[cfg(feature = "alloc")]
30605    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
30606    ///
30607    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
30608    ///   
30609    pub hidden: core::option::Option<AttributeValue<'life>>,
30610    ///
30611    ///     <p>
30612    ///       The hyperlink target for the area.
30613    ///       Its value is a valid URL.
30614    ///       This attribute may be omitted; if so, the <code>&lt;area&gt;</code> element does not represent a hyperlink.
30615    ///     </p>
30616    ///   
30617    pub href: core::option::Option<AttributeValue<'life>>,
30618    ///
30619    ///     <p>
30620    ///       Indicates the language of the linked resource. Allowed values are defined by <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>.
30621    ///       Use this attribute only if the <a href="#href"><code>href</code></a> attribute is present.
30622    ///     </p>
30623    ///   
30624    pub hreflang: core::option::Option<AttributeValue<'life>>,
30625    ///
30626    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
30627    ///   
30628    pub id: core::option::Option<AttributeValue<'life>>,
30629    ///
30630    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
30631    ///   
30632    pub inert: core::option::Option<AttributeValue<'life>>,
30633    ///
30634    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
30635    ///   
30636    pub inputmode: core::option::Option<AttributeValue<'life>>,
30637    ///
30638    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
30639    ///   
30640    pub is: core::option::Option<AttributeValue<'life>>,
30641    ///
30642    ///     <p>The unique, global identifier of an item.</p>
30643    ///   
30644    pub itemid: core::option::Option<AttributeValue<'life>>,
30645    ///
30646    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
30647    ///   
30648    pub itemprop: core::option::Option<AttributeValue<'life>>,
30649    ///
30650    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
30651    ///   
30652    pub itemref: core::option::Option<AttributeValue<'life>>,
30653    ///
30654    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
30655    ///   
30656    pub itemscope: core::option::Option<AttributeValue<'life>>,
30657    ///
30658    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
30659    ///   
30660    pub itemtype: core::option::Option<AttributeValue<'life>>,
30661    ///
30662    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
30663    ///   
30664    pub lang: core::option::Option<AttributeValue<'life>>,
30665    ///
30666    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
30667    ///   
30668    pub nonce: core::option::Option<AttributeValue<'life>>,
30669    ///
30670    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
30671    ///   
30672    pub part: core::option::Option<AttributeValue<'life>>,
30673    ///
30674    ///     <p>
30675    ///       Contains a space-separated list of URLs to which, when the hyperlink is followed, <a href="/en-US/docs/Web/HTTP/Methods/POST"><code>POST</code></a> requests with the body <code>PING</code> will be sent by the browser (in the background).
30676    ///       Typically used for tracking.
30677    ///     </p>
30678    ///   
30679    pub ping: core::option::Option<AttributeValue<'life>>,
30680    ///
30681    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
30682    ///   
30683    pub popover: core::option::Option<AttributeValue<'life>>,
30684    ///
30685    ///     <p>A string indicating which referrer to use when fetching the resource:</p>
30686    ///     <ul>
30687    ///       <li><code>no-referrer</code>: The <a href="/en-US/docs/Web/HTTP/Headers/Referer"><code>Referer</code></a> header will not be sent.</li>
30688    ///       <li><code>no-referrer-when-downgrade</code>: The <a href="/en-US/docs/Web/HTTP/Headers/Referer"><code>Referer</code></a> header will not be sent to <a href="/en-US/docs/Glossary/Origin">origin</a>s without <a href="/en-US/docs/Glossary/TLS">TLS</a> (<a href="/en-US/docs/Glossary/HTTPS">HTTPS</a>).</li>
30689    ///       <li><code>origin</code>: The sent referrer will be limited to the origin of the referring page: its <a href="/en-US/docs/Learn/Common_questions/Web_mechanics/What_is_a_URL">scheme</a>, <a href="/en-US/docs/Glossary/Host">host</a>, and <a href="/en-US/docs/Glossary/Port">port</a>.</li>
30690    ///       <li><code>origin-when-cross-origin</code>: 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.</li>
30691    ///       <li><code>same-origin</code>: A referrer will be sent for <a href="/en-US/docs/Glossary/Same-origin_policy">same origin</a>, but cross-origin requests will contain no referrer information.</li>
30692    ///       <li><code>strict-origin</code>: 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).</li>
30693    ///       <li><code>strict-origin-when-cross-origin</code> (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).</li>
30694    ///       <li>
30695    ///         <code>unsafe-url</code>: The referrer will include the origin <em>and</em> the path (but not the <a href="/en-US/docs/Web/API/HTMLAnchorElement/hash">fragment</a>, <a href="/en-US/docs/Web/API/HTMLAnchorElement/password">password</a>, or <a href="/en-US/docs/Web/API/HTMLAnchorElement/username">username</a>).
30696    ///         <strong>This value is unsafe</strong>, because it leaks origins and paths from TLS-protected resources to insecure origins.
30697    ///       </li>
30698    ///     </ul>
30699    ///   
30700    pub referrerpolicy: core::option::Option<AttributeValue<'life>>,
30701    ///
30702    ///     <p>
30703    ///       For anchors containing the <a href="#href"><code>href</code></a> attribute, this attribute specifies the relationship of the target object to the link object.
30704    ///       The value is a space-separated list of link types.
30705    ///       The values and their semantics will be registered by some authority that might have meaning to the document author.
30706    ///       The default relationship, if no other is given, is void. Use this attribute only if the <a href="#href"><code>href</code></a> attribute is present.
30707    ///     </p>
30708    ///   
30709    pub rel: core::option::Option<AttributeValue<'life>>,
30710    ///
30711    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
30712    ///   
30713    pub role: core::option::Option<AttributeValue<'life>>,
30714    ///
30715    ///     <p>The shape of the associated hot spot. The specifications for HTML defines the values <code>rect</code>, which defines a rectangular region; <code>circle</code>, which defines a circular region; <code>poly</code>, which defines a polygon; and <code>default</code>, which indicates the entire region beyond any defined shapes.</p>
30716    ///   
30717    pub shape: core::option::Option<AttributeValue<'life>>,
30718    ///
30719    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
30720    ///   
30721    pub slot: core::option::Option<AttributeValue<'life>>,
30722    ///
30723    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
30724    ///     <ul>
30725    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
30726    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
30727    ///     </ul>
30728    ///   
30729    pub spellcheck: core::option::Option<AttributeValue<'life>>,
30730    ///
30731    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
30732    ///   
30733    pub style: core::option::Option<AttributeValue<'life>>,
30734    ///
30735    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
30736    ///     <ul>
30737    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
30738    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
30739    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
30740    ///     </ul>
30741    ///   
30742    pub tabindex: core::option::Option<AttributeValue<'life>>,
30743    ///
30744    ///     <p>
30745    ///       A keyword or author-defined name of the <a href="/en-US/docs/Glossary/Browsing_context">browsing context</a> to display the linked resource.
30746    ///       The following keywords have special meanings:
30747    ///     </p>
30748    ///     <ul>
30749    ///       <li><code>_self</code> (default): Show the resource in the current browsing context.</li>
30750    ///       <li><code>_blank</code>: Show the resource in a new, unnamed browsing context.</li>
30751    ///       <li>
30752    ///         <code>_parent</code>: Show the resource in the parent browsing context of the current one, if the current page is inside a frame.
30753    ///         If there is no parent, acts the same as <code>_self</code>.
30754    ///       </li>
30755    ///       <li>
30756    ///         <code>_top</code>: Show the resource in the topmost browsing context (the browsing context that is an ancestor of the current one and has no parent).
30757    ///         If there is no parent, acts the same as <code>_self</code>.
30758    ///       </li>
30759    ///     </ul>
30760    ///     <p>Use this attribute only if the <a href="#href"><code>href</code></a> attribute is present.</p>
30761    ///     <div id="sect1" class="notecard note">
30762    ///       <p><strong>Note:</strong> Setting <code>target="_blank"</code> on <code>&lt;area&gt;</code> elements implicitly provides the same <code>rel</code> behavior as setting <a href="/en-US/docs/Web/HTML/Attributes/rel/noopener"><code>rel="noopener"</code></a> which does not set <code>window.opener</code>. See <a href="#browser_compatibility">browser compatibility</a> for support status.</p>
30763    ///     </div>
30764    ///   
30765    pub target: core::option::Option<AttributeValue<'life>>,
30766    ///
30767    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
30768    ///   
30769    pub title: core::option::Option<AttributeValue<'life>>,
30770    ///
30771    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
30772    ///     <ul>
30773    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
30774    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
30775    ///     </ul>
30776    ///   
30777    pub translate: core::option::Option<AttributeValue<'life>>,
30778    ///
30779    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
30780    ///     <ul>
30781    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
30782    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
30783    ///     </ul>
30784    ///   
30785    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
30786}
30787#[allow(deprecated)]
30788
30789impl<'life> Area<'life> {
30790    /// Get the tag name of the element.
30791    /// This is the same as the name of the struct, in kebab-case.
30792    pub fn tag() -> &'static str {
30793        "area"
30794    }
30795    /// Sets an attribute of the element.
30796    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
30797    /// If the `alloc` feature is disabled, this function will silently fail.
30798    ///
30799    /// # Note
30800    /// This only works when the attribute is lowercase.
30801    pub fn set_attr(
30802        &mut self,
30803        name: &'life str,
30804        value: impl core::convert::Into<AttributeValue<'life>>,
30805    ) {
30806        match name {
30807            "accesskey" => self.accesskey = Some(value.into()),
30808            "alt" => self.alt = Some(value.into()),
30809            "autocapitalize" => self.autocapitalize = Some(value.into()),
30810            "autofocus" => self.autofocus = Some(value.into()),
30811            "class" => self.class = Some(value.into()),
30812            "contenteditable" => self.contenteditable = Some(value.into()),
30813            "contextmenu" => self.contextmenu = Some(value.into()),
30814            "coords" => self.coords = Some(value.into()),
30815            "dir" => self.dir = Some(value.into()),
30816            "download" => self.download = Some(value.into()),
30817            "draggable" => self.draggable = Some(value.into()),
30818            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
30819            "exportparts" => self.exportparts = Some(value.into()),
30820            "hidden" => self.hidden = Some(value.into()),
30821            "href" => self.href = Some(value.into()),
30822            "hreflang" => self.hreflang = Some(value.into()),
30823            "id" => self.id = Some(value.into()),
30824            "inert" => self.inert = Some(value.into()),
30825            "inputmode" => self.inputmode = Some(value.into()),
30826            "is" => self.is = Some(value.into()),
30827            "itemid" => self.itemid = Some(value.into()),
30828            "itemprop" => self.itemprop = Some(value.into()),
30829            "itemref" => self.itemref = Some(value.into()),
30830            "itemscope" => self.itemscope = Some(value.into()),
30831            "itemtype" => self.itemtype = Some(value.into()),
30832            "lang" => self.lang = Some(value.into()),
30833            "nonce" => self.nonce = Some(value.into()),
30834            "part" => self.part = Some(value.into()),
30835            "ping" => self.ping = Some(value.into()),
30836            "popover" => self.popover = Some(value.into()),
30837            "referrerpolicy" => self.referrerpolicy = Some(value.into()),
30838            "rel" => self.rel = Some(value.into()),
30839            "role" => self.role = Some(value.into()),
30840            "shape" => self.shape = Some(value.into()),
30841            "slot" => self.slot = Some(value.into()),
30842            "spellcheck" => self.spellcheck = Some(value.into()),
30843            "style" => self.style = Some(value.into()),
30844            "tabindex" => self.tabindex = Some(value.into()),
30845            "target" => self.target = Some(value.into()),
30846            "title" => self.title = Some(value.into()),
30847            "translate" => self.translate = Some(value.into()),
30848            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
30849            #[cfg(feature = "alloc")]
30850            _ => {
30851                #[allow(clippy::useless_conversion)]
30852                self.extra.insert(name.into(), value.into());
30853            }
30854            #[cfg(not(feature = "alloc"))]
30855            _ => {}
30856        }
30857    }
30858}
30859/// The <strong><code>&lt;area&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element defines an area inside an image map that has predefined clickable areas. An <em>image map</em> allows geometric areas on an image to be associated with <a href="/en-US/docs/Glossary/Hyperlink">hypertext links</a>.
30860///
30861/// This element is used only within a <a href="/en-US/docs/Web/HTML/Element/map"><code>&lt;map&gt;</code></a> element.
30862///
30863/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/area>
30864
30865#[cfg(feature = "alloc")]
30866#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
30867pub struct AreaOwned {
30868    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
30869    ///   
30870    pub accesskey: core::option::Option<AttributeValueOwned>,
30871    ///
30872    ///     <p>
30873    ///       A text string alternative to display on browsers that do not display images.
30874    ///       The text should be phrased so that it presents the user with the same kind of choice as the image would offer when displayed without the alternative text.
30875    ///       This attribute is required only if the <a href="#href"><code>href</code></a> attribute is used.
30876    ///     </p>
30877    ///   
30878    pub alt: core::option::Option<AttributeValueOwned>,
30879    ///
30880    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
30881    ///     <ul>
30882    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
30883    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
30884    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
30885    ///       <li><code>characters</code>, all letters should default to uppercase</li>
30886    ///     </ul>
30887    ///   
30888    pub autocapitalize: core::option::Option<AttributeValueOwned>,
30889    ///
30890    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
30891    ///   
30892    pub autofocus: core::option::Option<AttributeValueOwned>,
30893    ///
30894    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
30895    ///   
30896    pub class: core::option::Option<AttributeValueOwned>,
30897    ///
30898    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
30899    ///     <ul>
30900    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
30901    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
30902    ///     </ul>
30903    ///   
30904    pub contenteditable: core::option::Option<AttributeValueOwned>,
30905    ///
30906    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
30907    ///   
30908    pub contextmenu: core::option::Option<AttributeValueOwned>,
30909    ///
30910    ///     <p>
30911    ///       The <code>coords</code> attribute details the coordinates of the <a href="#shape"><code>shape</code></a> attribute in size, shape, and placement of an <code>&lt;area&gt;</code>.
30912    ///       This attribute must not be used if <code>shape</code> is set to <code>default</code>.
30913    ///     </p>
30914    ///     <ul>
30915    ///       <li>
30916    ///         <code>rect</code>: the value is <code>x1,y1,x2,y2</code>.
30917    ///         The value specifies the coordinates of the top-left and bottom-right corner of the rectangle.
30918    ///         For example, in <code>&lt;area shape="rect" coords="0,0,253,27" href="#" target="_blank" alt="Mozilla"&gt;</code> the coordinates are <code>0,0</code> and <code>253,27</code>, indicating the top-left and bottom-right corners of the rectangle, respectively.
30919    ///       </li>
30920    ///       <li>
30921    ///         <code>circle</code>: the value is <code>x,y,radius</code>. Value specifies the coordinates of the circle center and the radius.
30922    ///         For example: <code>&lt;area shape="circle" coords="130,136,60" href="#" target="_blank" alt="MDN"&gt;</code>
30923    ///       </li>
30924    ///       <li>
30925    ///         <code>poly</code>: the value is <code>x1,y1,x2,y2,..,xn,yn</code>. Value specifies the coordinates of the edges of the polygon.
30926    ///         If the first and last coordinate pairs are not the same, the browser will add the last coordinate pair to close the polygon
30927    ///       </li>
30928    ///     </ul>
30929    ///     <p>The values are numbers of CSS pixels.</p>
30930    ///   
30931    pub coords: core::option::Option<AttributeValueOwned>,
30932    ///
30933    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
30934    ///   
30935    #[cfg(feature = "alloc")]
30936    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
30937    ///
30938    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
30939    ///     <ul>
30940    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
30941    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
30942    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
30943    ///     </ul>
30944    ///   
30945    pub dir: core::option::Option<AttributeValueOwned>,
30946    ///
30947    ///     <p>
30948    ///       This attribute, if present, indicates that the author intends the hyperlink to be used for downloading a resource.
30949    ///       See <a href="/en-US/docs/Web/HTML/Element/a"><code>&lt;a&gt;</code></a> for a full description of the <a href="/en-US/docs/Web/HTML/Element/a#download"><code>download</code></a> attribute.
30950    ///     </p>
30951    ///   
30952    pub download: core::option::Option<AttributeValueOwned>,
30953    ///
30954    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
30955    ///     <ul>
30956    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
30957    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
30958    ///     </ul>
30959    ///   
30960    pub draggable: core::option::Option<AttributeValueOwned>,
30961    ///
30962    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
30963    ///   
30964    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
30965    ///
30966    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
30967    ///   
30968    pub exportparts: core::option::Option<AttributeValueOwned>,
30969    /// /// Extra attributes of the element.
30970
30971    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
30972    #[cfg(feature = "alloc")]
30973    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
30974    ///
30975    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
30976    ///   
30977    pub hidden: core::option::Option<AttributeValueOwned>,
30978    ///
30979    ///     <p>
30980    ///       The hyperlink target for the area.
30981    ///       Its value is a valid URL.
30982    ///       This attribute may be omitted; if so, the <code>&lt;area&gt;</code> element does not represent a hyperlink.
30983    ///     </p>
30984    ///   
30985    pub href: core::option::Option<AttributeValueOwned>,
30986    ///
30987    ///     <p>
30988    ///       Indicates the language of the linked resource. Allowed values are defined by <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>.
30989    ///       Use this attribute only if the <a href="#href"><code>href</code></a> attribute is present.
30990    ///     </p>
30991    ///   
30992    pub hreflang: core::option::Option<AttributeValueOwned>,
30993    ///
30994    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
30995    ///   
30996    pub id: core::option::Option<AttributeValueOwned>,
30997    ///
30998    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
30999    ///   
31000    pub inert: core::option::Option<AttributeValueOwned>,
31001    ///
31002    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
31003    ///   
31004    pub inputmode: core::option::Option<AttributeValueOwned>,
31005    ///
31006    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
31007    ///   
31008    pub is: core::option::Option<AttributeValueOwned>,
31009    ///
31010    ///     <p>The unique, global identifier of an item.</p>
31011    ///   
31012    pub itemid: core::option::Option<AttributeValueOwned>,
31013    ///
31014    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
31015    ///   
31016    pub itemprop: core::option::Option<AttributeValueOwned>,
31017    ///
31018    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
31019    ///   
31020    pub itemref: core::option::Option<AttributeValueOwned>,
31021    ///
31022    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
31023    ///   
31024    pub itemscope: core::option::Option<AttributeValueOwned>,
31025    ///
31026    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
31027    ///   
31028    pub itemtype: core::option::Option<AttributeValueOwned>,
31029    ///
31030    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
31031    ///   
31032    pub lang: core::option::Option<AttributeValueOwned>,
31033    ///
31034    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
31035    ///   
31036    pub nonce: core::option::Option<AttributeValueOwned>,
31037    ///
31038    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
31039    ///   
31040    pub part: core::option::Option<AttributeValueOwned>,
31041    ///
31042    ///     <p>
31043    ///       Contains a space-separated list of URLs to which, when the hyperlink is followed, <a href="/en-US/docs/Web/HTTP/Methods/POST"><code>POST</code></a> requests with the body <code>PING</code> will be sent by the browser (in the background).
31044    ///       Typically used for tracking.
31045    ///     </p>
31046    ///   
31047    pub ping: core::option::Option<AttributeValueOwned>,
31048    ///
31049    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
31050    ///   
31051    pub popover: core::option::Option<AttributeValueOwned>,
31052    ///
31053    ///     <p>A string indicating which referrer to use when fetching the resource:</p>
31054    ///     <ul>
31055    ///       <li><code>no-referrer</code>: The <a href="/en-US/docs/Web/HTTP/Headers/Referer"><code>Referer</code></a> header will not be sent.</li>
31056    ///       <li><code>no-referrer-when-downgrade</code>: The <a href="/en-US/docs/Web/HTTP/Headers/Referer"><code>Referer</code></a> header will not be sent to <a href="/en-US/docs/Glossary/Origin">origin</a>s without <a href="/en-US/docs/Glossary/TLS">TLS</a> (<a href="/en-US/docs/Glossary/HTTPS">HTTPS</a>).</li>
31057    ///       <li><code>origin</code>: The sent referrer will be limited to the origin of the referring page: its <a href="/en-US/docs/Learn/Common_questions/Web_mechanics/What_is_a_URL">scheme</a>, <a href="/en-US/docs/Glossary/Host">host</a>, and <a href="/en-US/docs/Glossary/Port">port</a>.</li>
31058    ///       <li><code>origin-when-cross-origin</code>: 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.</li>
31059    ///       <li><code>same-origin</code>: A referrer will be sent for <a href="/en-US/docs/Glossary/Same-origin_policy">same origin</a>, but cross-origin requests will contain no referrer information.</li>
31060    ///       <li><code>strict-origin</code>: 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).</li>
31061    ///       <li><code>strict-origin-when-cross-origin</code> (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).</li>
31062    ///       <li>
31063    ///         <code>unsafe-url</code>: The referrer will include the origin <em>and</em> the path (but not the <a href="/en-US/docs/Web/API/HTMLAnchorElement/hash">fragment</a>, <a href="/en-US/docs/Web/API/HTMLAnchorElement/password">password</a>, or <a href="/en-US/docs/Web/API/HTMLAnchorElement/username">username</a>).
31064    ///         <strong>This value is unsafe</strong>, because it leaks origins and paths from TLS-protected resources to insecure origins.
31065    ///       </li>
31066    ///     </ul>
31067    ///   
31068    pub referrerpolicy: core::option::Option<AttributeValueOwned>,
31069    ///
31070    ///     <p>
31071    ///       For anchors containing the <a href="#href"><code>href</code></a> attribute, this attribute specifies the relationship of the target object to the link object.
31072    ///       The value is a space-separated list of link types.
31073    ///       The values and their semantics will be registered by some authority that might have meaning to the document author.
31074    ///       The default relationship, if no other is given, is void. Use this attribute only if the <a href="#href"><code>href</code></a> attribute is present.
31075    ///     </p>
31076    ///   
31077    pub rel: core::option::Option<AttributeValueOwned>,
31078    ///
31079    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
31080    ///   
31081    pub role: core::option::Option<AttributeValueOwned>,
31082    ///
31083    ///     <p>The shape of the associated hot spot. The specifications for HTML defines the values <code>rect</code>, which defines a rectangular region; <code>circle</code>, which defines a circular region; <code>poly</code>, which defines a polygon; and <code>default</code>, which indicates the entire region beyond any defined shapes.</p>
31084    ///   
31085    pub shape: core::option::Option<AttributeValueOwned>,
31086    ///
31087    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
31088    ///   
31089    pub slot: core::option::Option<AttributeValueOwned>,
31090    ///
31091    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
31092    ///     <ul>
31093    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
31094    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
31095    ///     </ul>
31096    ///   
31097    pub spellcheck: core::option::Option<AttributeValueOwned>,
31098    ///
31099    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
31100    ///   
31101    pub style: core::option::Option<AttributeValueOwned>,
31102    ///
31103    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
31104    ///     <ul>
31105    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
31106    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
31107    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
31108    ///     </ul>
31109    ///   
31110    pub tabindex: core::option::Option<AttributeValueOwned>,
31111    ///
31112    ///     <p>
31113    ///       A keyword or author-defined name of the <a href="/en-US/docs/Glossary/Browsing_context">browsing context</a> to display the linked resource.
31114    ///       The following keywords have special meanings:
31115    ///     </p>
31116    ///     <ul>
31117    ///       <li><code>_self</code> (default): Show the resource in the current browsing context.</li>
31118    ///       <li><code>_blank</code>: Show the resource in a new, unnamed browsing context.</li>
31119    ///       <li>
31120    ///         <code>_parent</code>: Show the resource in the parent browsing context of the current one, if the current page is inside a frame.
31121    ///         If there is no parent, acts the same as <code>_self</code>.
31122    ///       </li>
31123    ///       <li>
31124    ///         <code>_top</code>: Show the resource in the topmost browsing context (the browsing context that is an ancestor of the current one and has no parent).
31125    ///         If there is no parent, acts the same as <code>_self</code>.
31126    ///       </li>
31127    ///     </ul>
31128    ///     <p>Use this attribute only if the <a href="#href"><code>href</code></a> attribute is present.</p>
31129    ///     <div id="sect1" class="notecard note">
31130    ///       <p><strong>Note:</strong> Setting <code>target="_blank"</code> on <code>&lt;area&gt;</code> elements implicitly provides the same <code>rel</code> behavior as setting <a href="/en-US/docs/Web/HTML/Attributes/rel/noopener"><code>rel="noopener"</code></a> which does not set <code>window.opener</code>. See <a href="#browser_compatibility">browser compatibility</a> for support status.</p>
31131    ///     </div>
31132    ///   
31133    pub target: core::option::Option<AttributeValueOwned>,
31134    ///
31135    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
31136    ///   
31137    pub title: core::option::Option<AttributeValueOwned>,
31138    ///
31139    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
31140    ///     <ul>
31141    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
31142    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
31143    ///     </ul>
31144    ///   
31145    pub translate: core::option::Option<AttributeValueOwned>,
31146    ///
31147    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
31148    ///     <ul>
31149    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
31150    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
31151    ///     </ul>
31152    ///   
31153    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
31154}
31155#[allow(deprecated)]
31156#[cfg(feature = "alloc")]
31157impl AreaOwned {
31158    /// Get the tag name of the element.
31159    /// This is the same as the name of the struct, in kebab-case.
31160    pub fn tag() -> &'static str {
31161        "area"
31162    }
31163    /// Sets an attribute of the element.
31164    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
31165    /// If the `alloc` feature is disabled, this function will silently fail.
31166    ///
31167    /// # Note
31168    /// This only works when the attribute is lowercase.
31169    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
31170        match name {
31171            "accesskey" => self.accesskey = Some(value.into()),
31172            "alt" => self.alt = Some(value.into()),
31173            "autocapitalize" => self.autocapitalize = Some(value.into()),
31174            "autofocus" => self.autofocus = Some(value.into()),
31175            "class" => self.class = Some(value.into()),
31176            "contenteditable" => self.contenteditable = Some(value.into()),
31177            "contextmenu" => self.contextmenu = Some(value.into()),
31178            "coords" => self.coords = Some(value.into()),
31179            "dir" => self.dir = Some(value.into()),
31180            "download" => self.download = Some(value.into()),
31181            "draggable" => self.draggable = Some(value.into()),
31182            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
31183            "exportparts" => self.exportparts = Some(value.into()),
31184            "hidden" => self.hidden = Some(value.into()),
31185            "href" => self.href = Some(value.into()),
31186            "hreflang" => self.hreflang = Some(value.into()),
31187            "id" => self.id = Some(value.into()),
31188            "inert" => self.inert = Some(value.into()),
31189            "inputmode" => self.inputmode = Some(value.into()),
31190            "is" => self.is = Some(value.into()),
31191            "itemid" => self.itemid = Some(value.into()),
31192            "itemprop" => self.itemprop = Some(value.into()),
31193            "itemref" => self.itemref = Some(value.into()),
31194            "itemscope" => self.itemscope = Some(value.into()),
31195            "itemtype" => self.itemtype = Some(value.into()),
31196            "lang" => self.lang = Some(value.into()),
31197            "nonce" => self.nonce = Some(value.into()),
31198            "part" => self.part = Some(value.into()),
31199            "ping" => self.ping = Some(value.into()),
31200            "popover" => self.popover = Some(value.into()),
31201            "referrerpolicy" => self.referrerpolicy = Some(value.into()),
31202            "rel" => self.rel = Some(value.into()),
31203            "role" => self.role = Some(value.into()),
31204            "shape" => self.shape = Some(value.into()),
31205            "slot" => self.slot = Some(value.into()),
31206            "spellcheck" => self.spellcheck = Some(value.into()),
31207            "style" => self.style = Some(value.into()),
31208            "tabindex" => self.tabindex = Some(value.into()),
31209            "target" => self.target = Some(value.into()),
31210            "title" => self.title = Some(value.into()),
31211            "translate" => self.translate = Some(value.into()),
31212            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
31213            #[cfg(feature = "alloc")]
31214            _ => {
31215                #[allow(clippy::useless_conversion)]
31216                self.extra.insert(name.into(), value.into());
31217            }
31218            #[cfg(not(feature = "alloc"))]
31219            _ => {}
31220        }
31221    }
31222}
31223/// The <strong><code>&lt;audio&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element is used to embed sound content in documents. It may contain one or more audio sources, represented using the <code>src</code> attribute or the <a href="/en-US/docs/Web/HTML/Element/source"><code>&lt;source&gt;</code></a> element: the browser will choose the most suitable one. It can also be the destination for streamed media, using a <a href="/en-US/docs/Web/API/MediaStream"><code>MediaStream</code></a>.
31224///
31225/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio>
31226
31227#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
31228pub struct Audio<'life> {
31229    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
31230    ///   
31231    pub accesskey: core::option::Option<AttributeValue<'life>>,
31232    ///
31233    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
31234    ///     <ul>
31235    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
31236    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
31237    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
31238    ///       <li><code>characters</code>, all letters should default to uppercase</li>
31239    ///     </ul>
31240    ///   
31241    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
31242    ///
31243    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
31244    ///   
31245    pub autofocus: core::option::Option<AttributeValue<'life>>,
31246    ///
31247    ///     <p>A Boolean attribute: if specified, the audio will automatically begin playback as soon as it can do so, without waiting for the entire audio file to finish downloading.</p>
31248    ///     <div class="notecard note" id="sect1">
31249    ///       <p><strong>Note:</strong> Sites that automatically play audio (or videos with an audio track) can be an unpleasant experience for users, so should be avoided when possible. If you must offer autoplay functionality, you should make it opt-in (requiring a user to specifically enable it). However, this can be useful when creating media elements whose source will be set at a later time, under user control. See our <a href="/en-US/docs/Web/Media/Autoplay_guide">autoplay guide</a> for additional information about how to properly use autoplay.</p>
31250    ///     </div>
31251    ///   
31252    pub autoplay: core::option::Option<AttributeValue<'life>>,
31253    ///
31254    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
31255    ///   
31256    pub class: core::option::Option<AttributeValue<'life>>,
31257    ///
31258    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
31259    ///     <ul>
31260    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
31261    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
31262    ///     </ul>
31263    ///   
31264    pub contenteditable: core::option::Option<AttributeValue<'life>>,
31265    ///
31266    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
31267    ///   
31268    pub contextmenu: core::option::Option<AttributeValue<'life>>,
31269    ///
31270    ///     <p>If this attribute is present, the browser will offer controls to allow the user to control audio playback, including volume, seeking, and pause/resume playback.</p>
31271    ///   
31272    pub controls: core::option::Option<AttributeValue<'life>>,
31273    ///
31274    ///     <p>The <a class="external" target="_blank" href="https://wicg.github.io/controls-list/explainer.html"><code>controlslist</code></a> attribute, when specified, helps the browser select what controls to show for the <code>audio</code> element whenever the browser shows its own set of controls (that is, when the <code>controls</code> attribute is specified).</p>
31275    ///     <p>The allowed values are <code>nodownload</code>, <code>nofullscreen</code> and <code>noremoteplayback</code>.</p>
31276    ///   
31277    pub controlslist: core::option::Option<AttributeValue<'life>>,
31278    ///
31279    ///     <p>This <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicates whether to use CORS to fetch the related audio file. <a href="/en-US/docs/Web/HTML/CORS_enabled_image">CORS-enabled resources</a> can be reused in the <a href="/en-US/docs/Web/HTML/Element/canvas"><code>&lt;canvas&gt;</code></a> element without being <em>tainted</em>. The allowed values are:</p>
31280    ///     <dl>
31281    ///       <dt id="anonymous"><code>anonymous</code></dt>
31282    ///       <dd>
31283    ///         <p>Sends a cross-origin request without a credential. In other words, it sends the <code>Origin:</code> HTTP header without a cookie, X.509 certificate, or performing HTTP Basic authentication. If the server does not give credentials to the origin site (by not setting the <code>Access-Control-Allow-Origin:</code> HTTP header), the resource will be <em>tainted</em>, and its usage restricted.</p>
31284    ///       </dd>
31285    ///       <dt id="use-credentials"><code>use-credentials</code></dt>
31286    ///       <dd>
31287    ///         <p>Sends a cross-origin request with a credential. In other words, it sends the <code>Origin:</code> HTTP header with a cookie, a certificate, or performing HTTP Basic authentication. If the server does not give credentials to the origin site (through <code>Access-Control-Allow-Credentials:</code> HTTP header), the resource will be <em>tainted</em> and its usage restricted.</p>
31288    ///       </dd>
31289    ///     </dl>
31290    ///     <p>When not present, the resource is fetched without a CORS request (i.e. without sending the <code>Origin:</code> HTTP header), preventing its non-tainted use in <a href="/en-US/docs/Web/HTML/Element/canvas"><code>&lt;canvas&gt;</code></a> elements. If invalid, it is handled as if the enumerated keyword <strong>anonymous</strong> was used. See <a href="/en-US/docs/Web/HTML/Attributes/crossorigin">CORS settings attributes</a> for additional information.</p>
31291    ///   
31292    pub crossorigin: core::option::Option<AttributeValue<'life>>,
31293    ///
31294    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
31295    ///   
31296    #[cfg(feature = "alloc")]
31297    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
31298    ///
31299    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
31300    ///     <ul>
31301    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
31302    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
31303    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
31304    ///     </ul>
31305    ///   
31306    pub dir: core::option::Option<AttributeValue<'life>>,
31307    ///
31308    ///     <p>A Boolean attribute used to disable the capability of remote playback in devices that are attached using wired (HDMI, DVI, etc.) and wireless technologies (Miracast, Chromecast, DLNA, AirPlay, etc.). See <a href="https://www.w3.org/TR/remote-playback/#the-disableremoteplayback-attribute" class="external" target="_blank">this proposed specification</a> for more information.</p>
31309    ///     <div id="sect2" class="notecard note">
31310    ///       <p><strong>Note:</strong> In Safari, you can use <a class="external" target="_blank" href="https://developer.apple.com/library/archive/documentation/AudioVideo/Conceptual/AirPlayGuide/OptingInorOutofAirPlay/OptingInorOutofAirPlay.html"><code>x-webkit-airplay="deny"</code></a> as a fallback.</p>
31311    ///     </div>
31312    ///   
31313    pub disableremoteplayback: core::option::Option<AttributeValue<'life>>,
31314    ///
31315    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
31316    ///     <ul>
31317    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
31318    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
31319    ///     </ul>
31320    ///   
31321    pub draggable: core::option::Option<AttributeValue<'life>>,
31322    ///
31323    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
31324    ///   
31325    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
31326    ///
31327    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
31328    ///   
31329    pub exportparts: core::option::Option<AttributeValue<'life>>,
31330    /// /// Extra attributes of the element.
31331
31332    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
31333    #[cfg(feature = "alloc")]
31334    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
31335    ///
31336    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
31337    ///   
31338    pub hidden: core::option::Option<AttributeValue<'life>>,
31339    ///
31340    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
31341    ///   
31342    pub id: core::option::Option<AttributeValue<'life>>,
31343    ///
31344    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
31345    ///   
31346    pub inert: core::option::Option<AttributeValue<'life>>,
31347    ///
31348    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
31349    ///   
31350    pub inputmode: core::option::Option<AttributeValue<'life>>,
31351    ///
31352    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
31353    ///   
31354    pub is: core::option::Option<AttributeValue<'life>>,
31355    ///
31356    ///     <p>The unique, global identifier of an item.</p>
31357    ///   
31358    pub itemid: core::option::Option<AttributeValue<'life>>,
31359    ///
31360    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
31361    ///   
31362    pub itemprop: core::option::Option<AttributeValue<'life>>,
31363    ///
31364    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
31365    ///   
31366    pub itemref: core::option::Option<AttributeValue<'life>>,
31367    ///
31368    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
31369    ///   
31370    pub itemscope: core::option::Option<AttributeValue<'life>>,
31371    ///
31372    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
31373    ///   
31374    pub itemtype: core::option::Option<AttributeValue<'life>>,
31375    ///
31376    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
31377    ///   
31378    pub lang: core::option::Option<AttributeValue<'life>>,
31379    ///
31380    ///     <p>A Boolean attribute: if specified, the audio player will automatically seek back to the start upon reaching the end of the audio.</p>
31381    ///   
31382    pub loop_: core::option::Option<AttributeValue<'life>>,
31383    ///
31384    ///     <p>A Boolean attribute that indicates whether the audio will be initially silenced. Its default value is <code>false</code>.</p>
31385    ///   
31386    pub muted: core::option::Option<AttributeValue<'life>>,
31387    ///
31388    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
31389    ///   
31390    pub nonce: core::option::Option<AttributeValue<'life>>,
31391    ///
31392    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
31393    ///   
31394    pub part: core::option::Option<AttributeValue<'life>>,
31395    ///
31396    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
31397    ///   
31398    pub popover: core::option::Option<AttributeValue<'life>>,
31399    ///
31400    ///     <p>This <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> 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:</p>
31401    ///     <ul>
31402    ///       <li><code>none</code>: Indicates that the audio should not be preloaded.</li>
31403    ///       <li><code>metadata</code>: Indicates that only audio metadata (e.g. length) is fetched.</li>
31404    ///       <li><code>auto</code>: Indicates that the whole audio file can be downloaded, even if the user is not expected to use it.</li>
31405    ///       <li><em>empty string</em>: A synonym of the <code>auto</code> value.</li>
31406    ///     </ul>
31407    ///     <p>The default value is different for each browser. The spec advises it to be set to <code>metadata</code>.</p>
31408    ///     <div id="sect3" class="notecard note">
31409    ///       <p><strong>Note:</strong></p>
31410    ///       <ul>
31411    ///         <li>The <code>autoplay</code> attribute has precedence over <code>preload</code>. If <code>autoplay</code> is specified, the browser would obviously need to start downloading the audio for playback.</li>
31412    ///         <li>The browser is not forced by the specification to follow the value of this attribute; it is a mere hint.</li>
31413    ///       </ul>
31414    ///     </div>
31415    ///   
31416    pub preload: core::option::Option<AttributeValue<'life>>,
31417    ///
31418    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
31419    ///   
31420    pub role: core::option::Option<AttributeValue<'life>>,
31421    ///
31422    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
31423    ///   
31424    pub slot: core::option::Option<AttributeValue<'life>>,
31425    ///
31426    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
31427    ///     <ul>
31428    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
31429    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
31430    ///     </ul>
31431    ///   
31432    pub spellcheck: core::option::Option<AttributeValue<'life>>,
31433    ///
31434    ///     <p>The URL of the audio to embed. This is subject to <a href="/en-US/docs/Web/HTTP/CORS">HTTP access controls</a>. This is optional; you may instead use the <a href="/en-US/docs/Web/HTML/Element/source"><code>&lt;source&gt;</code></a> element within the audio block to specify the audio to embed.</p>
31435    ///   
31436    pub src: core::option::Option<AttributeValue<'life>>,
31437    ///
31438    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
31439    ///   
31440    pub style: core::option::Option<AttributeValue<'life>>,
31441    ///
31442    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
31443    ///     <ul>
31444    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
31445    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
31446    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
31447    ///     </ul>
31448    ///   
31449    pub tabindex: core::option::Option<AttributeValue<'life>>,
31450    ///
31451    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
31452    ///   
31453    pub title: core::option::Option<AttributeValue<'life>>,
31454    ///
31455    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
31456    ///     <ul>
31457    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
31458    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
31459    ///     </ul>
31460    ///   
31461    pub translate: core::option::Option<AttributeValue<'life>>,
31462    ///
31463    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
31464    ///     <ul>
31465    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
31466    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
31467    ///     </ul>
31468    ///   
31469    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
31470}
31471#[allow(deprecated)]
31472
31473impl<'life> Audio<'life> {
31474    /// Get the tag name of the element.
31475    /// This is the same as the name of the struct, in kebab-case.
31476    pub fn tag() -> &'static str {
31477        "audio"
31478    }
31479    /// Sets an attribute of the element.
31480    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
31481    /// If the `alloc` feature is disabled, this function will silently fail.
31482    ///
31483    /// # Note
31484    /// This only works when the attribute is lowercase.
31485    pub fn set_attr(
31486        &mut self,
31487        name: &'life str,
31488        value: impl core::convert::Into<AttributeValue<'life>>,
31489    ) {
31490        match name {
31491            "accesskey" => self.accesskey = Some(value.into()),
31492            "autocapitalize" => self.autocapitalize = Some(value.into()),
31493            "autofocus" => self.autofocus = Some(value.into()),
31494            "autoplay" => self.autoplay = Some(value.into()),
31495            "class" => self.class = Some(value.into()),
31496            "contenteditable" => self.contenteditable = Some(value.into()),
31497            "contextmenu" => self.contextmenu = Some(value.into()),
31498            "controls" => self.controls = Some(value.into()),
31499            "controlslist" => self.controlslist = Some(value.into()),
31500            "crossorigin" => self.crossorigin = Some(value.into()),
31501            "dir" => self.dir = Some(value.into()),
31502            "disableremoteplayback" => self.disableremoteplayback = Some(value.into()),
31503            "draggable" => self.draggable = Some(value.into()),
31504            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
31505            "exportparts" => self.exportparts = Some(value.into()),
31506            "hidden" => self.hidden = Some(value.into()),
31507            "id" => self.id = Some(value.into()),
31508            "inert" => self.inert = Some(value.into()),
31509            "inputmode" => self.inputmode = Some(value.into()),
31510            "is" => self.is = Some(value.into()),
31511            "itemid" => self.itemid = Some(value.into()),
31512            "itemprop" => self.itemprop = Some(value.into()),
31513            "itemref" => self.itemref = Some(value.into()),
31514            "itemscope" => self.itemscope = Some(value.into()),
31515            "itemtype" => self.itemtype = Some(value.into()),
31516            "lang" => self.lang = Some(value.into()),
31517            "loop_" => self.loop_ = Some(value.into()),
31518            "muted" => self.muted = Some(value.into()),
31519            "nonce" => self.nonce = Some(value.into()),
31520            "part" => self.part = Some(value.into()),
31521            "popover" => self.popover = Some(value.into()),
31522            "preload" => self.preload = Some(value.into()),
31523            "role" => self.role = Some(value.into()),
31524            "slot" => self.slot = Some(value.into()),
31525            "spellcheck" => self.spellcheck = Some(value.into()),
31526            "src" => self.src = Some(value.into()),
31527            "style" => self.style = Some(value.into()),
31528            "tabindex" => self.tabindex = Some(value.into()),
31529            "title" => self.title = Some(value.into()),
31530            "translate" => self.translate = Some(value.into()),
31531            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
31532            #[cfg(feature = "alloc")]
31533            _ => {
31534                #[allow(clippy::useless_conversion)]
31535                self.extra.insert(name.into(), value.into());
31536            }
31537            #[cfg(not(feature = "alloc"))]
31538            _ => {}
31539        }
31540    }
31541}
31542/// The <strong><code>&lt;audio&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element is used to embed sound content in documents. It may contain one or more audio sources, represented using the <code>src</code> attribute or the <a href="/en-US/docs/Web/HTML/Element/source"><code>&lt;source&gt;</code></a> element: the browser will choose the most suitable one. It can also be the destination for streamed media, using a <a href="/en-US/docs/Web/API/MediaStream"><code>MediaStream</code></a>.
31543///
31544/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio>
31545
31546#[cfg(feature = "alloc")]
31547#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
31548pub struct AudioOwned {
31549    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
31550    ///   
31551    pub accesskey: core::option::Option<AttributeValueOwned>,
31552    ///
31553    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
31554    ///     <ul>
31555    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
31556    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
31557    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
31558    ///       <li><code>characters</code>, all letters should default to uppercase</li>
31559    ///     </ul>
31560    ///   
31561    pub autocapitalize: core::option::Option<AttributeValueOwned>,
31562    ///
31563    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
31564    ///   
31565    pub autofocus: core::option::Option<AttributeValueOwned>,
31566    ///
31567    ///     <p>A Boolean attribute: if specified, the audio will automatically begin playback as soon as it can do so, without waiting for the entire audio file to finish downloading.</p>
31568    ///     <div class="notecard note" id="sect1">
31569    ///       <p><strong>Note:</strong> Sites that automatically play audio (or videos with an audio track) can be an unpleasant experience for users, so should be avoided when possible. If you must offer autoplay functionality, you should make it opt-in (requiring a user to specifically enable it). However, this can be useful when creating media elements whose source will be set at a later time, under user control. See our <a href="/en-US/docs/Web/Media/Autoplay_guide">autoplay guide</a> for additional information about how to properly use autoplay.</p>
31570    ///     </div>
31571    ///   
31572    pub autoplay: core::option::Option<AttributeValueOwned>,
31573    ///
31574    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
31575    ///   
31576    pub class: core::option::Option<AttributeValueOwned>,
31577    ///
31578    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
31579    ///     <ul>
31580    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
31581    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
31582    ///     </ul>
31583    ///   
31584    pub contenteditable: core::option::Option<AttributeValueOwned>,
31585    ///
31586    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
31587    ///   
31588    pub contextmenu: core::option::Option<AttributeValueOwned>,
31589    ///
31590    ///     <p>If this attribute is present, the browser will offer controls to allow the user to control audio playback, including volume, seeking, and pause/resume playback.</p>
31591    ///   
31592    pub controls: core::option::Option<AttributeValueOwned>,
31593    ///
31594    ///     <p>The <a class="external" target="_blank" href="https://wicg.github.io/controls-list/explainer.html"><code>controlslist</code></a> attribute, when specified, helps the browser select what controls to show for the <code>audio</code> element whenever the browser shows its own set of controls (that is, when the <code>controls</code> attribute is specified).</p>
31595    ///     <p>The allowed values are <code>nodownload</code>, <code>nofullscreen</code> and <code>noremoteplayback</code>.</p>
31596    ///   
31597    pub controlslist: core::option::Option<AttributeValueOwned>,
31598    ///
31599    ///     <p>This <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicates whether to use CORS to fetch the related audio file. <a href="/en-US/docs/Web/HTML/CORS_enabled_image">CORS-enabled resources</a> can be reused in the <a href="/en-US/docs/Web/HTML/Element/canvas"><code>&lt;canvas&gt;</code></a> element without being <em>tainted</em>. The allowed values are:</p>
31600    ///     <dl>
31601    ///       <dt id="anonymous"><code>anonymous</code></dt>
31602    ///       <dd>
31603    ///         <p>Sends a cross-origin request without a credential. In other words, it sends the <code>Origin:</code> HTTP header without a cookie, X.509 certificate, or performing HTTP Basic authentication. If the server does not give credentials to the origin site (by not setting the <code>Access-Control-Allow-Origin:</code> HTTP header), the resource will be <em>tainted</em>, and its usage restricted.</p>
31604    ///       </dd>
31605    ///       <dt id="use-credentials"><code>use-credentials</code></dt>
31606    ///       <dd>
31607    ///         <p>Sends a cross-origin request with a credential. In other words, it sends the <code>Origin:</code> HTTP header with a cookie, a certificate, or performing HTTP Basic authentication. If the server does not give credentials to the origin site (through <code>Access-Control-Allow-Credentials:</code> HTTP header), the resource will be <em>tainted</em> and its usage restricted.</p>
31608    ///       </dd>
31609    ///     </dl>
31610    ///     <p>When not present, the resource is fetched without a CORS request (i.e. without sending the <code>Origin:</code> HTTP header), preventing its non-tainted use in <a href="/en-US/docs/Web/HTML/Element/canvas"><code>&lt;canvas&gt;</code></a> elements. If invalid, it is handled as if the enumerated keyword <strong>anonymous</strong> was used. See <a href="/en-US/docs/Web/HTML/Attributes/crossorigin">CORS settings attributes</a> for additional information.</p>
31611    ///   
31612    pub crossorigin: core::option::Option<AttributeValueOwned>,
31613    ///
31614    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
31615    ///   
31616    #[cfg(feature = "alloc")]
31617    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
31618    ///
31619    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
31620    ///     <ul>
31621    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
31622    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
31623    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
31624    ///     </ul>
31625    ///   
31626    pub dir: core::option::Option<AttributeValueOwned>,
31627    ///
31628    ///     <p>A Boolean attribute used to disable the capability of remote playback in devices that are attached using wired (HDMI, DVI, etc.) and wireless technologies (Miracast, Chromecast, DLNA, AirPlay, etc.). See <a href="https://www.w3.org/TR/remote-playback/#the-disableremoteplayback-attribute" class="external" target="_blank">this proposed specification</a> for more information.</p>
31629    ///     <div id="sect2" class="notecard note">
31630    ///       <p><strong>Note:</strong> In Safari, you can use <a class="external" target="_blank" href="https://developer.apple.com/library/archive/documentation/AudioVideo/Conceptual/AirPlayGuide/OptingInorOutofAirPlay/OptingInorOutofAirPlay.html"><code>x-webkit-airplay="deny"</code></a> as a fallback.</p>
31631    ///     </div>
31632    ///   
31633    pub disableremoteplayback: core::option::Option<AttributeValueOwned>,
31634    ///
31635    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
31636    ///     <ul>
31637    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
31638    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
31639    ///     </ul>
31640    ///   
31641    pub draggable: core::option::Option<AttributeValueOwned>,
31642    ///
31643    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
31644    ///   
31645    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
31646    ///
31647    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
31648    ///   
31649    pub exportparts: core::option::Option<AttributeValueOwned>,
31650    /// /// Extra attributes of the element.
31651
31652    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
31653    #[cfg(feature = "alloc")]
31654    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
31655    ///
31656    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
31657    ///   
31658    pub hidden: core::option::Option<AttributeValueOwned>,
31659    ///
31660    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
31661    ///   
31662    pub id: core::option::Option<AttributeValueOwned>,
31663    ///
31664    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
31665    ///   
31666    pub inert: core::option::Option<AttributeValueOwned>,
31667    ///
31668    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
31669    ///   
31670    pub inputmode: core::option::Option<AttributeValueOwned>,
31671    ///
31672    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
31673    ///   
31674    pub is: core::option::Option<AttributeValueOwned>,
31675    ///
31676    ///     <p>The unique, global identifier of an item.</p>
31677    ///   
31678    pub itemid: core::option::Option<AttributeValueOwned>,
31679    ///
31680    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
31681    ///   
31682    pub itemprop: core::option::Option<AttributeValueOwned>,
31683    ///
31684    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
31685    ///   
31686    pub itemref: core::option::Option<AttributeValueOwned>,
31687    ///
31688    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
31689    ///   
31690    pub itemscope: core::option::Option<AttributeValueOwned>,
31691    ///
31692    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
31693    ///   
31694    pub itemtype: core::option::Option<AttributeValueOwned>,
31695    ///
31696    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
31697    ///   
31698    pub lang: core::option::Option<AttributeValueOwned>,
31699    ///
31700    ///     <p>A Boolean attribute: if specified, the audio player will automatically seek back to the start upon reaching the end of the audio.</p>
31701    ///   
31702    pub loop_: core::option::Option<AttributeValueOwned>,
31703    ///
31704    ///     <p>A Boolean attribute that indicates whether the audio will be initially silenced. Its default value is <code>false</code>.</p>
31705    ///   
31706    pub muted: core::option::Option<AttributeValueOwned>,
31707    ///
31708    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
31709    ///   
31710    pub nonce: core::option::Option<AttributeValueOwned>,
31711    ///
31712    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
31713    ///   
31714    pub part: core::option::Option<AttributeValueOwned>,
31715    ///
31716    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
31717    ///   
31718    pub popover: core::option::Option<AttributeValueOwned>,
31719    ///
31720    ///     <p>This <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> 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:</p>
31721    ///     <ul>
31722    ///       <li><code>none</code>: Indicates that the audio should not be preloaded.</li>
31723    ///       <li><code>metadata</code>: Indicates that only audio metadata (e.g. length) is fetched.</li>
31724    ///       <li><code>auto</code>: Indicates that the whole audio file can be downloaded, even if the user is not expected to use it.</li>
31725    ///       <li><em>empty string</em>: A synonym of the <code>auto</code> value.</li>
31726    ///     </ul>
31727    ///     <p>The default value is different for each browser. The spec advises it to be set to <code>metadata</code>.</p>
31728    ///     <div id="sect3" class="notecard note">
31729    ///       <p><strong>Note:</strong></p>
31730    ///       <ul>
31731    ///         <li>The <code>autoplay</code> attribute has precedence over <code>preload</code>. If <code>autoplay</code> is specified, the browser would obviously need to start downloading the audio for playback.</li>
31732    ///         <li>The browser is not forced by the specification to follow the value of this attribute; it is a mere hint.</li>
31733    ///       </ul>
31734    ///     </div>
31735    ///   
31736    pub preload: core::option::Option<AttributeValueOwned>,
31737    ///
31738    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
31739    ///   
31740    pub role: core::option::Option<AttributeValueOwned>,
31741    ///
31742    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
31743    ///   
31744    pub slot: core::option::Option<AttributeValueOwned>,
31745    ///
31746    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
31747    ///     <ul>
31748    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
31749    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
31750    ///     </ul>
31751    ///   
31752    pub spellcheck: core::option::Option<AttributeValueOwned>,
31753    ///
31754    ///     <p>The URL of the audio to embed. This is subject to <a href="/en-US/docs/Web/HTTP/CORS">HTTP access controls</a>. This is optional; you may instead use the <a href="/en-US/docs/Web/HTML/Element/source"><code>&lt;source&gt;</code></a> element within the audio block to specify the audio to embed.</p>
31755    ///   
31756    pub src: core::option::Option<AttributeValueOwned>,
31757    ///
31758    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
31759    ///   
31760    pub style: core::option::Option<AttributeValueOwned>,
31761    ///
31762    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
31763    ///     <ul>
31764    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
31765    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
31766    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
31767    ///     </ul>
31768    ///   
31769    pub tabindex: core::option::Option<AttributeValueOwned>,
31770    ///
31771    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
31772    ///   
31773    pub title: core::option::Option<AttributeValueOwned>,
31774    ///
31775    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
31776    ///     <ul>
31777    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
31778    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
31779    ///     </ul>
31780    ///   
31781    pub translate: core::option::Option<AttributeValueOwned>,
31782    ///
31783    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
31784    ///     <ul>
31785    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
31786    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
31787    ///     </ul>
31788    ///   
31789    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
31790}
31791#[allow(deprecated)]
31792#[cfg(feature = "alloc")]
31793impl AudioOwned {
31794    /// Get the tag name of the element.
31795    /// This is the same as the name of the struct, in kebab-case.
31796    pub fn tag() -> &'static str {
31797        "audio"
31798    }
31799    /// Sets an attribute of the element.
31800    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
31801    /// If the `alloc` feature is disabled, this function will silently fail.
31802    ///
31803    /// # Note
31804    /// This only works when the attribute is lowercase.
31805    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
31806        match name {
31807            "accesskey" => self.accesskey = Some(value.into()),
31808            "autocapitalize" => self.autocapitalize = Some(value.into()),
31809            "autofocus" => self.autofocus = Some(value.into()),
31810            "autoplay" => self.autoplay = Some(value.into()),
31811            "class" => self.class = Some(value.into()),
31812            "contenteditable" => self.contenteditable = Some(value.into()),
31813            "contextmenu" => self.contextmenu = Some(value.into()),
31814            "controls" => self.controls = Some(value.into()),
31815            "controlslist" => self.controlslist = Some(value.into()),
31816            "crossorigin" => self.crossorigin = Some(value.into()),
31817            "dir" => self.dir = Some(value.into()),
31818            "disableremoteplayback" => self.disableremoteplayback = Some(value.into()),
31819            "draggable" => self.draggable = Some(value.into()),
31820            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
31821            "exportparts" => self.exportparts = Some(value.into()),
31822            "hidden" => self.hidden = Some(value.into()),
31823            "id" => self.id = Some(value.into()),
31824            "inert" => self.inert = Some(value.into()),
31825            "inputmode" => self.inputmode = Some(value.into()),
31826            "is" => self.is = Some(value.into()),
31827            "itemid" => self.itemid = Some(value.into()),
31828            "itemprop" => self.itemprop = Some(value.into()),
31829            "itemref" => self.itemref = Some(value.into()),
31830            "itemscope" => self.itemscope = Some(value.into()),
31831            "itemtype" => self.itemtype = Some(value.into()),
31832            "lang" => self.lang = Some(value.into()),
31833            "loop_" => self.loop_ = Some(value.into()),
31834            "muted" => self.muted = Some(value.into()),
31835            "nonce" => self.nonce = Some(value.into()),
31836            "part" => self.part = Some(value.into()),
31837            "popover" => self.popover = Some(value.into()),
31838            "preload" => self.preload = Some(value.into()),
31839            "role" => self.role = Some(value.into()),
31840            "slot" => self.slot = Some(value.into()),
31841            "spellcheck" => self.spellcheck = Some(value.into()),
31842            "src" => self.src = Some(value.into()),
31843            "style" => self.style = Some(value.into()),
31844            "tabindex" => self.tabindex = Some(value.into()),
31845            "title" => self.title = Some(value.into()),
31846            "translate" => self.translate = Some(value.into()),
31847            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
31848            #[cfg(feature = "alloc")]
31849            _ => {
31850                #[allow(clippy::useless_conversion)]
31851                self.extra.insert(name.into(), value.into());
31852            }
31853            #[cfg(not(feature = "alloc"))]
31854            _ => {}
31855        }
31856    }
31857}
31858/// The <strong><code>&lt;img&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element embeds an image into the document.
31859///
31860/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img>
31861
31862#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
31863pub struct Img<'life> {
31864    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
31865    ///   
31866    pub accesskey: core::option::Option<AttributeValue<'life>>,
31867    ///
31868    ///     <p>Defines an alternative text description of the image.</p>
31869    ///     <div class="notecard note" id="sect2">
31870    ///       <p><strong>Note:</strong> Browsers do not always display images. There are a number of situations in which a browser might not display images, such as:</p>
31871    ///       <ul>
31872    ///         <li>Non-visual browsers (such as those used by people with visual impairments)</li>
31873    ///         <li>The user chooses not to display images (saving bandwidth, privacy reasons)</li>
31874    ///         <li>The image is invalid or an <a href="#supported_image_formats">unsupported type</a></li>
31875    ///       </ul>
31876    ///       <p>In these cases, the browser may replace the image with the text in the element's <code>alt</code> attribute. For these reasons and others, provide a useful value for <code>alt</code> whenever possible.</p>
31877    ///     </div>
31878    ///     <p>Setting this attribute to an empty string (<code>alt=""</code>) indicates that this image is <em>not</em> a key part of the content (it's decoration or a tracking pixel), and that non-visual browsers may omit it from <a href="/en-US/docs/Glossary/Rendering_engine">rendering</a>. Visual browsers will also hide the broken image icon if the <code>alt</code> is empty and the image failed to display.</p>
31879    ///     <p>This attribute is also used when copying and pasting the image to text, or saving a linked image to a bookmark.</p>
31880    ///   
31881    pub alt: core::option::Option<AttributeValue<'life>>,
31882    ///
31883    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
31884    ///     <ul>
31885    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
31886    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
31887    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
31888    ///       <li><code>characters</code>, all letters should default to uppercase</li>
31889    ///     </ul>
31890    ///   
31891    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
31892    ///
31893    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
31894    ///   
31895    pub autofocus: core::option::Option<AttributeValue<'life>>,
31896    ///
31897    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
31898    ///   
31899    pub class: core::option::Option<AttributeValue<'life>>,
31900    ///
31901    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
31902    ///     <ul>
31903    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
31904    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
31905    ///     </ul>
31906    ///   
31907    pub contenteditable: core::option::Option<AttributeValue<'life>>,
31908    ///
31909    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
31910    ///   
31911    pub contextmenu: core::option::Option<AttributeValue<'life>>,
31912    ///
31913    ///     <p>Indicates if the fetching of the image must be done using a <a href="/en-US/docs/Glossary/CORS">CORS</a> request. Image data from a <a href="/en-US/docs/Web/HTML/CORS_enabled_image">CORS-enabled image</a> returned from a CORS request can be reused in the <a href="/en-US/docs/Web/HTML/Element/canvas"><code>&lt;canvas&gt;</code></a> element without being marked "<a href="/en-US/docs/Web/HTML/CORS_enabled_image#what_is_a_tainted_canvas">tainted</a>".</p>
31914    ///     <p>If the <code>crossorigin</code> attribute is <em>not</em> specified, then a non-CORS request is sent (without the <a href="/en-US/docs/Web/HTTP/Headers/Origin"><code>Origin</code></a> request header), and the browser marks the image as tainted and restricts access to its image data, preventing its usage in <a href="/en-US/docs/Web/HTML/Element/canvas"><code>&lt;canvas&gt;</code></a> elements.</p>
31915    ///     <p>If the <code>crossorigin</code> attribute <em>is</em> specified, then a CORS request is sent (with the <a href="/en-US/docs/Web/HTTP/Headers/Origin"><code>Origin</code></a> request header); but if the server does not opt into allowing cross-origin access to the image data by the origin site (by not sending any <a href="/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin"><code>Access-Control-Allow-Origin</code></a> response header, or by not including the site's origin in any <a href="/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin"><code>Access-Control-Allow-Origin</code></a> response header it does send), then the browser blocks the image from loading, and logs a CORS error to the devtools console.</p>
31916    ///     <p>Allowed values:</p>
31917    ///     <dl>
31918    ///       <dt id="anonymous"><code>anonymous</code></dt>
31919    ///       <dd>
31920    ///         <p>A CORS request is sent with credentials omitted (that is, no <a href="/en-US/docs/Glossary/Cookie">cookies</a>, <a href="https://datatracker.ietf.org/doc/html/rfc5280" class="external" target="_blank">X.509 certificates</a>, or <a href="/en-US/docs/Web/HTTP/Headers/Authorization"><code>Authorization</code></a> request header).</p>
31921    ///       </dd>
31922    ///       <dt id="use-credentials"><code>use-credentials</code></dt>
31923    ///       <dd>
31924    ///         <p>The CORS request is sent with any credentials included (that is, cookies, X.509 certificates, and the <code>Authorization</code> request header). If the server does not opt into sharing credentials with the origin site (by sending back the <code>Access-Control-Allow-Credentials: true</code> response header), then the browser marks the image as tainted and restricts access to its image data.</p>
31925    ///       </dd>
31926    ///     </dl>
31927    ///     <p>If the attribute has an invalid value, browsers handle it as if the <code>anonymous</code> value was used. See <a href="/en-US/docs/Web/HTML/Attributes/crossorigin">CORS settings attributes</a> for additional information.</p>
31928    ///   
31929    pub crossorigin: core::option::Option<AttributeValue<'life>>,
31930    ///
31931    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
31932    ///   
31933    #[cfg(feature = "alloc")]
31934    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
31935    ///
31936    ///     <p>Provides an image decoding hint to the browser. Allowed values:</p>
31937    ///     <dl>
31938    ///       <dt id="sync"><code>sync</code></dt>
31939    ///       <dd>
31940    ///         <p>Decode the image synchronously, for atomic presentation with other content.</p>
31941    ///       </dd>
31942    ///       <dt id="async"><code>async</code></dt>
31943    ///       <dd>
31944    ///         <p>Decode the image asynchronously, to reduce delay in presenting other content.</p>
31945    ///       </dd>
31946    ///       <dt id="auto"><code>auto</code></dt>
31947    ///       <dd>
31948    ///         <p>Default: no preference for the decoding mode. The browser decides what is best for the user.</p>
31949    ///       </dd>
31950    ///     </dl>
31951    ///   
31952    pub decoding: core::option::Option<AttributeValue<'life>>,
31953    ///
31954    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
31955    ///     <ul>
31956    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
31957    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
31958    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
31959    ///     </ul>
31960    ///   
31961    pub dir: core::option::Option<AttributeValue<'life>>,
31962    ///
31963    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
31964    ///     <ul>
31965    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
31966    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
31967    ///     </ul>
31968    ///   
31969    pub draggable: core::option::Option<AttributeValue<'life>>,
31970    ///
31971    ///     <p>Marks the image for observation by the <a href="/en-US/docs/Web/API/PerformanceElementTiming"><code>PerformanceElementTiming</code></a> API. The value given becomes an identifier for the observed image element. See also the <a href="/en-US/docs/Web/HTML/Attributes/elementtiming"><code>elementtiming</code></a> attribute page.</p>
31972    ///   
31973    pub elementtiming: core::option::Option<AttributeValue<'life>>,
31974    ///
31975    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
31976    ///   
31977    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
31978    ///
31979    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
31980    ///   
31981    pub exportparts: core::option::Option<AttributeValue<'life>>,
31982    /// /// Extra attributes of the element.
31983
31984    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
31985    #[cfg(feature = "alloc")]
31986    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
31987    ///
31988    ///     <p>Provides a hint of the relative priority to use when fetching the image. Allowed values:</p>
31989    ///     <dl>
31990    ///       <dt id="high"><code>high</code></dt>
31991    ///       <dd>
31992    ///         <p>Signals a high-priority fetch relative to other images.</p>
31993    ///       </dd>
31994    ///       <dt id="low"><code>low</code></dt>
31995    ///       <dd>
31996    ///         <p>Signals a low-priority fetch relative to other images.</p>
31997    ///       </dd>
31998    ///       <dt id="auto_2"><code>auto</code></dt>
31999    ///       <dd>
32000    ///         <p>Default: Signals automatic determination of fetch priority relative to other images.</p>
32001    ///       </dd>
32002    ///     </dl>
32003    ///   
32004    pub fetchpriority: core::option::Option<AttributeValue<'life>>,
32005    ///
32006    ///     <p>The intrinsic height of the image, in pixels. Must be an integer without a unit.</p>
32007    ///     <div class="notecard note" id="sect3">
32008    ///       <p><strong>Note:</strong> Including <code>height</code> and <a href="#width"><code>width</code></a> enables the aspect ratio of the image to be calculated by the browser prior to the image being loaded. This aspect ratio is used to reserve the space needed to display the image, reducing or even preventing a layout shift when the image is downloaded and painted to the screen. Reducing layout shift is a major component of good user experience and web performance.</p>
32009    ///     </div>
32010    ///   
32011    pub height: core::option::Option<AttributeValue<'life>>,
32012    ///
32013    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
32014    ///   
32015    pub hidden: core::option::Option<AttributeValue<'life>>,
32016    ///
32017    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
32018    ///   
32019    pub id: core::option::Option<AttributeValue<'life>>,
32020    ///
32021    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
32022    ///   
32023    pub inert: core::option::Option<AttributeValue<'life>>,
32024    ///
32025    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
32026    ///   
32027    pub inputmode: core::option::Option<AttributeValue<'life>>,
32028    ///
32029    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
32030    ///   
32031    pub is: core::option::Option<AttributeValue<'life>>,
32032    ///
32033    ///     <p>This Boolean attribute indicates that the image is part of a <a target="_blank" class="external" href="https://en.wikipedia.org/wiki/Image_map#Server-side">server-side map</a>. If so, the coordinates where the user clicked on the image are sent to the server.</p>
32034    ///     <div id="sect4" class="notecard note">
32035    ///       <p><strong>Note:</strong> This attribute is allowed only if the <code>&lt;img&gt;</code> element is a descendant of an <a href="/en-US/docs/Web/HTML/Element/a"><code>&lt;a&gt;</code></a> element with a valid <a href="/en-US/docs/Web/HTML/Element/a#href"><code>href</code></a> attribute. This gives users without pointing devices a fallback destination.</p>
32036    ///     </div>
32037    ///   
32038    pub ismap: core::option::Option<AttributeValue<'life>>,
32039    ///
32040    ///     <p>The unique, global identifier of an item.</p>
32041    ///   
32042    pub itemid: core::option::Option<AttributeValue<'life>>,
32043    ///
32044    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
32045    ///   
32046    pub itemprop: core::option::Option<AttributeValue<'life>>,
32047    ///
32048    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
32049    ///   
32050    pub itemref: core::option::Option<AttributeValue<'life>>,
32051    ///
32052    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
32053    ///   
32054    pub itemscope: core::option::Option<AttributeValue<'life>>,
32055    ///
32056    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
32057    ///   
32058    pub itemtype: core::option::Option<AttributeValue<'life>>,
32059    ///
32060    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
32061    ///   
32062    pub lang: core::option::Option<AttributeValue<'life>>,
32063    ///
32064    ///     <p>Indicates how the browser should load the image:</p>
32065    ///     <dl>
32066    ///       <dt id="eager"><code>eager</code></dt>
32067    ///       <dd>
32068    ///         <p>Loads the image immediately, regardless of whether or not the image is currently within the visible viewport (this is the default value).</p>
32069    ///       </dd>
32070    ///       <dt id="lazy"><code>lazy</code></dt>
32071    ///       <dd>
32072    ///         <p>Defers loading the image until it reaches a calculated distance from the viewport, as defined by the browser. The intent is to avoid the network and storage bandwidth needed to handle the image until it's reasonably certain that it will be needed. This generally improves the performance of the content in most typical use cases.</p>
32073    ///       </dd>
32074    ///     </dl>
32075    ///     <div class="notecard note" id="sect5">
32076    ///       <p><strong>Note:</strong> 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.</p>
32077    ///     </div>
32078    ///   
32079    pub loading: core::option::Option<AttributeValue<'life>>,
32080    ///
32081    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
32082    ///   
32083    pub nonce: core::option::Option<AttributeValue<'life>>,
32084    ///
32085    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
32086    ///   
32087    pub part: core::option::Option<AttributeValue<'life>>,
32088    ///
32089    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
32090    ///   
32091    pub popover: core::option::Option<AttributeValue<'life>>,
32092    ///
32093    ///     <p>A string indicating which referrer to use when fetching the resource:</p>
32094    ///     <ul>
32095    ///       <li><code>no-referrer</code>: The <a href="/en-US/docs/Web/HTTP/Headers/Referer"><code>Referer</code></a> header will not be sent.</li>
32096    ///       <li><code>no-referrer-when-downgrade</code>: The <a href="/en-US/docs/Web/HTTP/Headers/Referer"><code>Referer</code></a> header will not be sent to <a href="/en-US/docs/Glossary/Origin">origin</a>s without <a href="/en-US/docs/Glossary/TLS">TLS</a> (<a href="/en-US/docs/Glossary/HTTPS">HTTPS</a>).</li>
32097    ///       <li><code>origin</code>: The sent referrer will be limited to the origin of the referring page: its <a href="/en-US/docs/Learn/Common_questions/Web_mechanics/What_is_a_URL">scheme</a>, <a href="/en-US/docs/Glossary/Host">host</a>, and <a href="/en-US/docs/Glossary/Port">port</a>.</li>
32098    ///       <li><code>origin-when-cross-origin</code>: 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.</li>
32099    ///       <li><code>same-origin</code>: A referrer will be sent for <a href="/en-US/docs/Glossary/Same-origin_policy">same origin</a>, but cross-origin requests will contain no referrer information.</li>
32100    ///       <li><code>strict-origin</code>: 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).</li>
32101    ///       <li><code>strict-origin-when-cross-origin</code> (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).</li>
32102    ///       <li><code>unsafe-url</code>: The referrer will include the origin <em>and</em> the path (but not the <a href="/en-US/docs/Web/API/HTMLAnchorElement/hash">fragment</a>, <a href="/en-US/docs/Web/API/HTMLAnchorElement/password">password</a>, or <a href="/en-US/docs/Web/API/HTMLAnchorElement/username">username</a>). <strong>This value is unsafe</strong>, because it leaks origins and paths from TLS-protected resources to insecure origins.</li>
32103    ///     </ul>
32104    ///   
32105    pub referrerpolicy: core::option::Option<AttributeValue<'life>>,
32106    ///
32107    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
32108    ///   
32109    pub role: core::option::Option<AttributeValue<'life>>,
32110    ///
32111    ///     <p>One or more strings separated by commas, indicating a set of source sizes. Each source size consists of:</p>
32112    ///     <ol>
32113    ///       <li>A <a href="/en-US/docs/Web/CSS/Media_Queries/Using_media_queries#syntax">media condition</a>. This must be omitted for the last item in the list.</li>
32114    ///       <li>A source size value.</li>
32115    ///     </ol>
32116    ///     <p>Media Conditions describe properties of the <em>viewport</em>, not of the <em>image</em>. For example, <code>(max-height: 500px) 1000px</code> proposes to use a source of 1000px width, if the <em>viewport</em> is not higher than 500px.</p>
32117    ///     <p>Source size values specify the intended display size of the image. <a href="/en-US/docs/Glossary/User_agent">User agents</a> use the current source size to select one of the sources supplied by the <code>srcset</code> attribute, when those sources are described using width (<code>w</code>) descriptors. The selected source size affects the <a href="/en-US/docs/Glossary/Intrinsic_Size">intrinsic size</a> of the image (the image's display size if no <a href="/en-US/docs/Glossary/CSS">CSS</a> styling is applied). If the <code>srcset</code> attribute is absent, or contains no values with a width descriptor, then the <code>sizes</code> attribute has no effect.</p>
32118    ///   
32119    pub sizes: core::option::Option<AttributeValue<'life>>,
32120    ///
32121    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
32122    ///   
32123    pub slot: core::option::Option<AttributeValue<'life>>,
32124    ///
32125    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
32126    ///     <ul>
32127    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
32128    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
32129    ///     </ul>
32130    ///   
32131    pub spellcheck: core::option::Option<AttributeValue<'life>>,
32132    ///
32133    ///     <p>The image <a href="/en-US/docs/Glossary/URL">URL</a>. Mandatory for the <code>&lt;img&gt;</code> element. On <a href="/en-US/docs/Glossary/Browser">browsers</a> supporting <code>srcset</code>, <code>src</code> is treated like a candidate image with a pixel density descriptor <code>1x</code>, unless an image with this pixel density descriptor is already defined in <code>srcset</code>, or unless <code>srcset</code> contains <code>w</code> descriptors.</p>
32134    ///   
32135    pub src: core::option::Option<AttributeValue<'life>>,
32136    ///
32137    ///     <p>One or more strings separated by commas, indicating possible image sources for the <a href="/en-US/docs/Glossary/User_agent">user agent</a> to use. Each string is composed of:</p>
32138    ///     <ol>
32139    ///       <li>A <a href="/en-US/docs/Glossary/URL">URL</a> to an image</li>
32140    ///       <li>Optionally, whitespace followed by one of:
32141    ///         <ul>
32142    ///           <li>A width descriptor (a positive integer directly followed by <code>w</code>). The width descriptor is divided by the source size given in the <code>sizes</code> attribute to calculate the effective pixel density.</li>
32143    ///           <li>A pixel density descriptor (a positive floating point number directly followed by <code>x</code>).</li>
32144    ///         </ul>
32145    ///       </li>
32146    ///     </ol>
32147    ///     <p>If no descriptor is specified, the source is assigned the default descriptor of <code>1x</code>.</p>
32148    ///     <p>It is incorrect to mix width descriptors and pixel density descriptors in the same <code>srcset</code> attribute. Duplicate descriptors (for instance, two sources in the same <code>srcset</code> which are both described with <code>2x</code>) are also invalid.</p>
32149    ///     <p>If the <code>srcset</code> attribute uses width descriptors, the <code>sizes</code> attribute must also be present, or the <code>srcset</code> itself will be ignored.</p>
32150    ///     <p>The user agent selects any of the available sources at its discretion. This provides them with significant leeway to tailor their selection based on things like user preferences or <a href="/en-US/docs/Glossary/Bandwidth">bandwidth</a> conditions. See our <a href="/en-US/docs/Learn/HTML/Multimedia_and_embedding/Responsive_images">Responsive images</a> tutorial for an example.</p>
32151    ///   
32152    pub srcset: core::option::Option<AttributeValue<'life>>,
32153    ///
32154    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
32155    ///   
32156    pub style: core::option::Option<AttributeValue<'life>>,
32157    ///
32158    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
32159    ///     <ul>
32160    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
32161    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
32162    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
32163    ///     </ul>
32164    ///   
32165    pub tabindex: core::option::Option<AttributeValue<'life>>,
32166    ///
32167    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
32168    ///   
32169    pub title: core::option::Option<AttributeValue<'life>>,
32170    ///
32171    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
32172    ///     <ul>
32173    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
32174    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
32175    ///     </ul>
32176    ///   
32177    pub translate: core::option::Option<AttributeValue<'life>>,
32178    ///
32179    ///     <p>The partial <a href="/en-US/docs/Glossary/URL">URL</a> (starting with <code>#</code>) of an <a href="/en-US/docs/Web/HTML/Element/map">image map</a> associated with the element.</p>
32180    ///     <div class="notecard note" id="sect6">
32181    ///       <p><strong>Note:</strong> You cannot use this attribute if the <code>&lt;img&gt;</code> element is inside an <a href="/en-US/docs/Web/HTML/Element/a"><code>&lt;a&gt;</code></a> or <a href="/en-US/docs/Web/HTML/Element/button"><code>&lt;button&gt;</code></a> element.</p>
32182    ///     </div>
32183    ///   
32184    pub usemap: core::option::Option<AttributeValue<'life>>,
32185    ///
32186    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
32187    ///     <ul>
32188    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
32189    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
32190    ///     </ul>
32191    ///   
32192    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
32193    ///
32194    ///     <p>The intrinsic width of the image in pixels. Must be an integer without a unit.</p>
32195    ///   
32196    pub width: core::option::Option<AttributeValue<'life>>,
32197}
32198#[allow(deprecated)]
32199
32200impl<'life> Img<'life> {
32201    /// Get the tag name of the element.
32202    /// This is the same as the name of the struct, in kebab-case.
32203    pub fn tag() -> &'static str {
32204        "img"
32205    }
32206    /// Sets an attribute of the element.
32207    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
32208    /// If the `alloc` feature is disabled, this function will silently fail.
32209    ///
32210    /// # Note
32211    /// This only works when the attribute is lowercase.
32212    pub fn set_attr(
32213        &mut self,
32214        name: &'life str,
32215        value: impl core::convert::Into<AttributeValue<'life>>,
32216    ) {
32217        match name {
32218            "accesskey" => self.accesskey = Some(value.into()),
32219            "alt" => self.alt = Some(value.into()),
32220            "autocapitalize" => self.autocapitalize = Some(value.into()),
32221            "autofocus" => self.autofocus = Some(value.into()),
32222            "class" => self.class = Some(value.into()),
32223            "contenteditable" => self.contenteditable = Some(value.into()),
32224            "contextmenu" => self.contextmenu = Some(value.into()),
32225            "crossorigin" => self.crossorigin = Some(value.into()),
32226            "decoding" => self.decoding = Some(value.into()),
32227            "dir" => self.dir = Some(value.into()),
32228            "draggable" => self.draggable = Some(value.into()),
32229            "elementtiming" => self.elementtiming = Some(value.into()),
32230            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
32231            "exportparts" => self.exportparts = Some(value.into()),
32232            "fetchpriority" => self.fetchpriority = Some(value.into()),
32233            "height" => self.height = Some(value.into()),
32234            "hidden" => self.hidden = Some(value.into()),
32235            "id" => self.id = Some(value.into()),
32236            "inert" => self.inert = Some(value.into()),
32237            "inputmode" => self.inputmode = Some(value.into()),
32238            "is" => self.is = Some(value.into()),
32239            "ismap" => self.ismap = Some(value.into()),
32240            "itemid" => self.itemid = Some(value.into()),
32241            "itemprop" => self.itemprop = Some(value.into()),
32242            "itemref" => self.itemref = Some(value.into()),
32243            "itemscope" => self.itemscope = Some(value.into()),
32244            "itemtype" => self.itemtype = Some(value.into()),
32245            "lang" => self.lang = Some(value.into()),
32246            "loading" => self.loading = Some(value.into()),
32247            "nonce" => self.nonce = Some(value.into()),
32248            "part" => self.part = Some(value.into()),
32249            "popover" => self.popover = Some(value.into()),
32250            "referrerpolicy" => self.referrerpolicy = Some(value.into()),
32251            "role" => self.role = Some(value.into()),
32252            "sizes" => self.sizes = Some(value.into()),
32253            "slot" => self.slot = Some(value.into()),
32254            "spellcheck" => self.spellcheck = Some(value.into()),
32255            "src" => self.src = Some(value.into()),
32256            "srcset" => self.srcset = Some(value.into()),
32257            "style" => self.style = Some(value.into()),
32258            "tabindex" => self.tabindex = Some(value.into()),
32259            "title" => self.title = Some(value.into()),
32260            "translate" => self.translate = Some(value.into()),
32261            "usemap" => self.usemap = Some(value.into()),
32262            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
32263            "width" => self.width = Some(value.into()),
32264            #[cfg(feature = "alloc")]
32265            _ => {
32266                #[allow(clippy::useless_conversion)]
32267                self.extra.insert(name.into(), value.into());
32268            }
32269            #[cfg(not(feature = "alloc"))]
32270            _ => {}
32271        }
32272    }
32273}
32274/// The <strong><code>&lt;img&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element embeds an image into the document.
32275///
32276/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img>
32277
32278#[cfg(feature = "alloc")]
32279#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
32280pub struct ImgOwned {
32281    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
32282    ///   
32283    pub accesskey: core::option::Option<AttributeValueOwned>,
32284    ///
32285    ///     <p>Defines an alternative text description of the image.</p>
32286    ///     <div class="notecard note" id="sect2">
32287    ///       <p><strong>Note:</strong> Browsers do not always display images. There are a number of situations in which a browser might not display images, such as:</p>
32288    ///       <ul>
32289    ///         <li>Non-visual browsers (such as those used by people with visual impairments)</li>
32290    ///         <li>The user chooses not to display images (saving bandwidth, privacy reasons)</li>
32291    ///         <li>The image is invalid or an <a href="#supported_image_formats">unsupported type</a></li>
32292    ///       </ul>
32293    ///       <p>In these cases, the browser may replace the image with the text in the element's <code>alt</code> attribute. For these reasons and others, provide a useful value for <code>alt</code> whenever possible.</p>
32294    ///     </div>
32295    ///     <p>Setting this attribute to an empty string (<code>alt=""</code>) indicates that this image is <em>not</em> a key part of the content (it's decoration or a tracking pixel), and that non-visual browsers may omit it from <a href="/en-US/docs/Glossary/Rendering_engine">rendering</a>. Visual browsers will also hide the broken image icon if the <code>alt</code> is empty and the image failed to display.</p>
32296    ///     <p>This attribute is also used when copying and pasting the image to text, or saving a linked image to a bookmark.</p>
32297    ///   
32298    pub alt: core::option::Option<AttributeValueOwned>,
32299    ///
32300    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
32301    ///     <ul>
32302    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
32303    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
32304    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
32305    ///       <li><code>characters</code>, all letters should default to uppercase</li>
32306    ///     </ul>
32307    ///   
32308    pub autocapitalize: core::option::Option<AttributeValueOwned>,
32309    ///
32310    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
32311    ///   
32312    pub autofocus: core::option::Option<AttributeValueOwned>,
32313    ///
32314    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
32315    ///   
32316    pub class: core::option::Option<AttributeValueOwned>,
32317    ///
32318    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
32319    ///     <ul>
32320    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
32321    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
32322    ///     </ul>
32323    ///   
32324    pub contenteditable: core::option::Option<AttributeValueOwned>,
32325    ///
32326    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
32327    ///   
32328    pub contextmenu: core::option::Option<AttributeValueOwned>,
32329    ///
32330    ///     <p>Indicates if the fetching of the image must be done using a <a href="/en-US/docs/Glossary/CORS">CORS</a> request. Image data from a <a href="/en-US/docs/Web/HTML/CORS_enabled_image">CORS-enabled image</a> returned from a CORS request can be reused in the <a href="/en-US/docs/Web/HTML/Element/canvas"><code>&lt;canvas&gt;</code></a> element without being marked "<a href="/en-US/docs/Web/HTML/CORS_enabled_image#what_is_a_tainted_canvas">tainted</a>".</p>
32331    ///     <p>If the <code>crossorigin</code> attribute is <em>not</em> specified, then a non-CORS request is sent (without the <a href="/en-US/docs/Web/HTTP/Headers/Origin"><code>Origin</code></a> request header), and the browser marks the image as tainted and restricts access to its image data, preventing its usage in <a href="/en-US/docs/Web/HTML/Element/canvas"><code>&lt;canvas&gt;</code></a> elements.</p>
32332    ///     <p>If the <code>crossorigin</code> attribute <em>is</em> specified, then a CORS request is sent (with the <a href="/en-US/docs/Web/HTTP/Headers/Origin"><code>Origin</code></a> request header); but if the server does not opt into allowing cross-origin access to the image data by the origin site (by not sending any <a href="/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin"><code>Access-Control-Allow-Origin</code></a> response header, or by not including the site's origin in any <a href="/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin"><code>Access-Control-Allow-Origin</code></a> response header it does send), then the browser blocks the image from loading, and logs a CORS error to the devtools console.</p>
32333    ///     <p>Allowed values:</p>
32334    ///     <dl>
32335    ///       <dt id="anonymous"><code>anonymous</code></dt>
32336    ///       <dd>
32337    ///         <p>A CORS request is sent with credentials omitted (that is, no <a href="/en-US/docs/Glossary/Cookie">cookies</a>, <a href="https://datatracker.ietf.org/doc/html/rfc5280" class="external" target="_blank">X.509 certificates</a>, or <a href="/en-US/docs/Web/HTTP/Headers/Authorization"><code>Authorization</code></a> request header).</p>
32338    ///       </dd>
32339    ///       <dt id="use-credentials"><code>use-credentials</code></dt>
32340    ///       <dd>
32341    ///         <p>The CORS request is sent with any credentials included (that is, cookies, X.509 certificates, and the <code>Authorization</code> request header). If the server does not opt into sharing credentials with the origin site (by sending back the <code>Access-Control-Allow-Credentials: true</code> response header), then the browser marks the image as tainted and restricts access to its image data.</p>
32342    ///       </dd>
32343    ///     </dl>
32344    ///     <p>If the attribute has an invalid value, browsers handle it as if the <code>anonymous</code> value was used. See <a href="/en-US/docs/Web/HTML/Attributes/crossorigin">CORS settings attributes</a> for additional information.</p>
32345    ///   
32346    pub crossorigin: core::option::Option<AttributeValueOwned>,
32347    ///
32348    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
32349    ///   
32350    #[cfg(feature = "alloc")]
32351    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
32352    ///
32353    ///     <p>Provides an image decoding hint to the browser. Allowed values:</p>
32354    ///     <dl>
32355    ///       <dt id="sync"><code>sync</code></dt>
32356    ///       <dd>
32357    ///         <p>Decode the image synchronously, for atomic presentation with other content.</p>
32358    ///       </dd>
32359    ///       <dt id="async"><code>async</code></dt>
32360    ///       <dd>
32361    ///         <p>Decode the image asynchronously, to reduce delay in presenting other content.</p>
32362    ///       </dd>
32363    ///       <dt id="auto"><code>auto</code></dt>
32364    ///       <dd>
32365    ///         <p>Default: no preference for the decoding mode. The browser decides what is best for the user.</p>
32366    ///       </dd>
32367    ///     </dl>
32368    ///   
32369    pub decoding: core::option::Option<AttributeValueOwned>,
32370    ///
32371    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
32372    ///     <ul>
32373    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
32374    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
32375    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
32376    ///     </ul>
32377    ///   
32378    pub dir: core::option::Option<AttributeValueOwned>,
32379    ///
32380    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
32381    ///     <ul>
32382    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
32383    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
32384    ///     </ul>
32385    ///   
32386    pub draggable: core::option::Option<AttributeValueOwned>,
32387    ///
32388    ///     <p>Marks the image for observation by the <a href="/en-US/docs/Web/API/PerformanceElementTiming"><code>PerformanceElementTiming</code></a> API. The value given becomes an identifier for the observed image element. See also the <a href="/en-US/docs/Web/HTML/Attributes/elementtiming"><code>elementtiming</code></a> attribute page.</p>
32389    ///   
32390    pub elementtiming: core::option::Option<AttributeValueOwned>,
32391    ///
32392    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
32393    ///   
32394    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
32395    ///
32396    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
32397    ///   
32398    pub exportparts: core::option::Option<AttributeValueOwned>,
32399    /// /// Extra attributes of the element.
32400
32401    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
32402    #[cfg(feature = "alloc")]
32403    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
32404    ///
32405    ///     <p>Provides a hint of the relative priority to use when fetching the image. Allowed values:</p>
32406    ///     <dl>
32407    ///       <dt id="high"><code>high</code></dt>
32408    ///       <dd>
32409    ///         <p>Signals a high-priority fetch relative to other images.</p>
32410    ///       </dd>
32411    ///       <dt id="low"><code>low</code></dt>
32412    ///       <dd>
32413    ///         <p>Signals a low-priority fetch relative to other images.</p>
32414    ///       </dd>
32415    ///       <dt id="auto_2"><code>auto</code></dt>
32416    ///       <dd>
32417    ///         <p>Default: Signals automatic determination of fetch priority relative to other images.</p>
32418    ///       </dd>
32419    ///     </dl>
32420    ///   
32421    pub fetchpriority: core::option::Option<AttributeValueOwned>,
32422    ///
32423    ///     <p>The intrinsic height of the image, in pixels. Must be an integer without a unit.</p>
32424    ///     <div class="notecard note" id="sect3">
32425    ///       <p><strong>Note:</strong> Including <code>height</code> and <a href="#width"><code>width</code></a> enables the aspect ratio of the image to be calculated by the browser prior to the image being loaded. This aspect ratio is used to reserve the space needed to display the image, reducing or even preventing a layout shift when the image is downloaded and painted to the screen. Reducing layout shift is a major component of good user experience and web performance.</p>
32426    ///     </div>
32427    ///   
32428    pub height: core::option::Option<AttributeValueOwned>,
32429    ///
32430    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
32431    ///   
32432    pub hidden: core::option::Option<AttributeValueOwned>,
32433    ///
32434    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
32435    ///   
32436    pub id: core::option::Option<AttributeValueOwned>,
32437    ///
32438    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
32439    ///   
32440    pub inert: core::option::Option<AttributeValueOwned>,
32441    ///
32442    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
32443    ///   
32444    pub inputmode: core::option::Option<AttributeValueOwned>,
32445    ///
32446    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
32447    ///   
32448    pub is: core::option::Option<AttributeValueOwned>,
32449    ///
32450    ///     <p>This Boolean attribute indicates that the image is part of a <a target="_blank" class="external" href="https://en.wikipedia.org/wiki/Image_map#Server-side">server-side map</a>. If so, the coordinates where the user clicked on the image are sent to the server.</p>
32451    ///     <div id="sect4" class="notecard note">
32452    ///       <p><strong>Note:</strong> This attribute is allowed only if the <code>&lt;img&gt;</code> element is a descendant of an <a href="/en-US/docs/Web/HTML/Element/a"><code>&lt;a&gt;</code></a> element with a valid <a href="/en-US/docs/Web/HTML/Element/a#href"><code>href</code></a> attribute. This gives users without pointing devices a fallback destination.</p>
32453    ///     </div>
32454    ///   
32455    pub ismap: core::option::Option<AttributeValueOwned>,
32456    ///
32457    ///     <p>The unique, global identifier of an item.</p>
32458    ///   
32459    pub itemid: core::option::Option<AttributeValueOwned>,
32460    ///
32461    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
32462    ///   
32463    pub itemprop: core::option::Option<AttributeValueOwned>,
32464    ///
32465    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
32466    ///   
32467    pub itemref: core::option::Option<AttributeValueOwned>,
32468    ///
32469    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
32470    ///   
32471    pub itemscope: core::option::Option<AttributeValueOwned>,
32472    ///
32473    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
32474    ///   
32475    pub itemtype: core::option::Option<AttributeValueOwned>,
32476    ///
32477    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
32478    ///   
32479    pub lang: core::option::Option<AttributeValueOwned>,
32480    ///
32481    ///     <p>Indicates how the browser should load the image:</p>
32482    ///     <dl>
32483    ///       <dt id="eager"><code>eager</code></dt>
32484    ///       <dd>
32485    ///         <p>Loads the image immediately, regardless of whether or not the image is currently within the visible viewport (this is the default value).</p>
32486    ///       </dd>
32487    ///       <dt id="lazy"><code>lazy</code></dt>
32488    ///       <dd>
32489    ///         <p>Defers loading the image until it reaches a calculated distance from the viewport, as defined by the browser. The intent is to avoid the network and storage bandwidth needed to handle the image until it's reasonably certain that it will be needed. This generally improves the performance of the content in most typical use cases.</p>
32490    ///       </dd>
32491    ///     </dl>
32492    ///     <div class="notecard note" id="sect5">
32493    ///       <p><strong>Note:</strong> 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.</p>
32494    ///     </div>
32495    ///   
32496    pub loading: core::option::Option<AttributeValueOwned>,
32497    ///
32498    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
32499    ///   
32500    pub nonce: core::option::Option<AttributeValueOwned>,
32501    ///
32502    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
32503    ///   
32504    pub part: core::option::Option<AttributeValueOwned>,
32505    ///
32506    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
32507    ///   
32508    pub popover: core::option::Option<AttributeValueOwned>,
32509    ///
32510    ///     <p>A string indicating which referrer to use when fetching the resource:</p>
32511    ///     <ul>
32512    ///       <li><code>no-referrer</code>: The <a href="/en-US/docs/Web/HTTP/Headers/Referer"><code>Referer</code></a> header will not be sent.</li>
32513    ///       <li><code>no-referrer-when-downgrade</code>: The <a href="/en-US/docs/Web/HTTP/Headers/Referer"><code>Referer</code></a> header will not be sent to <a href="/en-US/docs/Glossary/Origin">origin</a>s without <a href="/en-US/docs/Glossary/TLS">TLS</a> (<a href="/en-US/docs/Glossary/HTTPS">HTTPS</a>).</li>
32514    ///       <li><code>origin</code>: The sent referrer will be limited to the origin of the referring page: its <a href="/en-US/docs/Learn/Common_questions/Web_mechanics/What_is_a_URL">scheme</a>, <a href="/en-US/docs/Glossary/Host">host</a>, and <a href="/en-US/docs/Glossary/Port">port</a>.</li>
32515    ///       <li><code>origin-when-cross-origin</code>: 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.</li>
32516    ///       <li><code>same-origin</code>: A referrer will be sent for <a href="/en-US/docs/Glossary/Same-origin_policy">same origin</a>, but cross-origin requests will contain no referrer information.</li>
32517    ///       <li><code>strict-origin</code>: 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).</li>
32518    ///       <li><code>strict-origin-when-cross-origin</code> (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).</li>
32519    ///       <li><code>unsafe-url</code>: The referrer will include the origin <em>and</em> the path (but not the <a href="/en-US/docs/Web/API/HTMLAnchorElement/hash">fragment</a>, <a href="/en-US/docs/Web/API/HTMLAnchorElement/password">password</a>, or <a href="/en-US/docs/Web/API/HTMLAnchorElement/username">username</a>). <strong>This value is unsafe</strong>, because it leaks origins and paths from TLS-protected resources to insecure origins.</li>
32520    ///     </ul>
32521    ///   
32522    pub referrerpolicy: core::option::Option<AttributeValueOwned>,
32523    ///
32524    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
32525    ///   
32526    pub role: core::option::Option<AttributeValueOwned>,
32527    ///
32528    ///     <p>One or more strings separated by commas, indicating a set of source sizes. Each source size consists of:</p>
32529    ///     <ol>
32530    ///       <li>A <a href="/en-US/docs/Web/CSS/Media_Queries/Using_media_queries#syntax">media condition</a>. This must be omitted for the last item in the list.</li>
32531    ///       <li>A source size value.</li>
32532    ///     </ol>
32533    ///     <p>Media Conditions describe properties of the <em>viewport</em>, not of the <em>image</em>. For example, <code>(max-height: 500px) 1000px</code> proposes to use a source of 1000px width, if the <em>viewport</em> is not higher than 500px.</p>
32534    ///     <p>Source size values specify the intended display size of the image. <a href="/en-US/docs/Glossary/User_agent">User agents</a> use the current source size to select one of the sources supplied by the <code>srcset</code> attribute, when those sources are described using width (<code>w</code>) descriptors. The selected source size affects the <a href="/en-US/docs/Glossary/Intrinsic_Size">intrinsic size</a> of the image (the image's display size if no <a href="/en-US/docs/Glossary/CSS">CSS</a> styling is applied). If the <code>srcset</code> attribute is absent, or contains no values with a width descriptor, then the <code>sizes</code> attribute has no effect.</p>
32535    ///   
32536    pub sizes: core::option::Option<AttributeValueOwned>,
32537    ///
32538    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
32539    ///   
32540    pub slot: core::option::Option<AttributeValueOwned>,
32541    ///
32542    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
32543    ///     <ul>
32544    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
32545    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
32546    ///     </ul>
32547    ///   
32548    pub spellcheck: core::option::Option<AttributeValueOwned>,
32549    ///
32550    ///     <p>The image <a href="/en-US/docs/Glossary/URL">URL</a>. Mandatory for the <code>&lt;img&gt;</code> element. On <a href="/en-US/docs/Glossary/Browser">browsers</a> supporting <code>srcset</code>, <code>src</code> is treated like a candidate image with a pixel density descriptor <code>1x</code>, unless an image with this pixel density descriptor is already defined in <code>srcset</code>, or unless <code>srcset</code> contains <code>w</code> descriptors.</p>
32551    ///   
32552    pub src: core::option::Option<AttributeValueOwned>,
32553    ///
32554    ///     <p>One or more strings separated by commas, indicating possible image sources for the <a href="/en-US/docs/Glossary/User_agent">user agent</a> to use. Each string is composed of:</p>
32555    ///     <ol>
32556    ///       <li>A <a href="/en-US/docs/Glossary/URL">URL</a> to an image</li>
32557    ///       <li>Optionally, whitespace followed by one of:
32558    ///         <ul>
32559    ///           <li>A width descriptor (a positive integer directly followed by <code>w</code>). The width descriptor is divided by the source size given in the <code>sizes</code> attribute to calculate the effective pixel density.</li>
32560    ///           <li>A pixel density descriptor (a positive floating point number directly followed by <code>x</code>).</li>
32561    ///         </ul>
32562    ///       </li>
32563    ///     </ol>
32564    ///     <p>If no descriptor is specified, the source is assigned the default descriptor of <code>1x</code>.</p>
32565    ///     <p>It is incorrect to mix width descriptors and pixel density descriptors in the same <code>srcset</code> attribute. Duplicate descriptors (for instance, two sources in the same <code>srcset</code> which are both described with <code>2x</code>) are also invalid.</p>
32566    ///     <p>If the <code>srcset</code> attribute uses width descriptors, the <code>sizes</code> attribute must also be present, or the <code>srcset</code> itself will be ignored.</p>
32567    ///     <p>The user agent selects any of the available sources at its discretion. This provides them with significant leeway to tailor their selection based on things like user preferences or <a href="/en-US/docs/Glossary/Bandwidth">bandwidth</a> conditions. See our <a href="/en-US/docs/Learn/HTML/Multimedia_and_embedding/Responsive_images">Responsive images</a> tutorial for an example.</p>
32568    ///   
32569    pub srcset: core::option::Option<AttributeValueOwned>,
32570    ///
32571    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
32572    ///   
32573    pub style: core::option::Option<AttributeValueOwned>,
32574    ///
32575    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
32576    ///     <ul>
32577    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
32578    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
32579    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
32580    ///     </ul>
32581    ///   
32582    pub tabindex: core::option::Option<AttributeValueOwned>,
32583    ///
32584    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
32585    ///   
32586    pub title: core::option::Option<AttributeValueOwned>,
32587    ///
32588    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
32589    ///     <ul>
32590    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
32591    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
32592    ///     </ul>
32593    ///   
32594    pub translate: core::option::Option<AttributeValueOwned>,
32595    ///
32596    ///     <p>The partial <a href="/en-US/docs/Glossary/URL">URL</a> (starting with <code>#</code>) of an <a href="/en-US/docs/Web/HTML/Element/map">image map</a> associated with the element.</p>
32597    ///     <div class="notecard note" id="sect6">
32598    ///       <p><strong>Note:</strong> You cannot use this attribute if the <code>&lt;img&gt;</code> element is inside an <a href="/en-US/docs/Web/HTML/Element/a"><code>&lt;a&gt;</code></a> or <a href="/en-US/docs/Web/HTML/Element/button"><code>&lt;button&gt;</code></a> element.</p>
32599    ///     </div>
32600    ///   
32601    pub usemap: core::option::Option<AttributeValueOwned>,
32602    ///
32603    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
32604    ///     <ul>
32605    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
32606    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
32607    ///     </ul>
32608    ///   
32609    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
32610    ///
32611    ///     <p>The intrinsic width of the image in pixels. Must be an integer without a unit.</p>
32612    ///   
32613    pub width: core::option::Option<AttributeValueOwned>,
32614}
32615#[allow(deprecated)]
32616#[cfg(feature = "alloc")]
32617impl ImgOwned {
32618    /// Get the tag name of the element.
32619    /// This is the same as the name of the struct, in kebab-case.
32620    pub fn tag() -> &'static str {
32621        "img"
32622    }
32623    /// Sets an attribute of the element.
32624    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
32625    /// If the `alloc` feature is disabled, this function will silently fail.
32626    ///
32627    /// # Note
32628    /// This only works when the attribute is lowercase.
32629    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
32630        match name {
32631            "accesskey" => self.accesskey = Some(value.into()),
32632            "alt" => self.alt = Some(value.into()),
32633            "autocapitalize" => self.autocapitalize = Some(value.into()),
32634            "autofocus" => self.autofocus = Some(value.into()),
32635            "class" => self.class = Some(value.into()),
32636            "contenteditable" => self.contenteditable = Some(value.into()),
32637            "contextmenu" => self.contextmenu = Some(value.into()),
32638            "crossorigin" => self.crossorigin = Some(value.into()),
32639            "decoding" => self.decoding = Some(value.into()),
32640            "dir" => self.dir = Some(value.into()),
32641            "draggable" => self.draggable = Some(value.into()),
32642            "elementtiming" => self.elementtiming = Some(value.into()),
32643            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
32644            "exportparts" => self.exportparts = Some(value.into()),
32645            "fetchpriority" => self.fetchpriority = Some(value.into()),
32646            "height" => self.height = Some(value.into()),
32647            "hidden" => self.hidden = Some(value.into()),
32648            "id" => self.id = Some(value.into()),
32649            "inert" => self.inert = Some(value.into()),
32650            "inputmode" => self.inputmode = Some(value.into()),
32651            "is" => self.is = Some(value.into()),
32652            "ismap" => self.ismap = Some(value.into()),
32653            "itemid" => self.itemid = Some(value.into()),
32654            "itemprop" => self.itemprop = Some(value.into()),
32655            "itemref" => self.itemref = Some(value.into()),
32656            "itemscope" => self.itemscope = Some(value.into()),
32657            "itemtype" => self.itemtype = Some(value.into()),
32658            "lang" => self.lang = Some(value.into()),
32659            "loading" => self.loading = Some(value.into()),
32660            "nonce" => self.nonce = Some(value.into()),
32661            "part" => self.part = Some(value.into()),
32662            "popover" => self.popover = Some(value.into()),
32663            "referrerpolicy" => self.referrerpolicy = Some(value.into()),
32664            "role" => self.role = Some(value.into()),
32665            "sizes" => self.sizes = Some(value.into()),
32666            "slot" => self.slot = Some(value.into()),
32667            "spellcheck" => self.spellcheck = Some(value.into()),
32668            "src" => self.src = Some(value.into()),
32669            "srcset" => self.srcset = Some(value.into()),
32670            "style" => self.style = Some(value.into()),
32671            "tabindex" => self.tabindex = Some(value.into()),
32672            "title" => self.title = Some(value.into()),
32673            "translate" => self.translate = Some(value.into()),
32674            "usemap" => self.usemap = Some(value.into()),
32675            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
32676            "width" => self.width = Some(value.into()),
32677            #[cfg(feature = "alloc")]
32678            _ => {
32679                #[allow(clippy::useless_conversion)]
32680                self.extra.insert(name.into(), value.into());
32681            }
32682            #[cfg(not(feature = "alloc"))]
32683            _ => {}
32684        }
32685    }
32686}
32687/// The <strong><code>&lt;map&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element is used with <a href="/en-US/docs/Web/HTML/Element/area"><code>&lt;area&gt;</code></a> elements to define an image map (a clickable link area).
32688///
32689/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/map>
32690
32691#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
32692pub struct Map<'life> {
32693    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
32694    ///   
32695    pub accesskey: core::option::Option<AttributeValue<'life>>,
32696    ///
32697    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
32698    ///     <ul>
32699    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
32700    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
32701    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
32702    ///       <li><code>characters</code>, all letters should default to uppercase</li>
32703    ///     </ul>
32704    ///   
32705    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
32706    ///
32707    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
32708    ///   
32709    pub autofocus: core::option::Option<AttributeValue<'life>>,
32710    ///
32711    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
32712    ///   
32713    pub class: core::option::Option<AttributeValue<'life>>,
32714    ///
32715    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
32716    ///     <ul>
32717    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
32718    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
32719    ///     </ul>
32720    ///   
32721    pub contenteditable: core::option::Option<AttributeValue<'life>>,
32722    ///
32723    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
32724    ///   
32725    pub contextmenu: core::option::Option<AttributeValue<'life>>,
32726    ///
32727    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
32728    ///   
32729    #[cfg(feature = "alloc")]
32730    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
32731    ///
32732    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
32733    ///     <ul>
32734    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
32735    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
32736    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
32737    ///     </ul>
32738    ///   
32739    pub dir: core::option::Option<AttributeValue<'life>>,
32740    ///
32741    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
32742    ///     <ul>
32743    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
32744    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
32745    ///     </ul>
32746    ///   
32747    pub draggable: core::option::Option<AttributeValue<'life>>,
32748    ///
32749    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
32750    ///   
32751    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
32752    ///
32753    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
32754    ///   
32755    pub exportparts: core::option::Option<AttributeValue<'life>>,
32756    /// /// Extra attributes of the element.
32757
32758    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
32759    #[cfg(feature = "alloc")]
32760    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
32761    ///
32762    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
32763    ///   
32764    pub hidden: core::option::Option<AttributeValue<'life>>,
32765    ///
32766    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
32767    ///   
32768    pub id: core::option::Option<AttributeValue<'life>>,
32769    ///
32770    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
32771    ///   
32772    pub inert: core::option::Option<AttributeValue<'life>>,
32773    ///
32774    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
32775    ///   
32776    pub inputmode: core::option::Option<AttributeValue<'life>>,
32777    ///
32778    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
32779    ///   
32780    pub is: core::option::Option<AttributeValue<'life>>,
32781    ///
32782    ///     <p>The unique, global identifier of an item.</p>
32783    ///   
32784    pub itemid: core::option::Option<AttributeValue<'life>>,
32785    ///
32786    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
32787    ///   
32788    pub itemprop: core::option::Option<AttributeValue<'life>>,
32789    ///
32790    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
32791    ///   
32792    pub itemref: core::option::Option<AttributeValue<'life>>,
32793    ///
32794    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
32795    ///   
32796    pub itemscope: core::option::Option<AttributeValue<'life>>,
32797    ///
32798    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
32799    ///   
32800    pub itemtype: core::option::Option<AttributeValue<'life>>,
32801    ///
32802    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
32803    ///   
32804    pub lang: core::option::Option<AttributeValue<'life>>,
32805    ///
32806    ///     <p>The <code>name</code> attribute gives the map a name so that it can be referenced. The attribute must be present and must have a non-empty value with no space characters. The value of the <code>name</code> attribute must not be equal to the value of the <code>name</code> attribute of another <code>&lt;map&gt;</code> element in the same document. If the <a href="/en-US/docs/Web/HTML/Global_attributes#id"><code>id</code></a> attribute is also specified, both attributes must have the same value.</p>
32807    ///   
32808    pub name: core::option::Option<AttributeValue<'life>>,
32809    ///
32810    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
32811    ///   
32812    pub nonce: core::option::Option<AttributeValue<'life>>,
32813    ///
32814    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
32815    ///   
32816    pub part: core::option::Option<AttributeValue<'life>>,
32817    ///
32818    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
32819    ///   
32820    pub popover: core::option::Option<AttributeValue<'life>>,
32821    ///
32822    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
32823    ///   
32824    pub role: core::option::Option<AttributeValue<'life>>,
32825    ///
32826    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
32827    ///   
32828    pub slot: core::option::Option<AttributeValue<'life>>,
32829    ///
32830    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
32831    ///     <ul>
32832    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
32833    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
32834    ///     </ul>
32835    ///   
32836    pub spellcheck: core::option::Option<AttributeValue<'life>>,
32837    ///
32838    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
32839    ///   
32840    pub style: core::option::Option<AttributeValue<'life>>,
32841    ///
32842    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
32843    ///     <ul>
32844    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
32845    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
32846    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
32847    ///     </ul>
32848    ///   
32849    pub tabindex: core::option::Option<AttributeValue<'life>>,
32850    ///
32851    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
32852    ///   
32853    pub title: core::option::Option<AttributeValue<'life>>,
32854    ///
32855    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
32856    ///     <ul>
32857    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
32858    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
32859    ///     </ul>
32860    ///   
32861    pub translate: core::option::Option<AttributeValue<'life>>,
32862    ///
32863    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
32864    ///     <ul>
32865    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
32866    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
32867    ///     </ul>
32868    ///   
32869    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
32870}
32871#[allow(deprecated)]
32872
32873impl<'life> Map<'life> {
32874    /// Get the tag name of the element.
32875    /// This is the same as the name of the struct, in kebab-case.
32876    pub fn tag() -> &'static str {
32877        "map"
32878    }
32879    /// Sets an attribute of the element.
32880    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
32881    /// If the `alloc` feature is disabled, this function will silently fail.
32882    ///
32883    /// # Note
32884    /// This only works when the attribute is lowercase.
32885    pub fn set_attr(
32886        &mut self,
32887        name: &'life str,
32888        value: impl core::convert::Into<AttributeValue<'life>>,
32889    ) {
32890        match name {
32891            "accesskey" => self.accesskey = Some(value.into()),
32892            "autocapitalize" => self.autocapitalize = Some(value.into()),
32893            "autofocus" => self.autofocus = Some(value.into()),
32894            "class" => self.class = Some(value.into()),
32895            "contenteditable" => self.contenteditable = Some(value.into()),
32896            "contextmenu" => self.contextmenu = Some(value.into()),
32897            "dir" => self.dir = Some(value.into()),
32898            "draggable" => self.draggable = Some(value.into()),
32899            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
32900            "exportparts" => self.exportparts = Some(value.into()),
32901            "hidden" => self.hidden = Some(value.into()),
32902            "id" => self.id = Some(value.into()),
32903            "inert" => self.inert = Some(value.into()),
32904            "inputmode" => self.inputmode = Some(value.into()),
32905            "is" => self.is = Some(value.into()),
32906            "itemid" => self.itemid = Some(value.into()),
32907            "itemprop" => self.itemprop = Some(value.into()),
32908            "itemref" => self.itemref = Some(value.into()),
32909            "itemscope" => self.itemscope = Some(value.into()),
32910            "itemtype" => self.itemtype = Some(value.into()),
32911            "lang" => self.lang = Some(value.into()),
32912            "name" => self.name = Some(value.into()),
32913            "nonce" => self.nonce = Some(value.into()),
32914            "part" => self.part = Some(value.into()),
32915            "popover" => self.popover = Some(value.into()),
32916            "role" => self.role = Some(value.into()),
32917            "slot" => self.slot = Some(value.into()),
32918            "spellcheck" => self.spellcheck = Some(value.into()),
32919            "style" => self.style = Some(value.into()),
32920            "tabindex" => self.tabindex = Some(value.into()),
32921            "title" => self.title = Some(value.into()),
32922            "translate" => self.translate = Some(value.into()),
32923            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
32924            #[cfg(feature = "alloc")]
32925            _ => {
32926                #[allow(clippy::useless_conversion)]
32927                self.extra.insert(name.into(), value.into());
32928            }
32929            #[cfg(not(feature = "alloc"))]
32930            _ => {}
32931        }
32932    }
32933}
32934/// The <strong><code>&lt;map&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element is used with <a href="/en-US/docs/Web/HTML/Element/area"><code>&lt;area&gt;</code></a> elements to define an image map (a clickable link area).
32935///
32936/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/map>
32937
32938#[cfg(feature = "alloc")]
32939#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
32940pub struct MapOwned {
32941    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
32942    ///   
32943    pub accesskey: core::option::Option<AttributeValueOwned>,
32944    ///
32945    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
32946    ///     <ul>
32947    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
32948    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
32949    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
32950    ///       <li><code>characters</code>, all letters should default to uppercase</li>
32951    ///     </ul>
32952    ///   
32953    pub autocapitalize: core::option::Option<AttributeValueOwned>,
32954    ///
32955    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
32956    ///   
32957    pub autofocus: core::option::Option<AttributeValueOwned>,
32958    ///
32959    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
32960    ///   
32961    pub class: core::option::Option<AttributeValueOwned>,
32962    ///
32963    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
32964    ///     <ul>
32965    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
32966    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
32967    ///     </ul>
32968    ///   
32969    pub contenteditable: core::option::Option<AttributeValueOwned>,
32970    ///
32971    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
32972    ///   
32973    pub contextmenu: core::option::Option<AttributeValueOwned>,
32974    ///
32975    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
32976    ///   
32977    #[cfg(feature = "alloc")]
32978    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
32979    ///
32980    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
32981    ///     <ul>
32982    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
32983    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
32984    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
32985    ///     </ul>
32986    ///   
32987    pub dir: core::option::Option<AttributeValueOwned>,
32988    ///
32989    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
32990    ///     <ul>
32991    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
32992    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
32993    ///     </ul>
32994    ///   
32995    pub draggable: core::option::Option<AttributeValueOwned>,
32996    ///
32997    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
32998    ///   
32999    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
33000    ///
33001    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
33002    ///   
33003    pub exportparts: core::option::Option<AttributeValueOwned>,
33004    /// /// Extra attributes of the element.
33005
33006    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
33007    #[cfg(feature = "alloc")]
33008    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
33009    ///
33010    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
33011    ///   
33012    pub hidden: core::option::Option<AttributeValueOwned>,
33013    ///
33014    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
33015    ///   
33016    pub id: core::option::Option<AttributeValueOwned>,
33017    ///
33018    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
33019    ///   
33020    pub inert: core::option::Option<AttributeValueOwned>,
33021    ///
33022    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
33023    ///   
33024    pub inputmode: core::option::Option<AttributeValueOwned>,
33025    ///
33026    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
33027    ///   
33028    pub is: core::option::Option<AttributeValueOwned>,
33029    ///
33030    ///     <p>The unique, global identifier of an item.</p>
33031    ///   
33032    pub itemid: core::option::Option<AttributeValueOwned>,
33033    ///
33034    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
33035    ///   
33036    pub itemprop: core::option::Option<AttributeValueOwned>,
33037    ///
33038    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
33039    ///   
33040    pub itemref: core::option::Option<AttributeValueOwned>,
33041    ///
33042    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
33043    ///   
33044    pub itemscope: core::option::Option<AttributeValueOwned>,
33045    ///
33046    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
33047    ///   
33048    pub itemtype: core::option::Option<AttributeValueOwned>,
33049    ///
33050    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
33051    ///   
33052    pub lang: core::option::Option<AttributeValueOwned>,
33053    ///
33054    ///     <p>The <code>name</code> attribute gives the map a name so that it can be referenced. The attribute must be present and must have a non-empty value with no space characters. The value of the <code>name</code> attribute must not be equal to the value of the <code>name</code> attribute of another <code>&lt;map&gt;</code> element in the same document. If the <a href="/en-US/docs/Web/HTML/Global_attributes#id"><code>id</code></a> attribute is also specified, both attributes must have the same value.</p>
33055    ///   
33056    pub name: core::option::Option<AttributeValueOwned>,
33057    ///
33058    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
33059    ///   
33060    pub nonce: core::option::Option<AttributeValueOwned>,
33061    ///
33062    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
33063    ///   
33064    pub part: core::option::Option<AttributeValueOwned>,
33065    ///
33066    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
33067    ///   
33068    pub popover: core::option::Option<AttributeValueOwned>,
33069    ///
33070    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
33071    ///   
33072    pub role: core::option::Option<AttributeValueOwned>,
33073    ///
33074    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
33075    ///   
33076    pub slot: core::option::Option<AttributeValueOwned>,
33077    ///
33078    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
33079    ///     <ul>
33080    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
33081    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
33082    ///     </ul>
33083    ///   
33084    pub spellcheck: core::option::Option<AttributeValueOwned>,
33085    ///
33086    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
33087    ///   
33088    pub style: core::option::Option<AttributeValueOwned>,
33089    ///
33090    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
33091    ///     <ul>
33092    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
33093    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
33094    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
33095    ///     </ul>
33096    ///   
33097    pub tabindex: core::option::Option<AttributeValueOwned>,
33098    ///
33099    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
33100    ///   
33101    pub title: core::option::Option<AttributeValueOwned>,
33102    ///
33103    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
33104    ///     <ul>
33105    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
33106    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
33107    ///     </ul>
33108    ///   
33109    pub translate: core::option::Option<AttributeValueOwned>,
33110    ///
33111    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
33112    ///     <ul>
33113    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
33114    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
33115    ///     </ul>
33116    ///   
33117    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
33118}
33119#[allow(deprecated)]
33120#[cfg(feature = "alloc")]
33121impl MapOwned {
33122    /// Get the tag name of the element.
33123    /// This is the same as the name of the struct, in kebab-case.
33124    pub fn tag() -> &'static str {
33125        "map"
33126    }
33127    /// Sets an attribute of the element.
33128    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
33129    /// If the `alloc` feature is disabled, this function will silently fail.
33130    ///
33131    /// # Note
33132    /// This only works when the attribute is lowercase.
33133    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
33134        match name {
33135            "accesskey" => self.accesskey = Some(value.into()),
33136            "autocapitalize" => self.autocapitalize = Some(value.into()),
33137            "autofocus" => self.autofocus = Some(value.into()),
33138            "class" => self.class = Some(value.into()),
33139            "contenteditable" => self.contenteditable = Some(value.into()),
33140            "contextmenu" => self.contextmenu = Some(value.into()),
33141            "dir" => self.dir = Some(value.into()),
33142            "draggable" => self.draggable = Some(value.into()),
33143            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
33144            "exportparts" => self.exportparts = Some(value.into()),
33145            "hidden" => self.hidden = Some(value.into()),
33146            "id" => self.id = Some(value.into()),
33147            "inert" => self.inert = Some(value.into()),
33148            "inputmode" => self.inputmode = Some(value.into()),
33149            "is" => self.is = Some(value.into()),
33150            "itemid" => self.itemid = Some(value.into()),
33151            "itemprop" => self.itemprop = Some(value.into()),
33152            "itemref" => self.itemref = Some(value.into()),
33153            "itemscope" => self.itemscope = Some(value.into()),
33154            "itemtype" => self.itemtype = Some(value.into()),
33155            "lang" => self.lang = Some(value.into()),
33156            "name" => self.name = Some(value.into()),
33157            "nonce" => self.nonce = Some(value.into()),
33158            "part" => self.part = Some(value.into()),
33159            "popover" => self.popover = Some(value.into()),
33160            "role" => self.role = Some(value.into()),
33161            "slot" => self.slot = Some(value.into()),
33162            "spellcheck" => self.spellcheck = Some(value.into()),
33163            "style" => self.style = Some(value.into()),
33164            "tabindex" => self.tabindex = Some(value.into()),
33165            "title" => self.title = Some(value.into()),
33166            "translate" => self.translate = Some(value.into()),
33167            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
33168            #[cfg(feature = "alloc")]
33169            _ => {
33170                #[allow(clippy::useless_conversion)]
33171                self.extra.insert(name.into(), value.into());
33172            }
33173            #[cfg(not(feature = "alloc"))]
33174            _ => {}
33175        }
33176    }
33177}
33178/// The <strong><code>&lt;track&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element is used as a child of the media elements, <a href="/en-US/docs/Web/HTML/Element/audio"><code>&lt;audio&gt;</code></a> and <a href="/en-US/docs/Web/HTML/Element/video"><code>&lt;video&gt;</code></a>. It lets you specify timed text tracks (or time-based data), for example to automatically handle subtitles. The tracks are formatted in <a href="/en-US/docs/Web/API/WebVTT_API">WebVTT format</a> (<code>.vtt</code> files) — Web Video Text Tracks.
33179///
33180/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/track>
33181
33182#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
33183pub struct Track<'life> {
33184    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
33185    ///   
33186    pub accesskey: core::option::Option<AttributeValue<'life>>,
33187    ///
33188    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
33189    ///     <ul>
33190    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
33191    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
33192    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
33193    ///       <li><code>characters</code>, all letters should default to uppercase</li>
33194    ///     </ul>
33195    ///   
33196    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
33197    ///
33198    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
33199    ///   
33200    pub autofocus: core::option::Option<AttributeValue<'life>>,
33201    ///
33202    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
33203    ///   
33204    pub class: core::option::Option<AttributeValue<'life>>,
33205    ///
33206    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
33207    ///     <ul>
33208    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
33209    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
33210    ///     </ul>
33211    ///   
33212    pub contenteditable: core::option::Option<AttributeValue<'life>>,
33213    ///
33214    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
33215    ///   
33216    pub contextmenu: core::option::Option<AttributeValue<'life>>,
33217    ///
33218    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
33219    ///   
33220    #[cfg(feature = "alloc")]
33221    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
33222    ///
33223    ///     <p>This attribute indicates that the track should be enabled unless the user's preferences indicate that another track is more appropriate. This may only be used on one <code>track</code> element per media element.</p>
33224    ///   
33225    pub default: core::option::Option<AttributeValue<'life>>,
33226    ///
33227    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
33228    ///     <ul>
33229    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
33230    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
33231    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
33232    ///     </ul>
33233    ///   
33234    pub dir: core::option::Option<AttributeValue<'life>>,
33235    ///
33236    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
33237    ///     <ul>
33238    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
33239    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
33240    ///     </ul>
33241    ///   
33242    pub draggable: core::option::Option<AttributeValue<'life>>,
33243    ///
33244    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
33245    ///   
33246    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
33247    ///
33248    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
33249    ///   
33250    pub exportparts: core::option::Option<AttributeValue<'life>>,
33251    /// /// Extra attributes of the element.
33252
33253    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
33254    #[cfg(feature = "alloc")]
33255    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
33256    ///
33257    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
33258    ///   
33259    pub hidden: core::option::Option<AttributeValue<'life>>,
33260    ///
33261    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
33262    ///   
33263    pub id: core::option::Option<AttributeValue<'life>>,
33264    ///
33265    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
33266    ///   
33267    pub inert: core::option::Option<AttributeValue<'life>>,
33268    ///
33269    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
33270    ///   
33271    pub inputmode: core::option::Option<AttributeValue<'life>>,
33272    ///
33273    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
33274    ///   
33275    pub is: core::option::Option<AttributeValue<'life>>,
33276    ///
33277    ///     <p>The unique, global identifier of an item.</p>
33278    ///   
33279    pub itemid: core::option::Option<AttributeValue<'life>>,
33280    ///
33281    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
33282    ///   
33283    pub itemprop: core::option::Option<AttributeValue<'life>>,
33284    ///
33285    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
33286    ///   
33287    pub itemref: core::option::Option<AttributeValue<'life>>,
33288    ///
33289    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
33290    ///   
33291    pub itemscope: core::option::Option<AttributeValue<'life>>,
33292    ///
33293    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
33294    ///   
33295    pub itemtype: core::option::Option<AttributeValue<'life>>,
33296    ///
33297    ///     <p>How the text track is meant to be used. If omitted the default kind is <code>subtitles</code>. If the attribute contains an invalid value, it will use <code>metadata</code> (Versions of Chrome earlier than 52 treated an invalid value as <code>subtitles</code>). The following keywords are allowed:</p>
33298    ///     <ul>
33299    ///       <li><code>subtitles</code>
33300    ///         <ul>
33301    ///           <li>Subtitles provide translation of content that cannot be understood by the viewer. For example speech or text that is not English in an English language film.</li>
33302    ///           <li>Subtitles may contain additional content, usually extra background information. For example the text at the beginning of the Star Wars films, or the date, time, and location of a scene.</li>
33303    ///         </ul>
33304    ///       </li>
33305    ///       <li><code>captions</code>
33306    ///         <ul>
33307    ///           <li>Closed captions provide a transcription and possibly a translation of audio.</li>
33308    ///           <li>It may include important non-verbal information such as music cues or sound effects. It may indicate the cue's source (e.g. music, text, character).</li>
33309    ///           <li>Suitable for users who are deaf or when the sound is muted.</li>
33310    ///         </ul>
33311    ///       </li>
33312    ///       <li><code>descriptions</code>
33313    ///         <ul>
33314    ///           <li>Textual description of the video content.</li>
33315    ///           <li>Suitable for users who are blind or where the video cannot be seen.</li>
33316    ///         </ul>
33317    ///       </li>
33318    ///       <li><code>chapters</code>
33319    ///         <ul>
33320    ///           <li>Chapter titles are intended to be used when the user is navigating the media resource.</li>
33321    ///         </ul>
33322    ///       </li>
33323    ///       <li><code>metadata</code>
33324    ///         <ul>
33325    ///           <li>Tracks used by scripts. Not visible to the user.</li>
33326    ///         </ul>
33327    ///       </li>
33328    ///     </ul>
33329    ///   
33330    pub kind: core::option::Option<AttributeValue<'life>>,
33331    ///
33332    ///     <p>A user-readable title of the text track which is used by the browser when listing available text tracks.</p>
33333    ///   
33334    pub label: core::option::Option<AttributeValue<'life>>,
33335    ///
33336    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
33337    ///   
33338    pub lang: core::option::Option<AttributeValue<'life>>,
33339    ///
33340    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
33341    ///   
33342    pub nonce: core::option::Option<AttributeValue<'life>>,
33343    ///
33344    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
33345    ///   
33346    pub part: core::option::Option<AttributeValue<'life>>,
33347    ///
33348    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
33349    ///   
33350    pub popover: core::option::Option<AttributeValue<'life>>,
33351    ///
33352    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
33353    ///   
33354    pub role: core::option::Option<AttributeValue<'life>>,
33355    ///
33356    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
33357    ///   
33358    pub slot: core::option::Option<AttributeValue<'life>>,
33359    ///
33360    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
33361    ///     <ul>
33362    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
33363    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
33364    ///     </ul>
33365    ///   
33366    pub spellcheck: core::option::Option<AttributeValue<'life>>,
33367    ///
33368    ///     <p>Address of the track (<code>.vtt</code> 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 <a href="/en-US/docs/Web/HTML/Element/audio"><code>&lt;audio&gt;</code></a> or <a href="/en-US/docs/Web/HTML/Element/video"><code>&lt;video&gt;</code></a> parent element of the <code>track</code> element has a <a href="/en-US/docs/Web/HTML/Attributes/crossorigin"><code>crossorigin</code></a> attribute.</p>
33369    ///   
33370    pub src: core::option::Option<AttributeValue<'life>>,
33371    ///
33372    ///     <p>Language of the track text data. It must be a valid <a href="https://r12a.github.io/app-subtags/" class="external" target="_blank">BCP 47</a> language tag. If the <code>kind</code> attribute is set to <code>subtitles</code>, then <code>srclang</code> must be defined.</p>
33373    ///   
33374    pub srclang: core::option::Option<AttributeValue<'life>>,
33375    ///
33376    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
33377    ///   
33378    pub style: core::option::Option<AttributeValue<'life>>,
33379    ///
33380    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
33381    ///     <ul>
33382    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
33383    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
33384    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
33385    ///     </ul>
33386    ///   
33387    pub tabindex: core::option::Option<AttributeValue<'life>>,
33388    ///
33389    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
33390    ///   
33391    pub title: core::option::Option<AttributeValue<'life>>,
33392    ///
33393    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
33394    ///     <ul>
33395    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
33396    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
33397    ///     </ul>
33398    ///   
33399    pub translate: core::option::Option<AttributeValue<'life>>,
33400    ///
33401    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
33402    ///     <ul>
33403    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
33404    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
33405    ///     </ul>
33406    ///   
33407    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
33408}
33409#[allow(deprecated)]
33410
33411impl<'life> Track<'life> {
33412    /// Get the tag name of the element.
33413    /// This is the same as the name of the struct, in kebab-case.
33414    pub fn tag() -> &'static str {
33415        "track"
33416    }
33417    /// Sets an attribute of the element.
33418    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
33419    /// If the `alloc` feature is disabled, this function will silently fail.
33420    ///
33421    /// # Note
33422    /// This only works when the attribute is lowercase.
33423    pub fn set_attr(
33424        &mut self,
33425        name: &'life str,
33426        value: impl core::convert::Into<AttributeValue<'life>>,
33427    ) {
33428        match name {
33429            "accesskey" => self.accesskey = Some(value.into()),
33430            "autocapitalize" => self.autocapitalize = Some(value.into()),
33431            "autofocus" => self.autofocus = Some(value.into()),
33432            "class" => self.class = Some(value.into()),
33433            "contenteditable" => self.contenteditable = Some(value.into()),
33434            "contextmenu" => self.contextmenu = Some(value.into()),
33435            "default" => self.default = Some(value.into()),
33436            "dir" => self.dir = Some(value.into()),
33437            "draggable" => self.draggable = Some(value.into()),
33438            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
33439            "exportparts" => self.exportparts = Some(value.into()),
33440            "hidden" => self.hidden = Some(value.into()),
33441            "id" => self.id = Some(value.into()),
33442            "inert" => self.inert = Some(value.into()),
33443            "inputmode" => self.inputmode = Some(value.into()),
33444            "is" => self.is = Some(value.into()),
33445            "itemid" => self.itemid = Some(value.into()),
33446            "itemprop" => self.itemprop = Some(value.into()),
33447            "itemref" => self.itemref = Some(value.into()),
33448            "itemscope" => self.itemscope = Some(value.into()),
33449            "itemtype" => self.itemtype = Some(value.into()),
33450            "kind" => self.kind = Some(value.into()),
33451            "label" => self.label = Some(value.into()),
33452            "lang" => self.lang = Some(value.into()),
33453            "nonce" => self.nonce = Some(value.into()),
33454            "part" => self.part = Some(value.into()),
33455            "popover" => self.popover = Some(value.into()),
33456            "role" => self.role = Some(value.into()),
33457            "slot" => self.slot = Some(value.into()),
33458            "spellcheck" => self.spellcheck = Some(value.into()),
33459            "src" => self.src = Some(value.into()),
33460            "srclang" => self.srclang = Some(value.into()),
33461            "style" => self.style = Some(value.into()),
33462            "tabindex" => self.tabindex = Some(value.into()),
33463            "title" => self.title = Some(value.into()),
33464            "translate" => self.translate = Some(value.into()),
33465            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
33466            #[cfg(feature = "alloc")]
33467            _ => {
33468                #[allow(clippy::useless_conversion)]
33469                self.extra.insert(name.into(), value.into());
33470            }
33471            #[cfg(not(feature = "alloc"))]
33472            _ => {}
33473        }
33474    }
33475}
33476/// The <strong><code>&lt;track&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element is used as a child of the media elements, <a href="/en-US/docs/Web/HTML/Element/audio"><code>&lt;audio&gt;</code></a> and <a href="/en-US/docs/Web/HTML/Element/video"><code>&lt;video&gt;</code></a>. It lets you specify timed text tracks (or time-based data), for example to automatically handle subtitles. The tracks are formatted in <a href="/en-US/docs/Web/API/WebVTT_API">WebVTT format</a> (<code>.vtt</code> files) — Web Video Text Tracks.
33477///
33478/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/track>
33479
33480#[cfg(feature = "alloc")]
33481#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
33482pub struct TrackOwned {
33483    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
33484    ///   
33485    pub accesskey: core::option::Option<AttributeValueOwned>,
33486    ///
33487    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
33488    ///     <ul>
33489    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
33490    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
33491    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
33492    ///       <li><code>characters</code>, all letters should default to uppercase</li>
33493    ///     </ul>
33494    ///   
33495    pub autocapitalize: core::option::Option<AttributeValueOwned>,
33496    ///
33497    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
33498    ///   
33499    pub autofocus: core::option::Option<AttributeValueOwned>,
33500    ///
33501    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
33502    ///   
33503    pub class: core::option::Option<AttributeValueOwned>,
33504    ///
33505    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
33506    ///     <ul>
33507    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
33508    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
33509    ///     </ul>
33510    ///   
33511    pub contenteditable: core::option::Option<AttributeValueOwned>,
33512    ///
33513    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
33514    ///   
33515    pub contextmenu: core::option::Option<AttributeValueOwned>,
33516    ///
33517    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
33518    ///   
33519    #[cfg(feature = "alloc")]
33520    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
33521    ///
33522    ///     <p>This attribute indicates that the track should be enabled unless the user's preferences indicate that another track is more appropriate. This may only be used on one <code>track</code> element per media element.</p>
33523    ///   
33524    pub default: core::option::Option<AttributeValueOwned>,
33525    ///
33526    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
33527    ///     <ul>
33528    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
33529    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
33530    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
33531    ///     </ul>
33532    ///   
33533    pub dir: core::option::Option<AttributeValueOwned>,
33534    ///
33535    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
33536    ///     <ul>
33537    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
33538    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
33539    ///     </ul>
33540    ///   
33541    pub draggable: core::option::Option<AttributeValueOwned>,
33542    ///
33543    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
33544    ///   
33545    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
33546    ///
33547    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
33548    ///   
33549    pub exportparts: core::option::Option<AttributeValueOwned>,
33550    /// /// Extra attributes of the element.
33551
33552    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
33553    #[cfg(feature = "alloc")]
33554    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
33555    ///
33556    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
33557    ///   
33558    pub hidden: core::option::Option<AttributeValueOwned>,
33559    ///
33560    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
33561    ///   
33562    pub id: core::option::Option<AttributeValueOwned>,
33563    ///
33564    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
33565    ///   
33566    pub inert: core::option::Option<AttributeValueOwned>,
33567    ///
33568    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
33569    ///   
33570    pub inputmode: core::option::Option<AttributeValueOwned>,
33571    ///
33572    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
33573    ///   
33574    pub is: core::option::Option<AttributeValueOwned>,
33575    ///
33576    ///     <p>The unique, global identifier of an item.</p>
33577    ///   
33578    pub itemid: core::option::Option<AttributeValueOwned>,
33579    ///
33580    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
33581    ///   
33582    pub itemprop: core::option::Option<AttributeValueOwned>,
33583    ///
33584    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
33585    ///   
33586    pub itemref: core::option::Option<AttributeValueOwned>,
33587    ///
33588    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
33589    ///   
33590    pub itemscope: core::option::Option<AttributeValueOwned>,
33591    ///
33592    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
33593    ///   
33594    pub itemtype: core::option::Option<AttributeValueOwned>,
33595    ///
33596    ///     <p>How the text track is meant to be used. If omitted the default kind is <code>subtitles</code>. If the attribute contains an invalid value, it will use <code>metadata</code> (Versions of Chrome earlier than 52 treated an invalid value as <code>subtitles</code>). The following keywords are allowed:</p>
33597    ///     <ul>
33598    ///       <li><code>subtitles</code>
33599    ///         <ul>
33600    ///           <li>Subtitles provide translation of content that cannot be understood by the viewer. For example speech or text that is not English in an English language film.</li>
33601    ///           <li>Subtitles may contain additional content, usually extra background information. For example the text at the beginning of the Star Wars films, or the date, time, and location of a scene.</li>
33602    ///         </ul>
33603    ///       </li>
33604    ///       <li><code>captions</code>
33605    ///         <ul>
33606    ///           <li>Closed captions provide a transcription and possibly a translation of audio.</li>
33607    ///           <li>It may include important non-verbal information such as music cues or sound effects. It may indicate the cue's source (e.g. music, text, character).</li>
33608    ///           <li>Suitable for users who are deaf or when the sound is muted.</li>
33609    ///         </ul>
33610    ///       </li>
33611    ///       <li><code>descriptions</code>
33612    ///         <ul>
33613    ///           <li>Textual description of the video content.</li>
33614    ///           <li>Suitable for users who are blind or where the video cannot be seen.</li>
33615    ///         </ul>
33616    ///       </li>
33617    ///       <li><code>chapters</code>
33618    ///         <ul>
33619    ///           <li>Chapter titles are intended to be used when the user is navigating the media resource.</li>
33620    ///         </ul>
33621    ///       </li>
33622    ///       <li><code>metadata</code>
33623    ///         <ul>
33624    ///           <li>Tracks used by scripts. Not visible to the user.</li>
33625    ///         </ul>
33626    ///       </li>
33627    ///     </ul>
33628    ///   
33629    pub kind: core::option::Option<AttributeValueOwned>,
33630    ///
33631    ///     <p>A user-readable title of the text track which is used by the browser when listing available text tracks.</p>
33632    ///   
33633    pub label: core::option::Option<AttributeValueOwned>,
33634    ///
33635    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
33636    ///   
33637    pub lang: core::option::Option<AttributeValueOwned>,
33638    ///
33639    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
33640    ///   
33641    pub nonce: core::option::Option<AttributeValueOwned>,
33642    ///
33643    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
33644    ///   
33645    pub part: core::option::Option<AttributeValueOwned>,
33646    ///
33647    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
33648    ///   
33649    pub popover: core::option::Option<AttributeValueOwned>,
33650    ///
33651    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
33652    ///   
33653    pub role: core::option::Option<AttributeValueOwned>,
33654    ///
33655    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
33656    ///   
33657    pub slot: core::option::Option<AttributeValueOwned>,
33658    ///
33659    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
33660    ///     <ul>
33661    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
33662    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
33663    ///     </ul>
33664    ///   
33665    pub spellcheck: core::option::Option<AttributeValueOwned>,
33666    ///
33667    ///     <p>Address of the track (<code>.vtt</code> 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 <a href="/en-US/docs/Web/HTML/Element/audio"><code>&lt;audio&gt;</code></a> or <a href="/en-US/docs/Web/HTML/Element/video"><code>&lt;video&gt;</code></a> parent element of the <code>track</code> element has a <a href="/en-US/docs/Web/HTML/Attributes/crossorigin"><code>crossorigin</code></a> attribute.</p>
33668    ///   
33669    pub src: core::option::Option<AttributeValueOwned>,
33670    ///
33671    ///     <p>Language of the track text data. It must be a valid <a href="https://r12a.github.io/app-subtags/" class="external" target="_blank">BCP 47</a> language tag. If the <code>kind</code> attribute is set to <code>subtitles</code>, then <code>srclang</code> must be defined.</p>
33672    ///   
33673    pub srclang: core::option::Option<AttributeValueOwned>,
33674    ///
33675    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
33676    ///   
33677    pub style: core::option::Option<AttributeValueOwned>,
33678    ///
33679    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
33680    ///     <ul>
33681    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
33682    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
33683    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
33684    ///     </ul>
33685    ///   
33686    pub tabindex: core::option::Option<AttributeValueOwned>,
33687    ///
33688    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
33689    ///   
33690    pub title: core::option::Option<AttributeValueOwned>,
33691    ///
33692    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
33693    ///     <ul>
33694    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
33695    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
33696    ///     </ul>
33697    ///   
33698    pub translate: core::option::Option<AttributeValueOwned>,
33699    ///
33700    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
33701    ///     <ul>
33702    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
33703    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
33704    ///     </ul>
33705    ///   
33706    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
33707}
33708#[allow(deprecated)]
33709#[cfg(feature = "alloc")]
33710impl TrackOwned {
33711    /// Get the tag name of the element.
33712    /// This is the same as the name of the struct, in kebab-case.
33713    pub fn tag() -> &'static str {
33714        "track"
33715    }
33716    /// Sets an attribute of the element.
33717    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
33718    /// If the `alloc` feature is disabled, this function will silently fail.
33719    ///
33720    /// # Note
33721    /// This only works when the attribute is lowercase.
33722    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
33723        match name {
33724            "accesskey" => self.accesskey = Some(value.into()),
33725            "autocapitalize" => self.autocapitalize = Some(value.into()),
33726            "autofocus" => self.autofocus = Some(value.into()),
33727            "class" => self.class = Some(value.into()),
33728            "contenteditable" => self.contenteditable = Some(value.into()),
33729            "contextmenu" => self.contextmenu = Some(value.into()),
33730            "default" => self.default = Some(value.into()),
33731            "dir" => self.dir = Some(value.into()),
33732            "draggable" => self.draggable = Some(value.into()),
33733            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
33734            "exportparts" => self.exportparts = Some(value.into()),
33735            "hidden" => self.hidden = Some(value.into()),
33736            "id" => self.id = Some(value.into()),
33737            "inert" => self.inert = Some(value.into()),
33738            "inputmode" => self.inputmode = Some(value.into()),
33739            "is" => self.is = Some(value.into()),
33740            "itemid" => self.itemid = Some(value.into()),
33741            "itemprop" => self.itemprop = Some(value.into()),
33742            "itemref" => self.itemref = Some(value.into()),
33743            "itemscope" => self.itemscope = Some(value.into()),
33744            "itemtype" => self.itemtype = Some(value.into()),
33745            "kind" => self.kind = Some(value.into()),
33746            "label" => self.label = Some(value.into()),
33747            "lang" => self.lang = Some(value.into()),
33748            "nonce" => self.nonce = Some(value.into()),
33749            "part" => self.part = Some(value.into()),
33750            "popover" => self.popover = Some(value.into()),
33751            "role" => self.role = Some(value.into()),
33752            "slot" => self.slot = Some(value.into()),
33753            "spellcheck" => self.spellcheck = Some(value.into()),
33754            "src" => self.src = Some(value.into()),
33755            "srclang" => self.srclang = Some(value.into()),
33756            "style" => self.style = Some(value.into()),
33757            "tabindex" => self.tabindex = Some(value.into()),
33758            "title" => self.title = Some(value.into()),
33759            "translate" => self.translate = Some(value.into()),
33760            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
33761            #[cfg(feature = "alloc")]
33762            _ => {
33763                #[allow(clippy::useless_conversion)]
33764                self.extra.insert(name.into(), value.into());
33765            }
33766            #[cfg(not(feature = "alloc"))]
33767            _ => {}
33768        }
33769    }
33770}
33771/// The <strong><code>&lt;video&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element embeds a media player which supports video playback into the document. You can use <code>&lt;video&gt;</code> for audio content as well, but the <a href="/en-US/docs/Web/HTML/Element/audio"><code>&lt;audio&gt;</code></a> element may provide a more appropriate user experience.
33772///
33773/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/video>
33774
33775#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
33776pub struct Video<'life> {
33777    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
33778    ///   
33779    pub accesskey: core::option::Option<AttributeValue<'life>>,
33780    ///
33781    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
33782    ///     <ul>
33783    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
33784    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
33785    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
33786    ///       <li><code>characters</code>, all letters should default to uppercase</li>
33787    ///     </ul>
33788    ///   
33789    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
33790    ///
33791    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
33792    ///   
33793    pub autofocus: core::option::Option<AttributeValue<'life>>,
33794    ///
33795    ///     <p>A Boolean attribute which if <code>true</code> indicates that the element should automatically toggle picture-in-picture mode when the user switches back and forth between this document and another document or application.</p>
33796    ///   
33797    pub autopictureinpicture: core::option::Option<AttributeValue<'life>>,
33798    ///
33799    ///     <p>A Boolean attribute; if specified, the video automatically begins to play back as soon as it can do so without stopping to finish loading the data.</p>
33800    ///     <div id="sect1" class="notecard note">
33801    ///       <p><strong>Note:</strong> Sites that automatically play audio (or videos with an audio track) can be an unpleasant experience for users, so should be avoided when possible. If you must offer autoplay functionality, you should make it opt-in (requiring a user to specifically enable it). However, this can be useful when creating media elements whose source will be set at a later time, under user control. See our <a href="/en-US/docs/Web/Media/Autoplay_guide">autoplay guide</a> for additional information about how to properly use autoplay.</p>
33802    ///     </div>
33803    ///     <p>To disable video autoplay, <code>autoplay="false"</code> will not work; the video will autoplay if the attribute is there in the <code>&lt;video&gt;</code> tag at all. To remove autoplay, the attribute needs to be removed altogether.</p>
33804    ///     <p>In some browsers (e.g. Chrome 70.0) autoplay doesn't work if no <code>muted</code> attribute is present.</p>
33805    ///   
33806    pub autoplay: core::option::Option<AttributeValue<'life>>,
33807    ///
33808    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
33809    ///   
33810    pub class: core::option::Option<AttributeValue<'life>>,
33811    ///
33812    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
33813    ///     <ul>
33814    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
33815    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
33816    ///     </ul>
33817    ///   
33818    pub contenteditable: core::option::Option<AttributeValue<'life>>,
33819    ///
33820    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
33821    ///   
33822    pub contextmenu: core::option::Option<AttributeValue<'life>>,
33823    ///
33824    ///     <p>If this attribute is present, the browser will offer controls to allow the user to control video playback, including volume, seeking, and pause/resume playback.</p>
33825    ///   
33826    pub controls: core::option::Option<AttributeValue<'life>>,
33827    ///
33828    ///     <p>The <a href="https://wicg.github.io/controls-list/explainer.html" target="_blank" class="external"><code>controlslist</code></a> attribute, when specified, helps the browser select what controls to show for the <code>video</code> element whenever the browser shows its own set of controls (that is, when the <code>controls</code> attribute is specified).</p>
33829    ///     <p>The allowed values are <code>nodownload</code>, <code>nofullscreen</code> and <code>noremoteplayback</code>.</p>
33830    ///     <p>Use the <a href="#disablepictureinpicture"><code>disablepictureinpicture</code></a> attribute if you want to disable the Picture-In-Picture mode (and the control).</p>
33831    ///   
33832    pub controlslist: core::option::Option<AttributeValue<'life>>,
33833    ///
33834    ///     <p>This <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicates whether to use CORS to fetch the related video. <a href="/en-US/docs/Web/HTML/CORS_enabled_image">CORS-enabled resources</a> can be reused in the <a href="/en-US/docs/Web/HTML/Element/canvas"><code>&lt;canvas&gt;</code></a> element without being <em>tainted</em>. The allowed values are:</p>
33835    ///     <dl>
33836    ///       <dt id="anonymous"><code>anonymous</code></dt>
33837    ///       <dd>
33838    ///         <p>Sends a cross-origin request without a credential. In other words, it sends the <code>Origin:</code> HTTP header without a cookie, X.509 certificate, or performing HTTP Basic authentication. If the server does not give credentials to the origin site (by not setting the <code>Access-Control-Allow-Origin:</code> HTTP header), the resource will be <em>tainted</em>, and its usage restricted.</p>
33839    ///       </dd>
33840    ///       <dt id="use-credentials"><code>use-credentials</code></dt>
33841    ///       <dd>
33842    ///         <p>Sends a cross-origin request with a credential. In other words, it sends the <code>Origin:</code> HTTP header with a cookie, a certificate, or performing HTTP Basic authentication. If the server does not give credentials to the origin site (through <code>Access-Control-Allow-Credentials:</code> HTTP header), the resource will be <em>tainted</em> and its usage restricted.</p>
33843    ///       </dd>
33844    ///     </dl>
33845    ///     <p>When not present, the resource is fetched without a CORS request (i.e. without sending the <code>Origin:</code> HTTP header), preventing its non-tainted use in <a href="/en-US/docs/Web/HTML/Element/canvas"><code>&lt;canvas&gt;</code></a> elements. If invalid, it is handled as if the enumerated keyword <code>anonymous</code> was used. See <a href="/en-US/docs/Web/HTML/Attributes/crossorigin">CORS settings attributes</a> for additional information.</p>
33846    ///   
33847    pub crossorigin: core::option::Option<AttributeValue<'life>>,
33848    ///
33849    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
33850    ///   
33851    #[cfg(feature = "alloc")]
33852    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
33853    ///
33854    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
33855    ///     <ul>
33856    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
33857    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
33858    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
33859    ///     </ul>
33860    ///   
33861    pub dir: core::option::Option<AttributeValue<'life>>,
33862    ///
33863    ///     <p>Prevents the browser from suggesting a Picture-in-Picture context menu or to request Picture-in-Picture automatically in some cases.</p>
33864    ///   
33865    pub disablepictureinpicture: core::option::Option<AttributeValue<'life>>,
33866    ///
33867    ///     <p>A Boolean attribute used to disable the capability of remote playback in devices that are attached using wired (HDMI, DVI, etc.) and wireless technologies (Miracast, Chromecast, DLNA, AirPlay, etc.).</p>
33868    ///     <p>In Safari, you can use <a href="https://developer.apple.com/library/archive/documentation/AudioVideo/Conceptual/AirPlayGuide/OptingInorOutofAirPlay/OptingInorOutofAirPlay.html" class="external" target="_blank"><code>x-webkit-airplay="deny"</code></a> as a fallback.</p>
33869    ///   
33870    pub disableremoteplayback: core::option::Option<AttributeValue<'life>>,
33871    ///
33872    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
33873    ///     <ul>
33874    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
33875    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
33876    ///     </ul>
33877    ///   
33878    pub draggable: core::option::Option<AttributeValue<'life>>,
33879    ///
33880    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
33881    ///   
33882    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
33883    ///
33884    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
33885    ///   
33886    pub exportparts: core::option::Option<AttributeValue<'life>>,
33887    /// /// Extra attributes of the element.
33888
33889    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
33890    #[cfg(feature = "alloc")]
33891    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
33892    ///
33893    ///     <p>The height of the video's display area, in <a class="external" href="https://drafts.csswg.org/css-values/#px" target="_blank">CSS pixels</a> (absolute values only; <a target="_blank" href="https://html.spec.whatwg.org/multipage/embedded-content.html#dimension-attributes" class="external">no percentages</a>).</p>
33894    ///   
33895    pub height: core::option::Option<AttributeValue<'life>>,
33896    ///
33897    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
33898    ///   
33899    pub hidden: core::option::Option<AttributeValue<'life>>,
33900    ///
33901    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
33902    ///   
33903    pub id: core::option::Option<AttributeValue<'life>>,
33904    ///
33905    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
33906    ///   
33907    pub inert: core::option::Option<AttributeValue<'life>>,
33908    ///
33909    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
33910    ///   
33911    pub inputmode: core::option::Option<AttributeValue<'life>>,
33912    ///
33913    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
33914    ///   
33915    pub is: core::option::Option<AttributeValue<'life>>,
33916    ///
33917    ///     <p>The unique, global identifier of an item.</p>
33918    ///   
33919    pub itemid: core::option::Option<AttributeValue<'life>>,
33920    ///
33921    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
33922    ///   
33923    pub itemprop: core::option::Option<AttributeValue<'life>>,
33924    ///
33925    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
33926    ///   
33927    pub itemref: core::option::Option<AttributeValue<'life>>,
33928    ///
33929    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
33930    ///   
33931    pub itemscope: core::option::Option<AttributeValue<'life>>,
33932    ///
33933    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
33934    ///   
33935    pub itemtype: core::option::Option<AttributeValue<'life>>,
33936    ///
33937    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
33938    ///   
33939    pub lang: core::option::Option<AttributeValue<'life>>,
33940    ///
33941    ///     <p>A Boolean attribute; if specified, the browser will automatically seek back to the start upon reaching the end of the video.</p>
33942    ///   
33943    pub loop_: core::option::Option<AttributeValue<'life>>,
33944    ///
33945    ///     <p>A Boolean attribute that indicates the default setting of the audio contained in the video. If set, the audio will be initially silenced. Its default value is <code>false</code>, meaning that the audio will be played when the video is played.</p>
33946    ///   
33947    pub muted: core::option::Option<AttributeValue<'life>>,
33948    ///
33949    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
33950    ///   
33951    pub nonce: core::option::Option<AttributeValue<'life>>,
33952    ///
33953    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
33954    ///   
33955    pub part: core::option::Option<AttributeValue<'life>>,
33956    ///
33957    ///     <p>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 <em>does not</em> imply that the video will always be played in fullscreen.</p>
33958    ///   
33959    pub playsinline: core::option::Option<AttributeValue<'life>>,
33960    ///
33961    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
33962    ///   
33963    pub popover: core::option::Option<AttributeValue<'life>>,
33964    ///
33965    ///     <p>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.</p>
33966    ///   
33967    pub poster: core::option::Option<AttributeValue<'life>>,
33968    ///
33969    ///     <p>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:</p>
33970    ///     <ul>
33971    ///       <li><code>none</code>: Indicates that the video should not be preloaded.</li>
33972    ///       <li><code>metadata</code>: Indicates that only video metadata (e.g. length) is fetched.</li>
33973    ///       <li><code>auto</code>: Indicates that the whole video file can be downloaded, even if the user is not expected to use it.</li>
33974    ///       <li><em>empty string</em>: Synonym of the <code>auto</code> value.</li>
33975    ///     </ul>
33976    ///     <p>The default value is different for each browser. The spec advises it to be set to <code>metadata</code>.</p>
33977    ///     <div class="notecard note" id="sect2">
33978    ///       <p><strong>Note:</strong></p>
33979    ///       <ul>
33980    ///         <li>The <code>autoplay</code> attribute has precedence over <code>preload</code>. If <code>autoplay</code> is specified, the browser would obviously need to start downloading the video for playback.</li>
33981    ///         <li>The specification does not force the browser to follow the value of this attribute; it is a mere hint.</li>
33982    ///       </ul>
33983    ///     </div>
33984    ///   
33985    pub preload: core::option::Option<AttributeValue<'life>>,
33986    ///
33987    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
33988    ///   
33989    pub role: core::option::Option<AttributeValue<'life>>,
33990    ///
33991    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
33992    ///   
33993    pub slot: core::option::Option<AttributeValue<'life>>,
33994    ///
33995    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
33996    ///     <ul>
33997    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
33998    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
33999    ///     </ul>
34000    ///   
34001    pub spellcheck: core::option::Option<AttributeValue<'life>>,
34002    ///
34003    ///     <p>The URL of the video to embed. This is optional; you may instead use the <a href="/en-US/docs/Web/HTML/Element/source"><code>&lt;source&gt;</code></a> element within the video block to specify the video to embed.</p>
34004    ///   
34005    pub src: core::option::Option<AttributeValue<'life>>,
34006    ///
34007    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
34008    ///   
34009    pub style: core::option::Option<AttributeValue<'life>>,
34010    ///
34011    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
34012    ///     <ul>
34013    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
34014    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
34015    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
34016    ///     </ul>
34017    ///   
34018    pub tabindex: core::option::Option<AttributeValue<'life>>,
34019    ///
34020    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
34021    ///   
34022    pub title: core::option::Option<AttributeValue<'life>>,
34023    ///
34024    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
34025    ///     <ul>
34026    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
34027    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
34028    ///     </ul>
34029    ///   
34030    pub translate: core::option::Option<AttributeValue<'life>>,
34031    ///
34032    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
34033    ///     <ul>
34034    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
34035    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
34036    ///     </ul>
34037    ///   
34038    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
34039    ///
34040    ///     <p>The width of the video's display area, in <a class="external" href="https://drafts.csswg.org/css-values/#px" target="_blank">CSS pixels</a> (absolute values only; <a href="https://html.spec.whatwg.org/multipage/embedded-content.html#dimension-attributes" class="external" target="_blank">no percentages</a>).</p>
34041    ///   
34042    pub width: core::option::Option<AttributeValue<'life>>,
34043}
34044#[allow(deprecated)]
34045
34046impl<'life> Video<'life> {
34047    /// Get the tag name of the element.
34048    /// This is the same as the name of the struct, in kebab-case.
34049    pub fn tag() -> &'static str {
34050        "video"
34051    }
34052    /// Sets an attribute of the element.
34053    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
34054    /// If the `alloc` feature is disabled, this function will silently fail.
34055    ///
34056    /// # Note
34057    /// This only works when the attribute is lowercase.
34058    pub fn set_attr(
34059        &mut self,
34060        name: &'life str,
34061        value: impl core::convert::Into<AttributeValue<'life>>,
34062    ) {
34063        match name {
34064            "accesskey" => self.accesskey = Some(value.into()),
34065            "autocapitalize" => self.autocapitalize = Some(value.into()),
34066            "autofocus" => self.autofocus = Some(value.into()),
34067            "autopictureinpicture" => self.autopictureinpicture = Some(value.into()),
34068            "autoplay" => self.autoplay = Some(value.into()),
34069            "class" => self.class = Some(value.into()),
34070            "contenteditable" => self.contenteditable = Some(value.into()),
34071            "contextmenu" => self.contextmenu = Some(value.into()),
34072            "controls" => self.controls = Some(value.into()),
34073            "controlslist" => self.controlslist = Some(value.into()),
34074            "crossorigin" => self.crossorigin = Some(value.into()),
34075            "dir" => self.dir = Some(value.into()),
34076            "disablepictureinpicture" => self.disablepictureinpicture = Some(value.into()),
34077            "disableremoteplayback" => self.disableremoteplayback = Some(value.into()),
34078            "draggable" => self.draggable = Some(value.into()),
34079            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
34080            "exportparts" => self.exportparts = Some(value.into()),
34081            "height" => self.height = Some(value.into()),
34082            "hidden" => self.hidden = Some(value.into()),
34083            "id" => self.id = Some(value.into()),
34084            "inert" => self.inert = Some(value.into()),
34085            "inputmode" => self.inputmode = Some(value.into()),
34086            "is" => self.is = Some(value.into()),
34087            "itemid" => self.itemid = Some(value.into()),
34088            "itemprop" => self.itemprop = Some(value.into()),
34089            "itemref" => self.itemref = Some(value.into()),
34090            "itemscope" => self.itemscope = Some(value.into()),
34091            "itemtype" => self.itemtype = Some(value.into()),
34092            "lang" => self.lang = Some(value.into()),
34093            "loop_" => self.loop_ = Some(value.into()),
34094            "muted" => self.muted = Some(value.into()),
34095            "nonce" => self.nonce = Some(value.into()),
34096            "part" => self.part = Some(value.into()),
34097            "playsinline" => self.playsinline = Some(value.into()),
34098            "popover" => self.popover = Some(value.into()),
34099            "poster" => self.poster = Some(value.into()),
34100            "preload" => self.preload = Some(value.into()),
34101            "role" => self.role = Some(value.into()),
34102            "slot" => self.slot = Some(value.into()),
34103            "spellcheck" => self.spellcheck = Some(value.into()),
34104            "src" => self.src = Some(value.into()),
34105            "style" => self.style = Some(value.into()),
34106            "tabindex" => self.tabindex = Some(value.into()),
34107            "title" => self.title = Some(value.into()),
34108            "translate" => self.translate = Some(value.into()),
34109            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
34110            "width" => self.width = Some(value.into()),
34111            #[cfg(feature = "alloc")]
34112            _ => {
34113                #[allow(clippy::useless_conversion)]
34114                self.extra.insert(name.into(), value.into());
34115            }
34116            #[cfg(not(feature = "alloc"))]
34117            _ => {}
34118        }
34119    }
34120}
34121/// The <strong><code>&lt;video&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element embeds a media player which supports video playback into the document. You can use <code>&lt;video&gt;</code> for audio content as well, but the <a href="/en-US/docs/Web/HTML/Element/audio"><code>&lt;audio&gt;</code></a> element may provide a more appropriate user experience.
34122///
34123/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/video>
34124
34125#[cfg(feature = "alloc")]
34126#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
34127pub struct VideoOwned {
34128    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
34129    ///   
34130    pub accesskey: core::option::Option<AttributeValueOwned>,
34131    ///
34132    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
34133    ///     <ul>
34134    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
34135    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
34136    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
34137    ///       <li><code>characters</code>, all letters should default to uppercase</li>
34138    ///     </ul>
34139    ///   
34140    pub autocapitalize: core::option::Option<AttributeValueOwned>,
34141    ///
34142    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
34143    ///   
34144    pub autofocus: core::option::Option<AttributeValueOwned>,
34145    ///
34146    ///     <p>A Boolean attribute which if <code>true</code> indicates that the element should automatically toggle picture-in-picture mode when the user switches back and forth between this document and another document or application.</p>
34147    ///   
34148    pub autopictureinpicture: core::option::Option<AttributeValueOwned>,
34149    ///
34150    ///     <p>A Boolean attribute; if specified, the video automatically begins to play back as soon as it can do so without stopping to finish loading the data.</p>
34151    ///     <div id="sect1" class="notecard note">
34152    ///       <p><strong>Note:</strong> Sites that automatically play audio (or videos with an audio track) can be an unpleasant experience for users, so should be avoided when possible. If you must offer autoplay functionality, you should make it opt-in (requiring a user to specifically enable it). However, this can be useful when creating media elements whose source will be set at a later time, under user control. See our <a href="/en-US/docs/Web/Media/Autoplay_guide">autoplay guide</a> for additional information about how to properly use autoplay.</p>
34153    ///     </div>
34154    ///     <p>To disable video autoplay, <code>autoplay="false"</code> will not work; the video will autoplay if the attribute is there in the <code>&lt;video&gt;</code> tag at all. To remove autoplay, the attribute needs to be removed altogether.</p>
34155    ///     <p>In some browsers (e.g. Chrome 70.0) autoplay doesn't work if no <code>muted</code> attribute is present.</p>
34156    ///   
34157    pub autoplay: core::option::Option<AttributeValueOwned>,
34158    ///
34159    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
34160    ///   
34161    pub class: core::option::Option<AttributeValueOwned>,
34162    ///
34163    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
34164    ///     <ul>
34165    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
34166    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
34167    ///     </ul>
34168    ///   
34169    pub contenteditable: core::option::Option<AttributeValueOwned>,
34170    ///
34171    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
34172    ///   
34173    pub contextmenu: core::option::Option<AttributeValueOwned>,
34174    ///
34175    ///     <p>If this attribute is present, the browser will offer controls to allow the user to control video playback, including volume, seeking, and pause/resume playback.</p>
34176    ///   
34177    pub controls: core::option::Option<AttributeValueOwned>,
34178    ///
34179    ///     <p>The <a href="https://wicg.github.io/controls-list/explainer.html" target="_blank" class="external"><code>controlslist</code></a> attribute, when specified, helps the browser select what controls to show for the <code>video</code> element whenever the browser shows its own set of controls (that is, when the <code>controls</code> attribute is specified).</p>
34180    ///     <p>The allowed values are <code>nodownload</code>, <code>nofullscreen</code> and <code>noremoteplayback</code>.</p>
34181    ///     <p>Use the <a href="#disablepictureinpicture"><code>disablepictureinpicture</code></a> attribute if you want to disable the Picture-In-Picture mode (and the control).</p>
34182    ///   
34183    pub controlslist: core::option::Option<AttributeValueOwned>,
34184    ///
34185    ///     <p>This <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicates whether to use CORS to fetch the related video. <a href="/en-US/docs/Web/HTML/CORS_enabled_image">CORS-enabled resources</a> can be reused in the <a href="/en-US/docs/Web/HTML/Element/canvas"><code>&lt;canvas&gt;</code></a> element without being <em>tainted</em>. The allowed values are:</p>
34186    ///     <dl>
34187    ///       <dt id="anonymous"><code>anonymous</code></dt>
34188    ///       <dd>
34189    ///         <p>Sends a cross-origin request without a credential. In other words, it sends the <code>Origin:</code> HTTP header without a cookie, X.509 certificate, or performing HTTP Basic authentication. If the server does not give credentials to the origin site (by not setting the <code>Access-Control-Allow-Origin:</code> HTTP header), the resource will be <em>tainted</em>, and its usage restricted.</p>
34190    ///       </dd>
34191    ///       <dt id="use-credentials"><code>use-credentials</code></dt>
34192    ///       <dd>
34193    ///         <p>Sends a cross-origin request with a credential. In other words, it sends the <code>Origin:</code> HTTP header with a cookie, a certificate, or performing HTTP Basic authentication. If the server does not give credentials to the origin site (through <code>Access-Control-Allow-Credentials:</code> HTTP header), the resource will be <em>tainted</em> and its usage restricted.</p>
34194    ///       </dd>
34195    ///     </dl>
34196    ///     <p>When not present, the resource is fetched without a CORS request (i.e. without sending the <code>Origin:</code> HTTP header), preventing its non-tainted use in <a href="/en-US/docs/Web/HTML/Element/canvas"><code>&lt;canvas&gt;</code></a> elements. If invalid, it is handled as if the enumerated keyword <code>anonymous</code> was used. See <a href="/en-US/docs/Web/HTML/Attributes/crossorigin">CORS settings attributes</a> for additional information.</p>
34197    ///   
34198    pub crossorigin: core::option::Option<AttributeValueOwned>,
34199    ///
34200    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
34201    ///   
34202    #[cfg(feature = "alloc")]
34203    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
34204    ///
34205    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
34206    ///     <ul>
34207    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
34208    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
34209    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
34210    ///     </ul>
34211    ///   
34212    pub dir: core::option::Option<AttributeValueOwned>,
34213    ///
34214    ///     <p>Prevents the browser from suggesting a Picture-in-Picture context menu or to request Picture-in-Picture automatically in some cases.</p>
34215    ///   
34216    pub disablepictureinpicture: core::option::Option<AttributeValueOwned>,
34217    ///
34218    ///     <p>A Boolean attribute used to disable the capability of remote playback in devices that are attached using wired (HDMI, DVI, etc.) and wireless technologies (Miracast, Chromecast, DLNA, AirPlay, etc.).</p>
34219    ///     <p>In Safari, you can use <a href="https://developer.apple.com/library/archive/documentation/AudioVideo/Conceptual/AirPlayGuide/OptingInorOutofAirPlay/OptingInorOutofAirPlay.html" class="external" target="_blank"><code>x-webkit-airplay="deny"</code></a> as a fallback.</p>
34220    ///   
34221    pub disableremoteplayback: core::option::Option<AttributeValueOwned>,
34222    ///
34223    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
34224    ///     <ul>
34225    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
34226    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
34227    ///     </ul>
34228    ///   
34229    pub draggable: core::option::Option<AttributeValueOwned>,
34230    ///
34231    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
34232    ///   
34233    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
34234    ///
34235    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
34236    ///   
34237    pub exportparts: core::option::Option<AttributeValueOwned>,
34238    /// /// Extra attributes of the element.
34239
34240    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
34241    #[cfg(feature = "alloc")]
34242    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
34243    ///
34244    ///     <p>The height of the video's display area, in <a class="external" href="https://drafts.csswg.org/css-values/#px" target="_blank">CSS pixels</a> (absolute values only; <a target="_blank" href="https://html.spec.whatwg.org/multipage/embedded-content.html#dimension-attributes" class="external">no percentages</a>).</p>
34245    ///   
34246    pub height: core::option::Option<AttributeValueOwned>,
34247    ///
34248    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
34249    ///   
34250    pub hidden: core::option::Option<AttributeValueOwned>,
34251    ///
34252    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
34253    ///   
34254    pub id: core::option::Option<AttributeValueOwned>,
34255    ///
34256    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
34257    ///   
34258    pub inert: core::option::Option<AttributeValueOwned>,
34259    ///
34260    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
34261    ///   
34262    pub inputmode: core::option::Option<AttributeValueOwned>,
34263    ///
34264    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
34265    ///   
34266    pub is: core::option::Option<AttributeValueOwned>,
34267    ///
34268    ///     <p>The unique, global identifier of an item.</p>
34269    ///   
34270    pub itemid: core::option::Option<AttributeValueOwned>,
34271    ///
34272    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
34273    ///   
34274    pub itemprop: core::option::Option<AttributeValueOwned>,
34275    ///
34276    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
34277    ///   
34278    pub itemref: core::option::Option<AttributeValueOwned>,
34279    ///
34280    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
34281    ///   
34282    pub itemscope: core::option::Option<AttributeValueOwned>,
34283    ///
34284    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
34285    ///   
34286    pub itemtype: core::option::Option<AttributeValueOwned>,
34287    ///
34288    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
34289    ///   
34290    pub lang: core::option::Option<AttributeValueOwned>,
34291    ///
34292    ///     <p>A Boolean attribute; if specified, the browser will automatically seek back to the start upon reaching the end of the video.</p>
34293    ///   
34294    pub loop_: core::option::Option<AttributeValueOwned>,
34295    ///
34296    ///     <p>A Boolean attribute that indicates the default setting of the audio contained in the video. If set, the audio will be initially silenced. Its default value is <code>false</code>, meaning that the audio will be played when the video is played.</p>
34297    ///   
34298    pub muted: core::option::Option<AttributeValueOwned>,
34299    ///
34300    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
34301    ///   
34302    pub nonce: core::option::Option<AttributeValueOwned>,
34303    ///
34304    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
34305    ///   
34306    pub part: core::option::Option<AttributeValueOwned>,
34307    ///
34308    ///     <p>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 <em>does not</em> imply that the video will always be played in fullscreen.</p>
34309    ///   
34310    pub playsinline: core::option::Option<AttributeValueOwned>,
34311    ///
34312    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
34313    ///   
34314    pub popover: core::option::Option<AttributeValueOwned>,
34315    ///
34316    ///     <p>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.</p>
34317    ///   
34318    pub poster: core::option::Option<AttributeValueOwned>,
34319    ///
34320    ///     <p>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:</p>
34321    ///     <ul>
34322    ///       <li><code>none</code>: Indicates that the video should not be preloaded.</li>
34323    ///       <li><code>metadata</code>: Indicates that only video metadata (e.g. length) is fetched.</li>
34324    ///       <li><code>auto</code>: Indicates that the whole video file can be downloaded, even if the user is not expected to use it.</li>
34325    ///       <li><em>empty string</em>: Synonym of the <code>auto</code> value.</li>
34326    ///     </ul>
34327    ///     <p>The default value is different for each browser. The spec advises it to be set to <code>metadata</code>.</p>
34328    ///     <div class="notecard note" id="sect2">
34329    ///       <p><strong>Note:</strong></p>
34330    ///       <ul>
34331    ///         <li>The <code>autoplay</code> attribute has precedence over <code>preload</code>. If <code>autoplay</code> is specified, the browser would obviously need to start downloading the video for playback.</li>
34332    ///         <li>The specification does not force the browser to follow the value of this attribute; it is a mere hint.</li>
34333    ///       </ul>
34334    ///     </div>
34335    ///   
34336    pub preload: core::option::Option<AttributeValueOwned>,
34337    ///
34338    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
34339    ///   
34340    pub role: core::option::Option<AttributeValueOwned>,
34341    ///
34342    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
34343    ///   
34344    pub slot: core::option::Option<AttributeValueOwned>,
34345    ///
34346    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
34347    ///     <ul>
34348    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
34349    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
34350    ///     </ul>
34351    ///   
34352    pub spellcheck: core::option::Option<AttributeValueOwned>,
34353    ///
34354    ///     <p>The URL of the video to embed. This is optional; you may instead use the <a href="/en-US/docs/Web/HTML/Element/source"><code>&lt;source&gt;</code></a> element within the video block to specify the video to embed.</p>
34355    ///   
34356    pub src: core::option::Option<AttributeValueOwned>,
34357    ///
34358    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
34359    ///   
34360    pub style: core::option::Option<AttributeValueOwned>,
34361    ///
34362    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
34363    ///     <ul>
34364    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
34365    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
34366    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
34367    ///     </ul>
34368    ///   
34369    pub tabindex: core::option::Option<AttributeValueOwned>,
34370    ///
34371    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
34372    ///   
34373    pub title: core::option::Option<AttributeValueOwned>,
34374    ///
34375    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
34376    ///     <ul>
34377    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
34378    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
34379    ///     </ul>
34380    ///   
34381    pub translate: core::option::Option<AttributeValueOwned>,
34382    ///
34383    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
34384    ///     <ul>
34385    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
34386    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
34387    ///     </ul>
34388    ///   
34389    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
34390    ///
34391    ///     <p>The width of the video's display area, in <a class="external" href="https://drafts.csswg.org/css-values/#px" target="_blank">CSS pixels</a> (absolute values only; <a href="https://html.spec.whatwg.org/multipage/embedded-content.html#dimension-attributes" class="external" target="_blank">no percentages</a>).</p>
34392    ///   
34393    pub width: core::option::Option<AttributeValueOwned>,
34394}
34395#[allow(deprecated)]
34396#[cfg(feature = "alloc")]
34397impl VideoOwned {
34398    /// Get the tag name of the element.
34399    /// This is the same as the name of the struct, in kebab-case.
34400    pub fn tag() -> &'static str {
34401        "video"
34402    }
34403    /// Sets an attribute of the element.
34404    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
34405    /// If the `alloc` feature is disabled, this function will silently fail.
34406    ///
34407    /// # Note
34408    /// This only works when the attribute is lowercase.
34409    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
34410        match name {
34411            "accesskey" => self.accesskey = Some(value.into()),
34412            "autocapitalize" => self.autocapitalize = Some(value.into()),
34413            "autofocus" => self.autofocus = Some(value.into()),
34414            "autopictureinpicture" => self.autopictureinpicture = Some(value.into()),
34415            "autoplay" => self.autoplay = Some(value.into()),
34416            "class" => self.class = Some(value.into()),
34417            "contenteditable" => self.contenteditable = Some(value.into()),
34418            "contextmenu" => self.contextmenu = Some(value.into()),
34419            "controls" => self.controls = Some(value.into()),
34420            "controlslist" => self.controlslist = Some(value.into()),
34421            "crossorigin" => self.crossorigin = Some(value.into()),
34422            "dir" => self.dir = Some(value.into()),
34423            "disablepictureinpicture" => self.disablepictureinpicture = Some(value.into()),
34424            "disableremoteplayback" => self.disableremoteplayback = Some(value.into()),
34425            "draggable" => self.draggable = Some(value.into()),
34426            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
34427            "exportparts" => self.exportparts = Some(value.into()),
34428            "height" => self.height = Some(value.into()),
34429            "hidden" => self.hidden = Some(value.into()),
34430            "id" => self.id = Some(value.into()),
34431            "inert" => self.inert = Some(value.into()),
34432            "inputmode" => self.inputmode = Some(value.into()),
34433            "is" => self.is = Some(value.into()),
34434            "itemid" => self.itemid = Some(value.into()),
34435            "itemprop" => self.itemprop = Some(value.into()),
34436            "itemref" => self.itemref = Some(value.into()),
34437            "itemscope" => self.itemscope = Some(value.into()),
34438            "itemtype" => self.itemtype = Some(value.into()),
34439            "lang" => self.lang = Some(value.into()),
34440            "loop_" => self.loop_ = Some(value.into()),
34441            "muted" => self.muted = Some(value.into()),
34442            "nonce" => self.nonce = Some(value.into()),
34443            "part" => self.part = Some(value.into()),
34444            "playsinline" => self.playsinline = Some(value.into()),
34445            "popover" => self.popover = Some(value.into()),
34446            "poster" => self.poster = Some(value.into()),
34447            "preload" => self.preload = Some(value.into()),
34448            "role" => self.role = Some(value.into()),
34449            "slot" => self.slot = Some(value.into()),
34450            "spellcheck" => self.spellcheck = Some(value.into()),
34451            "src" => self.src = Some(value.into()),
34452            "style" => self.style = Some(value.into()),
34453            "tabindex" => self.tabindex = Some(value.into()),
34454            "title" => self.title = Some(value.into()),
34455            "translate" => self.translate = Some(value.into()),
34456            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
34457            "width" => self.width = Some(value.into()),
34458            #[cfg(feature = "alloc")]
34459            _ => {
34460                #[allow(clippy::useless_conversion)]
34461                self.extra.insert(name.into(), value.into());
34462            }
34463            #[cfg(not(feature = "alloc"))]
34464            _ => {}
34465        }
34466    }
34467}
34468/// The <strong><code>&lt;embed&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element embeds external content at the specified point in the document. This content is provided by an external application or other source of interactive content such as a browser plug-in.
34469///
34470/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/embed>
34471
34472#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
34473pub struct Embed<'life> {
34474    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
34475    ///   
34476    pub accesskey: core::option::Option<AttributeValue<'life>>,
34477    ///
34478    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
34479    ///     <ul>
34480    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
34481    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
34482    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
34483    ///       <li><code>characters</code>, all letters should default to uppercase</li>
34484    ///     </ul>
34485    ///   
34486    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
34487    ///
34488    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
34489    ///   
34490    pub autofocus: core::option::Option<AttributeValue<'life>>,
34491    ///
34492    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
34493    ///   
34494    pub class: core::option::Option<AttributeValue<'life>>,
34495    ///
34496    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
34497    ///     <ul>
34498    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
34499    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
34500    ///     </ul>
34501    ///   
34502    pub contenteditable: core::option::Option<AttributeValue<'life>>,
34503    ///
34504    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
34505    ///   
34506    pub contextmenu: core::option::Option<AttributeValue<'life>>,
34507    ///
34508    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
34509    ///   
34510    #[cfg(feature = "alloc")]
34511    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
34512    ///
34513    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
34514    ///     <ul>
34515    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
34516    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
34517    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
34518    ///     </ul>
34519    ///   
34520    pub dir: core::option::Option<AttributeValue<'life>>,
34521    ///
34522    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
34523    ///     <ul>
34524    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
34525    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
34526    ///     </ul>
34527    ///   
34528    pub draggable: core::option::Option<AttributeValue<'life>>,
34529    ///
34530    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
34531    ///   
34532    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
34533    ///
34534    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
34535    ///   
34536    pub exportparts: core::option::Option<AttributeValue<'life>>,
34537    /// /// Extra attributes of the element.
34538
34539    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
34540    #[cfg(feature = "alloc")]
34541    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
34542    ///
34543    ///     <p>The displayed height of the resource, in <a class="external" target="_blank" href="https://drafts.csswg.org/css-values/#px">CSS pixels</a>. This must be an absolute value; percentages are <em>not</em> allowed.</p>
34544    ///   
34545    pub height: core::option::Option<AttributeValue<'life>>,
34546    ///
34547    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
34548    ///   
34549    pub hidden: core::option::Option<AttributeValue<'life>>,
34550    ///
34551    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
34552    ///   
34553    pub id: core::option::Option<AttributeValue<'life>>,
34554    ///
34555    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
34556    ///   
34557    pub inert: core::option::Option<AttributeValue<'life>>,
34558    ///
34559    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
34560    ///   
34561    pub inputmode: core::option::Option<AttributeValue<'life>>,
34562    ///
34563    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
34564    ///   
34565    pub is: core::option::Option<AttributeValue<'life>>,
34566    ///
34567    ///     <p>The unique, global identifier of an item.</p>
34568    ///   
34569    pub itemid: core::option::Option<AttributeValue<'life>>,
34570    ///
34571    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
34572    ///   
34573    pub itemprop: core::option::Option<AttributeValue<'life>>,
34574    ///
34575    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
34576    ///   
34577    pub itemref: core::option::Option<AttributeValue<'life>>,
34578    ///
34579    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
34580    ///   
34581    pub itemscope: core::option::Option<AttributeValue<'life>>,
34582    ///
34583    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
34584    ///   
34585    pub itemtype: core::option::Option<AttributeValue<'life>>,
34586    ///
34587    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
34588    ///   
34589    pub lang: core::option::Option<AttributeValue<'life>>,
34590    ///
34591    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
34592    ///   
34593    pub nonce: core::option::Option<AttributeValue<'life>>,
34594    ///
34595    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
34596    ///   
34597    pub part: core::option::Option<AttributeValue<'life>>,
34598    ///
34599    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
34600    ///   
34601    pub popover: core::option::Option<AttributeValue<'life>>,
34602    ///
34603    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
34604    ///   
34605    pub role: core::option::Option<AttributeValue<'life>>,
34606    ///
34607    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
34608    ///   
34609    pub slot: core::option::Option<AttributeValue<'life>>,
34610    ///
34611    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
34612    ///     <ul>
34613    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
34614    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
34615    ///     </ul>
34616    ///   
34617    pub spellcheck: core::option::Option<AttributeValue<'life>>,
34618    ///
34619    ///     <p>The URL of the resource being embedded.</p>
34620    ///   
34621    pub src: core::option::Option<AttributeValue<'life>>,
34622    ///
34623    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
34624    ///   
34625    pub style: core::option::Option<AttributeValue<'life>>,
34626    ///
34627    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
34628    ///     <ul>
34629    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
34630    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
34631    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
34632    ///     </ul>
34633    ///   
34634    pub tabindex: core::option::Option<AttributeValue<'life>>,
34635    ///
34636    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
34637    ///   
34638    pub title: core::option::Option<AttributeValue<'life>>,
34639    ///
34640    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
34641    ///     <ul>
34642    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
34643    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
34644    ///     </ul>
34645    ///   
34646    pub translate: core::option::Option<AttributeValue<'life>>,
34647    ///
34648    ///     <p>The <a href="/en-US/docs/Glossary/MIME_type">MIME type</a> to use to select the plug-in to instantiate.</p>
34649    ///   
34650    pub type_: core::option::Option<AttributeValue<'life>>,
34651    ///
34652    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
34653    ///     <ul>
34654    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
34655    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
34656    ///     </ul>
34657    ///   
34658    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
34659    ///
34660    ///     <p>The displayed width of the resource, in <a target="_blank" class="external" href="https://drafts.csswg.org/css-values/#px">CSS pixels</a>. This must be an absolute value; percentages are <em>not</em> allowed.</p>
34661    ///   
34662    pub width: core::option::Option<AttributeValue<'life>>,
34663}
34664#[allow(deprecated)]
34665
34666impl<'life> Embed<'life> {
34667    /// Get the tag name of the element.
34668    /// This is the same as the name of the struct, in kebab-case.
34669    pub fn tag() -> &'static str {
34670        "embed"
34671    }
34672    /// Sets an attribute of the element.
34673    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
34674    /// If the `alloc` feature is disabled, this function will silently fail.
34675    ///
34676    /// # Note
34677    /// This only works when the attribute is lowercase.
34678    pub fn set_attr(
34679        &mut self,
34680        name: &'life str,
34681        value: impl core::convert::Into<AttributeValue<'life>>,
34682    ) {
34683        match name {
34684            "accesskey" => self.accesskey = Some(value.into()),
34685            "autocapitalize" => self.autocapitalize = Some(value.into()),
34686            "autofocus" => self.autofocus = Some(value.into()),
34687            "class" => self.class = Some(value.into()),
34688            "contenteditable" => self.contenteditable = Some(value.into()),
34689            "contextmenu" => self.contextmenu = Some(value.into()),
34690            "dir" => self.dir = Some(value.into()),
34691            "draggable" => self.draggable = Some(value.into()),
34692            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
34693            "exportparts" => self.exportparts = Some(value.into()),
34694            "height" => self.height = Some(value.into()),
34695            "hidden" => self.hidden = Some(value.into()),
34696            "id" => self.id = Some(value.into()),
34697            "inert" => self.inert = Some(value.into()),
34698            "inputmode" => self.inputmode = Some(value.into()),
34699            "is" => self.is = Some(value.into()),
34700            "itemid" => self.itemid = Some(value.into()),
34701            "itemprop" => self.itemprop = Some(value.into()),
34702            "itemref" => self.itemref = Some(value.into()),
34703            "itemscope" => self.itemscope = Some(value.into()),
34704            "itemtype" => self.itemtype = Some(value.into()),
34705            "lang" => self.lang = Some(value.into()),
34706            "nonce" => self.nonce = Some(value.into()),
34707            "part" => self.part = Some(value.into()),
34708            "popover" => self.popover = Some(value.into()),
34709            "role" => self.role = Some(value.into()),
34710            "slot" => self.slot = Some(value.into()),
34711            "spellcheck" => self.spellcheck = Some(value.into()),
34712            "src" => self.src = Some(value.into()),
34713            "style" => self.style = Some(value.into()),
34714            "tabindex" => self.tabindex = Some(value.into()),
34715            "title" => self.title = Some(value.into()),
34716            "translate" => self.translate = Some(value.into()),
34717            "type_" => self.type_ = Some(value.into()),
34718            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
34719            "width" => self.width = Some(value.into()),
34720            #[cfg(feature = "alloc")]
34721            _ => {
34722                #[allow(clippy::useless_conversion)]
34723                self.extra.insert(name.into(), value.into());
34724            }
34725            #[cfg(not(feature = "alloc"))]
34726            _ => {}
34727        }
34728    }
34729}
34730/// The <strong><code>&lt;embed&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element embeds external content at the specified point in the document. This content is provided by an external application or other source of interactive content such as a browser plug-in.
34731///
34732/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/embed>
34733
34734#[cfg(feature = "alloc")]
34735#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
34736pub struct EmbedOwned {
34737    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
34738    ///   
34739    pub accesskey: core::option::Option<AttributeValueOwned>,
34740    ///
34741    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
34742    ///     <ul>
34743    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
34744    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
34745    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
34746    ///       <li><code>characters</code>, all letters should default to uppercase</li>
34747    ///     </ul>
34748    ///   
34749    pub autocapitalize: core::option::Option<AttributeValueOwned>,
34750    ///
34751    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
34752    ///   
34753    pub autofocus: core::option::Option<AttributeValueOwned>,
34754    ///
34755    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
34756    ///   
34757    pub class: core::option::Option<AttributeValueOwned>,
34758    ///
34759    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
34760    ///     <ul>
34761    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
34762    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
34763    ///     </ul>
34764    ///   
34765    pub contenteditable: core::option::Option<AttributeValueOwned>,
34766    ///
34767    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
34768    ///   
34769    pub contextmenu: core::option::Option<AttributeValueOwned>,
34770    ///
34771    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
34772    ///   
34773    #[cfg(feature = "alloc")]
34774    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
34775    ///
34776    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
34777    ///     <ul>
34778    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
34779    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
34780    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
34781    ///     </ul>
34782    ///   
34783    pub dir: core::option::Option<AttributeValueOwned>,
34784    ///
34785    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
34786    ///     <ul>
34787    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
34788    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
34789    ///     </ul>
34790    ///   
34791    pub draggable: core::option::Option<AttributeValueOwned>,
34792    ///
34793    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
34794    ///   
34795    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
34796    ///
34797    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
34798    ///   
34799    pub exportparts: core::option::Option<AttributeValueOwned>,
34800    /// /// Extra attributes of the element.
34801
34802    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
34803    #[cfg(feature = "alloc")]
34804    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
34805    ///
34806    ///     <p>The displayed height of the resource, in <a class="external" target="_blank" href="https://drafts.csswg.org/css-values/#px">CSS pixels</a>. This must be an absolute value; percentages are <em>not</em> allowed.</p>
34807    ///   
34808    pub height: core::option::Option<AttributeValueOwned>,
34809    ///
34810    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
34811    ///   
34812    pub hidden: core::option::Option<AttributeValueOwned>,
34813    ///
34814    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
34815    ///   
34816    pub id: core::option::Option<AttributeValueOwned>,
34817    ///
34818    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
34819    ///   
34820    pub inert: core::option::Option<AttributeValueOwned>,
34821    ///
34822    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
34823    ///   
34824    pub inputmode: core::option::Option<AttributeValueOwned>,
34825    ///
34826    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
34827    ///   
34828    pub is: core::option::Option<AttributeValueOwned>,
34829    ///
34830    ///     <p>The unique, global identifier of an item.</p>
34831    ///   
34832    pub itemid: core::option::Option<AttributeValueOwned>,
34833    ///
34834    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
34835    ///   
34836    pub itemprop: core::option::Option<AttributeValueOwned>,
34837    ///
34838    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
34839    ///   
34840    pub itemref: core::option::Option<AttributeValueOwned>,
34841    ///
34842    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
34843    ///   
34844    pub itemscope: core::option::Option<AttributeValueOwned>,
34845    ///
34846    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
34847    ///   
34848    pub itemtype: core::option::Option<AttributeValueOwned>,
34849    ///
34850    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
34851    ///   
34852    pub lang: core::option::Option<AttributeValueOwned>,
34853    ///
34854    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
34855    ///   
34856    pub nonce: core::option::Option<AttributeValueOwned>,
34857    ///
34858    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
34859    ///   
34860    pub part: core::option::Option<AttributeValueOwned>,
34861    ///
34862    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
34863    ///   
34864    pub popover: core::option::Option<AttributeValueOwned>,
34865    ///
34866    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
34867    ///   
34868    pub role: core::option::Option<AttributeValueOwned>,
34869    ///
34870    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
34871    ///   
34872    pub slot: core::option::Option<AttributeValueOwned>,
34873    ///
34874    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
34875    ///     <ul>
34876    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
34877    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
34878    ///     </ul>
34879    ///   
34880    pub spellcheck: core::option::Option<AttributeValueOwned>,
34881    ///
34882    ///     <p>The URL of the resource being embedded.</p>
34883    ///   
34884    pub src: core::option::Option<AttributeValueOwned>,
34885    ///
34886    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
34887    ///   
34888    pub style: core::option::Option<AttributeValueOwned>,
34889    ///
34890    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
34891    ///     <ul>
34892    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
34893    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
34894    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
34895    ///     </ul>
34896    ///   
34897    pub tabindex: core::option::Option<AttributeValueOwned>,
34898    ///
34899    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
34900    ///   
34901    pub title: core::option::Option<AttributeValueOwned>,
34902    ///
34903    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
34904    ///     <ul>
34905    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
34906    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
34907    ///     </ul>
34908    ///   
34909    pub translate: core::option::Option<AttributeValueOwned>,
34910    ///
34911    ///     <p>The <a href="/en-US/docs/Glossary/MIME_type">MIME type</a> to use to select the plug-in to instantiate.</p>
34912    ///   
34913    pub type_: core::option::Option<AttributeValueOwned>,
34914    ///
34915    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
34916    ///     <ul>
34917    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
34918    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
34919    ///     </ul>
34920    ///   
34921    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
34922    ///
34923    ///     <p>The displayed width of the resource, in <a target="_blank" class="external" href="https://drafts.csswg.org/css-values/#px">CSS pixels</a>. This must be an absolute value; percentages are <em>not</em> allowed.</p>
34924    ///   
34925    pub width: core::option::Option<AttributeValueOwned>,
34926}
34927#[allow(deprecated)]
34928#[cfg(feature = "alloc")]
34929impl EmbedOwned {
34930    /// Get the tag name of the element.
34931    /// This is the same as the name of the struct, in kebab-case.
34932    pub fn tag() -> &'static str {
34933        "embed"
34934    }
34935    /// Sets an attribute of the element.
34936    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
34937    /// If the `alloc` feature is disabled, this function will silently fail.
34938    ///
34939    /// # Note
34940    /// This only works when the attribute is lowercase.
34941    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
34942        match name {
34943            "accesskey" => self.accesskey = Some(value.into()),
34944            "autocapitalize" => self.autocapitalize = Some(value.into()),
34945            "autofocus" => self.autofocus = Some(value.into()),
34946            "class" => self.class = Some(value.into()),
34947            "contenteditable" => self.contenteditable = Some(value.into()),
34948            "contextmenu" => self.contextmenu = Some(value.into()),
34949            "dir" => self.dir = Some(value.into()),
34950            "draggable" => self.draggable = Some(value.into()),
34951            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
34952            "exportparts" => self.exportparts = Some(value.into()),
34953            "height" => self.height = Some(value.into()),
34954            "hidden" => self.hidden = Some(value.into()),
34955            "id" => self.id = Some(value.into()),
34956            "inert" => self.inert = Some(value.into()),
34957            "inputmode" => self.inputmode = Some(value.into()),
34958            "is" => self.is = Some(value.into()),
34959            "itemid" => self.itemid = Some(value.into()),
34960            "itemprop" => self.itemprop = Some(value.into()),
34961            "itemref" => self.itemref = Some(value.into()),
34962            "itemscope" => self.itemscope = Some(value.into()),
34963            "itemtype" => self.itemtype = Some(value.into()),
34964            "lang" => self.lang = Some(value.into()),
34965            "nonce" => self.nonce = Some(value.into()),
34966            "part" => self.part = Some(value.into()),
34967            "popover" => self.popover = Some(value.into()),
34968            "role" => self.role = Some(value.into()),
34969            "slot" => self.slot = Some(value.into()),
34970            "spellcheck" => self.spellcheck = Some(value.into()),
34971            "src" => self.src = Some(value.into()),
34972            "style" => self.style = Some(value.into()),
34973            "tabindex" => self.tabindex = Some(value.into()),
34974            "title" => self.title = Some(value.into()),
34975            "translate" => self.translate = Some(value.into()),
34976            "type_" => self.type_ = Some(value.into()),
34977            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
34978            "width" => self.width = Some(value.into()),
34979            #[cfg(feature = "alloc")]
34980            _ => {
34981                #[allow(clippy::useless_conversion)]
34982                self.extra.insert(name.into(), value.into());
34983            }
34984            #[cfg(not(feature = "alloc"))]
34985            _ => {}
34986        }
34987    }
34988}
34989/// The <strong><code>&lt;iframe&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents a nested <a href="/en-US/docs/Glossary/Browsing_context">browsing context</a>, embedding another HTML page into the current one.
34990///
34991/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe>
34992
34993#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
34994pub struct Iframe<'life> {
34995    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
34996    ///   
34997    pub accesskey: core::option::Option<AttributeValue<'life>>,
34998    ///
34999    ///     <p>Specifies a <a href="/en-US/docs/Web/HTTP/Permissions_Policy">Permissions Policy</a> for the <code>&lt;iframe&gt;</code>. The policy defines what features are available to the <code>&lt;iframe&gt;</code> (for example, access to the microphone, camera, battery, web-share, etc.) based on the origin of the request.</p>
35000    ///     <div id="sect2" class="notecard note">
35001    ///       <p><strong>Note:</strong> A Permissions Policy specified by the <code>allow</code> attribute implements a further restriction on top of the policy specified in the <a href="/en-US/docs/Web/HTTP/Headers/Permissions-Policy"><code>Permissions-Policy</code></a> header. It doesn't replace it.</p>
35002    ///     </div>
35003    ///   
35004    pub allow: core::option::Option<AttributeValue<'life>>,
35005    ///
35006    ///     <p>Set to <code>true</code> if the <code>&lt;iframe&gt;</code> can activate fullscreen mode by calling the <a title="requestFullscreen()" href="/en-US/docs/Web/API/Element/requestFullscreen"><code>requestFullscreen()</code></a> method.</p>
35007    ///     <div class="notecard note" id="sect3">
35008    ///       <p><strong>Note:</strong> This attribute is considered a legacy attribute and redefined as <code>allow="fullscreen"</code>.</p>
35009    ///     </div>
35010    ///   
35011    pub allowfullscreen: core::option::Option<AttributeValue<'life>>,
35012    ///
35013    ///     <p>Set to <code>true</code> if a cross-origin <code>&lt;iframe&gt;</code> should be allowed to invoke the <a href="/en-US/docs/Web/API/Payment_Request_API">Payment Request API</a>.</p>
35014    ///     <div class="notecard note" id="sect4">
35015    ///       <p><strong>Note:</strong> This attribute is considered a legacy attribute and redefined as <code>allow="payment"</code>.</p>
35016    ///     </div>
35017    ///   
35018    pub allowpaymentrequest: core::option::Option<AttributeValue<'life>>,
35019    ///
35020    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
35021    ///     <ul>
35022    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
35023    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
35024    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
35025    ///       <li><code>characters</code>, all letters should default to uppercase</li>
35026    ///     </ul>
35027    ///   
35028    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
35029    ///
35030    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
35031    ///   
35032    pub autofocus: core::option::Option<AttributeValue<'life>>,
35033    ///
35034    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
35035    ///   
35036    pub class: core::option::Option<AttributeValue<'life>>,
35037    ///
35038    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
35039    ///     <ul>
35040    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
35041    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
35042    ///     </ul>
35043    ///   
35044    pub contenteditable: core::option::Option<AttributeValue<'life>>,
35045    ///
35046    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
35047    ///   
35048    pub contextmenu: core::option::Option<AttributeValue<'life>>,
35049    ///
35050    ///     <p>Set to <code>true</code> to make the <code>&lt;iframe&gt;</code> credentialless, meaning that its content will be loaded in a new, ephemeral context. It doesn't have access to the network, cookies, and storage data associated with its origin. It uses a new context local to the top-level document lifetime. In return, the <a href="/en-US/docs/Web/HTTP/Headers/Cross-Origin-Embedder-Policy"><code>Cross-Origin-Embedder-Policy</code></a> (COEP) embedding rules can be lifted, so documents with COEP set can embed third-party documents that do not. See <a href="/en-US/docs/Web/Security/IFrame_credentialless">IFrame credentialless</a> for more details.</p>
35051    ///   
35052    pub credentialless: core::option::Option<AttributeValue<'life>>,
35053    ///
35054    ///     <p>A <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> enforced for the embedded resource. See <a href="/en-US/docs/Web/API/HTMLIFrameElement/csp"><code>HTMLIFrameElement.csp</code></a> for details.</p>
35055    ///   
35056    pub csp: core::option::Option<AttributeValue<'life>>,
35057    ///
35058    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
35059    ///   
35060    #[cfg(feature = "alloc")]
35061    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
35062    ///
35063    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
35064    ///     <ul>
35065    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
35066    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
35067    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
35068    ///     </ul>
35069    ///   
35070    pub dir: core::option::Option<AttributeValue<'life>>,
35071    ///
35072    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
35073    ///     <ul>
35074    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
35075    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
35076    ///     </ul>
35077    ///   
35078    pub draggable: core::option::Option<AttributeValue<'life>>,
35079    ///
35080    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
35081    ///   
35082    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
35083    ///
35084    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
35085    ///   
35086    pub exportparts: core::option::Option<AttributeValue<'life>>,
35087    /// /// Extra attributes of the element.
35088
35089    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
35090    #[cfg(feature = "alloc")]
35091    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
35092    ///
35093    ///     <p>The height of the frame in CSS pixels. Default is <code>150</code>.</p>
35094    ///   
35095    pub height: core::option::Option<AttributeValue<'life>>,
35096    ///
35097    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
35098    ///   
35099    pub hidden: core::option::Option<AttributeValue<'life>>,
35100    ///
35101    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
35102    ///   
35103    pub id: core::option::Option<AttributeValue<'life>>,
35104    ///
35105    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
35106    ///   
35107    pub inert: core::option::Option<AttributeValue<'life>>,
35108    ///
35109    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
35110    ///   
35111    pub inputmode: core::option::Option<AttributeValue<'life>>,
35112    ///
35113    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
35114    ///   
35115    pub is: core::option::Option<AttributeValue<'life>>,
35116    ///
35117    ///     <p>The unique, global identifier of an item.</p>
35118    ///   
35119    pub itemid: core::option::Option<AttributeValue<'life>>,
35120    ///
35121    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
35122    ///   
35123    pub itemprop: core::option::Option<AttributeValue<'life>>,
35124    ///
35125    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
35126    ///   
35127    pub itemref: core::option::Option<AttributeValue<'life>>,
35128    ///
35129    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
35130    ///   
35131    pub itemscope: core::option::Option<AttributeValue<'life>>,
35132    ///
35133    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
35134    ///   
35135    pub itemtype: core::option::Option<AttributeValue<'life>>,
35136    ///
35137    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
35138    ///   
35139    pub lang: core::option::Option<AttributeValue<'life>>,
35140    ///
35141    ///     <p>Indicates how the browser should load the iframe:</p>
35142    ///     <ul>
35143    ///       <li><code>eager</code>: Load the iframe immediately, regardless if it is outside the visible viewport (this is the default value).</li>
35144    ///       <li><code>lazy</code>: Defer loading of the iframe until it reaches a calculated distance from the viewport, as defined by the browser.</li>
35145    ///     </ul>
35146    ///   
35147    pub loading: core::option::Option<AttributeValue<'life>>,
35148    ///
35149    ///     <p>A targetable name for the embedded browsing context. This can be used in the <code>target</code> attribute of the <a href="/en-US/docs/Web/HTML/Element/a"><code>&lt;a&gt;</code></a>, <a href="/en-US/docs/Web/HTML/Element/form"><code>&lt;form&gt;</code></a>, or <a href="/en-US/docs/Web/HTML/Element/base"><code>&lt;base&gt;</code></a> elements; the <code>formtarget</code> attribute of the <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> or <a href="/en-US/docs/Web/HTML/Element/button"><code>&lt;button&gt;</code></a> elements; or the <code>windowName</code> parameter in the <a title="window.open()" href="/en-US/docs/Web/API/Window/open"><code>window.open()</code></a> method.</p>
35150    ///   
35151    pub name: core::option::Option<AttributeValue<'life>>,
35152    ///
35153    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
35154    ///   
35155    pub nonce: core::option::Option<AttributeValue<'life>>,
35156    ///
35157    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
35158    ///   
35159    pub part: core::option::Option<AttributeValue<'life>>,
35160    ///
35161    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
35162    ///   
35163    pub popover: core::option::Option<AttributeValue<'life>>,
35164    ///
35165    ///     <p>Indicates which <a href="/en-US/docs/Web/API/Document/referrer">referrer</a> to send when fetching the frame's resource:</p>
35166    ///     <ul>
35167    ///       <li><code>no-referrer</code>: The <a href="/en-US/docs/Web/HTTP/Headers/Referer"><code>Referer</code></a> header will not be sent.</li>
35168    ///       <li><code>no-referrer-when-downgrade</code>: The <a href="/en-US/docs/Web/HTTP/Headers/Referer"><code>Referer</code></a> header will not be sent to <a href="/en-US/docs/Glossary/Origin">origin</a>s without <a href="/en-US/docs/Glossary/TLS">TLS</a> (<a href="/en-US/docs/Glossary/HTTPS">HTTPS</a>).</li>
35169    ///       <li><code>origin</code>: The sent referrer will be limited to the origin of the referring page: its <a href="/en-US/docs/Learn/Common_questions/Web_mechanics/What_is_a_URL">scheme</a>, <a href="/en-US/docs/Glossary/Host">host</a>, and <a href="/en-US/docs/Glossary/Port">port</a>.</li>
35170    ///       <li><code>origin-when-cross-origin</code>: 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.</li>
35171    ///       <li><code>same-origin</code>: A referrer will be sent for <a href="/en-US/docs/Glossary/Same-origin_policy">same origin</a>, but cross-origin requests will contain no referrer information.</li>
35172    ///       <li><code>strict-origin</code>: 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).</li>
35173    ///       <li><code>strict-origin-when-cross-origin</code> (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).</li>
35174    ///       <li><code>unsafe-url</code>: The referrer will include the origin <em>and</em> the path (but not the <a href="/en-US/docs/Web/API/HTMLAnchorElement/hash">fragment</a>, <a href="/en-US/docs/Web/API/HTMLAnchorElement/password">password</a>, or <a href="/en-US/docs/Web/API/HTMLAnchorElement/username">username</a>). <strong>This value is unsafe</strong>, because it leaks origins and paths from TLS-protected resources to insecure origins.</li>
35175    ///     </ul>
35176    ///   
35177    pub referrerpolicy: core::option::Option<AttributeValue<'life>>,
35178    ///
35179    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
35180    ///   
35181    pub role: core::option::Option<AttributeValue<'life>>,
35182    ///
35183    ///     <p>Applies extra restrictions to the content in the frame. The value of the attribute can either be empty to apply all restrictions, or space-separated tokens to lift particular restrictions:</p>
35184    ///     <ul>
35185    ///       <li><code>allow-downloads</code>: Allows downloading files through an <a href="/en-US/docs/Web/HTML/Element/a"><code>&lt;a&gt;</code></a> or <a href="/en-US/docs/Web/HTML/Element/area"><code>&lt;area&gt;</code></a> element with the <a href="/en-US/docs/Web/HTML/Element/a#download">download</a> 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.</li>
35186    ///       <li><code>allow-downloads-without-user-activation</code> <abbr title="Experimental. Expect behavior to change in the future." class="icon icon-experimental">
35187    ///     <span class="visually-hidden">Experimental</span>
35188    /// </abbr>: Allows for downloads to occur without a gesture from the user.</li>
35189    ///       <li><code>allow-forms</code>: Allows the page to submit forms. If this keyword is not used, form will be displayed as normal, but submitting it will not trigger input validation, sending data to a web server or closing a dialog.</li>
35190    ///       <li><code>allow-modals</code>: Allows the page to open modal windows by <a href="/en-US/docs/Web/API/Window/alert"><code>Window.alert()</code></a>, <a href="/en-US/docs/Web/API/Window/confirm"><code>Window.confirm()</code></a>, <a href="/en-US/docs/Web/API/Window/print"><code>Window.print()</code></a> and <a href="/en-US/docs/Web/API/Window/prompt"><code>Window.prompt()</code></a>, while opening a <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> is allowed regardless of this keyword. It also allows the page to receive <a href="/en-US/docs/Web/API/BeforeUnloadEvent"><code>BeforeUnloadEvent</code></a> event.</li>
35191    ///       <li><code>allow-orientation-lock</code>: Lets the resource <a href="/en-US/docs/Web/API/Screen/lockOrientation">lock the screen orientation</a>.</li>
35192    ///       <li><code>allow-pointer-lock</code>: Allows the page to use the <a href="/en-US/docs/Web/API/Pointer_Lock_API">Pointer Lock API</a>.</li>
35193    ///       <li><code>allow-popups</code>: Allows popups (like from <a href="/en-US/docs/Web/API/Window/open"><code>Window.open()</code></a>, <code>target="_blank"</code>, <a href="/en-US/docs/Web/API/Window/showModalDialog"><code>Window.showModalDialog()</code></a>). If this keyword is not used, that functionality will silently fail.</li>
35194    ///       <li><code>allow-popups-to-escape-sandbox</code>: Allows a sandboxed document to open new windows without forcing the sandboxing flags upon them. 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.</li>
35195    ///       <li><code>allow-presentation</code>: Allows embedders to have control over whether an iframe can start a <a href="/en-US/docs/Web/API/PresentationRequest">presentation session</a>.</li>
35196    ///       <li><code>allow-same-origin</code>: If this token is not used, the resource is treated as being from a special origin that always fails the <a href="/en-US/docs/Glossary/Same-origin_policy">same-origin policy</a> (potentially preventing access to <a href="/en-US/docs/Web/Security/Same-origin_policy#cross-origin_data_storage_access">data storage/cookies</a> and some JavaScript APIs).</li>
35197    ///       <li><code>allow-scripts</code>: Allows the page to run scripts (but not create pop-up windows). If this keyword is not used, this operation is not allowed.</li>
35198    ///       <li><code>allow-storage-access-by-user-activation</code> <abbr class="icon icon-experimental" title="Experimental. Expect behavior to change in the future.">
35199    ///     <span class="visually-hidden">Experimental</span>
35200    /// </abbr>: Lets the resource request access to the parent's storage capabilities with the <a href="/en-US/docs/Web/API/Storage_Access_API">Storage Access API</a>.</li>
35201    ///       <li><code>allow-top-navigation</code>: Lets the resource navigate the top-level browsing context (the one named <code>_top</code>).</li>
35202    ///       <li><code>allow-top-navigation-by-user-activation</code>: Lets the resource navigate the top-level browsing context, but only if initiated by a user gesture.</li>
35203    ///       <li><code>allow-top-navigation-to-custom-protocols</code>: Allows navigations to non-<code>http</code> protocols built into browser or <a href="/en-US/docs/Web/API/Navigator/registerProtocolHandler/Web-based_protocol_handlers">registered by a website</a>. This feature is also activated by <code>allow-popups</code> or <code>allow-top-navigation</code> keyword.</li>
35204    ///     </ul>
35205    ///     <div class="notecard note" id="sect5">
35206    ///       <p><strong>Note:</strong></p>
35207    ///       <ul>
35208    ///         <li>When the embedded document has the same origin as the embedding page, it is <strong>strongly discouraged</strong> to use both <code>allow-scripts</code> and <code>allow-same-origin</code>, as that lets the embedded document remove the <code>sandbox</code> attribute — making it no more secure than not using the <code>sandbox</code> attribute at all.</li>
35209    ///         <li>Sandboxing is useless if the attacker can display content outside a sandboxed <code>iframe</code> — such as if the viewer opens the frame in a new tab. Such content should be also served from a <em>separate origin</em> to limit potential damage.</li>
35210    ///       </ul>
35211    ///     </div>
35212    ///   
35213    pub sandbox: core::option::Option<AttributeValue<'life>>,
35214    ///
35215    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
35216    ///   
35217    pub slot: core::option::Option<AttributeValue<'life>>,
35218    ///
35219    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
35220    ///     <ul>
35221    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
35222    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
35223    ///     </ul>
35224    ///   
35225    pub spellcheck: core::option::Option<AttributeValue<'life>>,
35226    ///
35227    ///     <p>The URL of the page to embed. Use a value of <code>about:blank</code> to embed an empty page that conforms to the <a href="/en-US/docs/Web/Security/Same-origin_policy#inherited_origins">same-origin policy</a>. Also note that programmatically removing an <code>&lt;iframe&gt;</code>'s src attribute (e.g. via <a href="/en-US/docs/Web/API/Element/removeAttribute"><code>Element.removeAttribute()</code></a>) causes <code>about:blank</code> to be loaded in the frame in Firefox (from version 65), Chromium-based browsers, and Safari/iOS.</p>
35228    ///   
35229    pub src: core::option::Option<AttributeValue<'life>>,
35230    ///
35231    ///     <p>Inline HTML to embed, overriding the <code>src</code> attribute. If a browser does not support the <code>srcdoc</code> attribute, it will fall back to the URL in the <code>src</code> attribute.</p>
35232    ///   
35233    pub srcdoc: core::option::Option<AttributeValue<'life>>,
35234    ///
35235    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
35236    ///   
35237    pub style: core::option::Option<AttributeValue<'life>>,
35238    ///
35239    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
35240    ///     <ul>
35241    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
35242    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
35243    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
35244    ///     </ul>
35245    ///   
35246    pub tabindex: core::option::Option<AttributeValue<'life>>,
35247    ///
35248    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
35249    ///   
35250    pub title: core::option::Option<AttributeValue<'life>>,
35251    ///
35252    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
35253    ///     <ul>
35254    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
35255    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
35256    ///     </ul>
35257    ///   
35258    pub translate: core::option::Option<AttributeValue<'life>>,
35259    ///
35260    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
35261    ///     <ul>
35262    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
35263    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
35264    ///     </ul>
35265    ///   
35266    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
35267    ///
35268    ///     <p>The width of the frame in CSS pixels. Default is <code>300</code>.</p>
35269    ///   
35270    pub width: core::option::Option<AttributeValue<'life>>,
35271}
35272#[allow(deprecated)]
35273
35274impl<'life> Iframe<'life> {
35275    /// Get the tag name of the element.
35276    /// This is the same as the name of the struct, in kebab-case.
35277    pub fn tag() -> &'static str {
35278        "iframe"
35279    }
35280    /// Sets an attribute of the element.
35281    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
35282    /// If the `alloc` feature is disabled, this function will silently fail.
35283    ///
35284    /// # Note
35285    /// This only works when the attribute is lowercase.
35286    pub fn set_attr(
35287        &mut self,
35288        name: &'life str,
35289        value: impl core::convert::Into<AttributeValue<'life>>,
35290    ) {
35291        match name {
35292            "accesskey" => self.accesskey = Some(value.into()),
35293            "allow" => self.allow = Some(value.into()),
35294            "allowfullscreen" => self.allowfullscreen = Some(value.into()),
35295            "allowpaymentrequest" => self.allowpaymentrequest = Some(value.into()),
35296            "autocapitalize" => self.autocapitalize = Some(value.into()),
35297            "autofocus" => self.autofocus = Some(value.into()),
35298            "class" => self.class = Some(value.into()),
35299            "contenteditable" => self.contenteditable = Some(value.into()),
35300            "contextmenu" => self.contextmenu = Some(value.into()),
35301            "credentialless" => self.credentialless = Some(value.into()),
35302            "csp" => self.csp = Some(value.into()),
35303            "dir" => self.dir = Some(value.into()),
35304            "draggable" => self.draggable = Some(value.into()),
35305            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
35306            "exportparts" => self.exportparts = Some(value.into()),
35307            "height" => self.height = Some(value.into()),
35308            "hidden" => self.hidden = Some(value.into()),
35309            "id" => self.id = Some(value.into()),
35310            "inert" => self.inert = Some(value.into()),
35311            "inputmode" => self.inputmode = Some(value.into()),
35312            "is" => self.is = Some(value.into()),
35313            "itemid" => self.itemid = Some(value.into()),
35314            "itemprop" => self.itemprop = Some(value.into()),
35315            "itemref" => self.itemref = Some(value.into()),
35316            "itemscope" => self.itemscope = Some(value.into()),
35317            "itemtype" => self.itemtype = Some(value.into()),
35318            "lang" => self.lang = Some(value.into()),
35319            "loading" => self.loading = Some(value.into()),
35320            "name" => self.name = Some(value.into()),
35321            "nonce" => self.nonce = Some(value.into()),
35322            "part" => self.part = Some(value.into()),
35323            "popover" => self.popover = Some(value.into()),
35324            "referrerpolicy" => self.referrerpolicy = Some(value.into()),
35325            "role" => self.role = Some(value.into()),
35326            "sandbox" => self.sandbox = Some(value.into()),
35327            "slot" => self.slot = Some(value.into()),
35328            "spellcheck" => self.spellcheck = Some(value.into()),
35329            "src" => self.src = Some(value.into()),
35330            "srcdoc" => self.srcdoc = Some(value.into()),
35331            "style" => self.style = Some(value.into()),
35332            "tabindex" => self.tabindex = Some(value.into()),
35333            "title" => self.title = Some(value.into()),
35334            "translate" => self.translate = Some(value.into()),
35335            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
35336            "width" => self.width = Some(value.into()),
35337            #[cfg(feature = "alloc")]
35338            _ => {
35339                #[allow(clippy::useless_conversion)]
35340                self.extra.insert(name.into(), value.into());
35341            }
35342            #[cfg(not(feature = "alloc"))]
35343            _ => {}
35344        }
35345    }
35346}
35347/// The <strong><code>&lt;iframe&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents a nested <a href="/en-US/docs/Glossary/Browsing_context">browsing context</a>, embedding another HTML page into the current one.
35348///
35349/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe>
35350
35351#[cfg(feature = "alloc")]
35352#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
35353pub struct IframeOwned {
35354    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
35355    ///   
35356    pub accesskey: core::option::Option<AttributeValueOwned>,
35357    ///
35358    ///     <p>Specifies a <a href="/en-US/docs/Web/HTTP/Permissions_Policy">Permissions Policy</a> for the <code>&lt;iframe&gt;</code>. The policy defines what features are available to the <code>&lt;iframe&gt;</code> (for example, access to the microphone, camera, battery, web-share, etc.) based on the origin of the request.</p>
35359    ///     <div id="sect2" class="notecard note">
35360    ///       <p><strong>Note:</strong> A Permissions Policy specified by the <code>allow</code> attribute implements a further restriction on top of the policy specified in the <a href="/en-US/docs/Web/HTTP/Headers/Permissions-Policy"><code>Permissions-Policy</code></a> header. It doesn't replace it.</p>
35361    ///     </div>
35362    ///   
35363    pub allow: core::option::Option<AttributeValueOwned>,
35364    ///
35365    ///     <p>Set to <code>true</code> if the <code>&lt;iframe&gt;</code> can activate fullscreen mode by calling the <a title="requestFullscreen()" href="/en-US/docs/Web/API/Element/requestFullscreen"><code>requestFullscreen()</code></a> method.</p>
35366    ///     <div class="notecard note" id="sect3">
35367    ///       <p><strong>Note:</strong> This attribute is considered a legacy attribute and redefined as <code>allow="fullscreen"</code>.</p>
35368    ///     </div>
35369    ///   
35370    pub allowfullscreen: core::option::Option<AttributeValueOwned>,
35371    ///
35372    ///     <p>Set to <code>true</code> if a cross-origin <code>&lt;iframe&gt;</code> should be allowed to invoke the <a href="/en-US/docs/Web/API/Payment_Request_API">Payment Request API</a>.</p>
35373    ///     <div class="notecard note" id="sect4">
35374    ///       <p><strong>Note:</strong> This attribute is considered a legacy attribute and redefined as <code>allow="payment"</code>.</p>
35375    ///     </div>
35376    ///   
35377    pub allowpaymentrequest: core::option::Option<AttributeValueOwned>,
35378    ///
35379    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
35380    ///     <ul>
35381    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
35382    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
35383    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
35384    ///       <li><code>characters</code>, all letters should default to uppercase</li>
35385    ///     </ul>
35386    ///   
35387    pub autocapitalize: core::option::Option<AttributeValueOwned>,
35388    ///
35389    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
35390    ///   
35391    pub autofocus: core::option::Option<AttributeValueOwned>,
35392    ///
35393    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
35394    ///   
35395    pub class: core::option::Option<AttributeValueOwned>,
35396    ///
35397    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
35398    ///     <ul>
35399    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
35400    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
35401    ///     </ul>
35402    ///   
35403    pub contenteditable: core::option::Option<AttributeValueOwned>,
35404    ///
35405    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
35406    ///   
35407    pub contextmenu: core::option::Option<AttributeValueOwned>,
35408    ///
35409    ///     <p>Set to <code>true</code> to make the <code>&lt;iframe&gt;</code> credentialless, meaning that its content will be loaded in a new, ephemeral context. It doesn't have access to the network, cookies, and storage data associated with its origin. It uses a new context local to the top-level document lifetime. In return, the <a href="/en-US/docs/Web/HTTP/Headers/Cross-Origin-Embedder-Policy"><code>Cross-Origin-Embedder-Policy</code></a> (COEP) embedding rules can be lifted, so documents with COEP set can embed third-party documents that do not. See <a href="/en-US/docs/Web/Security/IFrame_credentialless">IFrame credentialless</a> for more details.</p>
35410    ///   
35411    pub credentialless: core::option::Option<AttributeValueOwned>,
35412    ///
35413    ///     <p>A <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> enforced for the embedded resource. See <a href="/en-US/docs/Web/API/HTMLIFrameElement/csp"><code>HTMLIFrameElement.csp</code></a> for details.</p>
35414    ///   
35415    pub csp: core::option::Option<AttributeValueOwned>,
35416    ///
35417    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
35418    ///   
35419    #[cfg(feature = "alloc")]
35420    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
35421    ///
35422    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
35423    ///     <ul>
35424    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
35425    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
35426    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
35427    ///     </ul>
35428    ///   
35429    pub dir: core::option::Option<AttributeValueOwned>,
35430    ///
35431    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
35432    ///     <ul>
35433    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
35434    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
35435    ///     </ul>
35436    ///   
35437    pub draggable: core::option::Option<AttributeValueOwned>,
35438    ///
35439    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
35440    ///   
35441    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
35442    ///
35443    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
35444    ///   
35445    pub exportparts: core::option::Option<AttributeValueOwned>,
35446    /// /// Extra attributes of the element.
35447
35448    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
35449    #[cfg(feature = "alloc")]
35450    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
35451    ///
35452    ///     <p>The height of the frame in CSS pixels. Default is <code>150</code>.</p>
35453    ///   
35454    pub height: core::option::Option<AttributeValueOwned>,
35455    ///
35456    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
35457    ///   
35458    pub hidden: core::option::Option<AttributeValueOwned>,
35459    ///
35460    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
35461    ///   
35462    pub id: core::option::Option<AttributeValueOwned>,
35463    ///
35464    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
35465    ///   
35466    pub inert: core::option::Option<AttributeValueOwned>,
35467    ///
35468    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
35469    ///   
35470    pub inputmode: core::option::Option<AttributeValueOwned>,
35471    ///
35472    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
35473    ///   
35474    pub is: core::option::Option<AttributeValueOwned>,
35475    ///
35476    ///     <p>The unique, global identifier of an item.</p>
35477    ///   
35478    pub itemid: core::option::Option<AttributeValueOwned>,
35479    ///
35480    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
35481    ///   
35482    pub itemprop: core::option::Option<AttributeValueOwned>,
35483    ///
35484    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
35485    ///   
35486    pub itemref: core::option::Option<AttributeValueOwned>,
35487    ///
35488    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
35489    ///   
35490    pub itemscope: core::option::Option<AttributeValueOwned>,
35491    ///
35492    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
35493    ///   
35494    pub itemtype: core::option::Option<AttributeValueOwned>,
35495    ///
35496    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
35497    ///   
35498    pub lang: core::option::Option<AttributeValueOwned>,
35499    ///
35500    ///     <p>Indicates how the browser should load the iframe:</p>
35501    ///     <ul>
35502    ///       <li><code>eager</code>: Load the iframe immediately, regardless if it is outside the visible viewport (this is the default value).</li>
35503    ///       <li><code>lazy</code>: Defer loading of the iframe until it reaches a calculated distance from the viewport, as defined by the browser.</li>
35504    ///     </ul>
35505    ///   
35506    pub loading: core::option::Option<AttributeValueOwned>,
35507    ///
35508    ///     <p>A targetable name for the embedded browsing context. This can be used in the <code>target</code> attribute of the <a href="/en-US/docs/Web/HTML/Element/a"><code>&lt;a&gt;</code></a>, <a href="/en-US/docs/Web/HTML/Element/form"><code>&lt;form&gt;</code></a>, or <a href="/en-US/docs/Web/HTML/Element/base"><code>&lt;base&gt;</code></a> elements; the <code>formtarget</code> attribute of the <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> or <a href="/en-US/docs/Web/HTML/Element/button"><code>&lt;button&gt;</code></a> elements; or the <code>windowName</code> parameter in the <a title="window.open()" href="/en-US/docs/Web/API/Window/open"><code>window.open()</code></a> method.</p>
35509    ///   
35510    pub name: core::option::Option<AttributeValueOwned>,
35511    ///
35512    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
35513    ///   
35514    pub nonce: core::option::Option<AttributeValueOwned>,
35515    ///
35516    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
35517    ///   
35518    pub part: core::option::Option<AttributeValueOwned>,
35519    ///
35520    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
35521    ///   
35522    pub popover: core::option::Option<AttributeValueOwned>,
35523    ///
35524    ///     <p>Indicates which <a href="/en-US/docs/Web/API/Document/referrer">referrer</a> to send when fetching the frame's resource:</p>
35525    ///     <ul>
35526    ///       <li><code>no-referrer</code>: The <a href="/en-US/docs/Web/HTTP/Headers/Referer"><code>Referer</code></a> header will not be sent.</li>
35527    ///       <li><code>no-referrer-when-downgrade</code>: The <a href="/en-US/docs/Web/HTTP/Headers/Referer"><code>Referer</code></a> header will not be sent to <a href="/en-US/docs/Glossary/Origin">origin</a>s without <a href="/en-US/docs/Glossary/TLS">TLS</a> (<a href="/en-US/docs/Glossary/HTTPS">HTTPS</a>).</li>
35528    ///       <li><code>origin</code>: The sent referrer will be limited to the origin of the referring page: its <a href="/en-US/docs/Learn/Common_questions/Web_mechanics/What_is_a_URL">scheme</a>, <a href="/en-US/docs/Glossary/Host">host</a>, and <a href="/en-US/docs/Glossary/Port">port</a>.</li>
35529    ///       <li><code>origin-when-cross-origin</code>: 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.</li>
35530    ///       <li><code>same-origin</code>: A referrer will be sent for <a href="/en-US/docs/Glossary/Same-origin_policy">same origin</a>, but cross-origin requests will contain no referrer information.</li>
35531    ///       <li><code>strict-origin</code>: 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).</li>
35532    ///       <li><code>strict-origin-when-cross-origin</code> (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).</li>
35533    ///       <li><code>unsafe-url</code>: The referrer will include the origin <em>and</em> the path (but not the <a href="/en-US/docs/Web/API/HTMLAnchorElement/hash">fragment</a>, <a href="/en-US/docs/Web/API/HTMLAnchorElement/password">password</a>, or <a href="/en-US/docs/Web/API/HTMLAnchorElement/username">username</a>). <strong>This value is unsafe</strong>, because it leaks origins and paths from TLS-protected resources to insecure origins.</li>
35534    ///     </ul>
35535    ///   
35536    pub referrerpolicy: core::option::Option<AttributeValueOwned>,
35537    ///
35538    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
35539    ///   
35540    pub role: core::option::Option<AttributeValueOwned>,
35541    ///
35542    ///     <p>Applies extra restrictions to the content in the frame. The value of the attribute can either be empty to apply all restrictions, or space-separated tokens to lift particular restrictions:</p>
35543    ///     <ul>
35544    ///       <li><code>allow-downloads</code>: Allows downloading files through an <a href="/en-US/docs/Web/HTML/Element/a"><code>&lt;a&gt;</code></a> or <a href="/en-US/docs/Web/HTML/Element/area"><code>&lt;area&gt;</code></a> element with the <a href="/en-US/docs/Web/HTML/Element/a#download">download</a> 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.</li>
35545    ///       <li><code>allow-downloads-without-user-activation</code> <abbr title="Experimental. Expect behavior to change in the future." class="icon icon-experimental">
35546    ///     <span class="visually-hidden">Experimental</span>
35547    /// </abbr>: Allows for downloads to occur without a gesture from the user.</li>
35548    ///       <li><code>allow-forms</code>: Allows the page to submit forms. If this keyword is not used, form will be displayed as normal, but submitting it will not trigger input validation, sending data to a web server or closing a dialog.</li>
35549    ///       <li><code>allow-modals</code>: Allows the page to open modal windows by <a href="/en-US/docs/Web/API/Window/alert"><code>Window.alert()</code></a>, <a href="/en-US/docs/Web/API/Window/confirm"><code>Window.confirm()</code></a>, <a href="/en-US/docs/Web/API/Window/print"><code>Window.print()</code></a> and <a href="/en-US/docs/Web/API/Window/prompt"><code>Window.prompt()</code></a>, while opening a <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> is allowed regardless of this keyword. It also allows the page to receive <a href="/en-US/docs/Web/API/BeforeUnloadEvent"><code>BeforeUnloadEvent</code></a> event.</li>
35550    ///       <li><code>allow-orientation-lock</code>: Lets the resource <a href="/en-US/docs/Web/API/Screen/lockOrientation">lock the screen orientation</a>.</li>
35551    ///       <li><code>allow-pointer-lock</code>: Allows the page to use the <a href="/en-US/docs/Web/API/Pointer_Lock_API">Pointer Lock API</a>.</li>
35552    ///       <li><code>allow-popups</code>: Allows popups (like from <a href="/en-US/docs/Web/API/Window/open"><code>Window.open()</code></a>, <code>target="_blank"</code>, <a href="/en-US/docs/Web/API/Window/showModalDialog"><code>Window.showModalDialog()</code></a>). If this keyword is not used, that functionality will silently fail.</li>
35553    ///       <li><code>allow-popups-to-escape-sandbox</code>: Allows a sandboxed document to open new windows without forcing the sandboxing flags upon them. 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.</li>
35554    ///       <li><code>allow-presentation</code>: Allows embedders to have control over whether an iframe can start a <a href="/en-US/docs/Web/API/PresentationRequest">presentation session</a>.</li>
35555    ///       <li><code>allow-same-origin</code>: If this token is not used, the resource is treated as being from a special origin that always fails the <a href="/en-US/docs/Glossary/Same-origin_policy">same-origin policy</a> (potentially preventing access to <a href="/en-US/docs/Web/Security/Same-origin_policy#cross-origin_data_storage_access">data storage/cookies</a> and some JavaScript APIs).</li>
35556    ///       <li><code>allow-scripts</code>: Allows the page to run scripts (but not create pop-up windows). If this keyword is not used, this operation is not allowed.</li>
35557    ///       <li><code>allow-storage-access-by-user-activation</code> <abbr class="icon icon-experimental" title="Experimental. Expect behavior to change in the future.">
35558    ///     <span class="visually-hidden">Experimental</span>
35559    /// </abbr>: Lets the resource request access to the parent's storage capabilities with the <a href="/en-US/docs/Web/API/Storage_Access_API">Storage Access API</a>.</li>
35560    ///       <li><code>allow-top-navigation</code>: Lets the resource navigate the top-level browsing context (the one named <code>_top</code>).</li>
35561    ///       <li><code>allow-top-navigation-by-user-activation</code>: Lets the resource navigate the top-level browsing context, but only if initiated by a user gesture.</li>
35562    ///       <li><code>allow-top-navigation-to-custom-protocols</code>: Allows navigations to non-<code>http</code> protocols built into browser or <a href="/en-US/docs/Web/API/Navigator/registerProtocolHandler/Web-based_protocol_handlers">registered by a website</a>. This feature is also activated by <code>allow-popups</code> or <code>allow-top-navigation</code> keyword.</li>
35563    ///     </ul>
35564    ///     <div class="notecard note" id="sect5">
35565    ///       <p><strong>Note:</strong></p>
35566    ///       <ul>
35567    ///         <li>When the embedded document has the same origin as the embedding page, it is <strong>strongly discouraged</strong> to use both <code>allow-scripts</code> and <code>allow-same-origin</code>, as that lets the embedded document remove the <code>sandbox</code> attribute — making it no more secure than not using the <code>sandbox</code> attribute at all.</li>
35568    ///         <li>Sandboxing is useless if the attacker can display content outside a sandboxed <code>iframe</code> — such as if the viewer opens the frame in a new tab. Such content should be also served from a <em>separate origin</em> to limit potential damage.</li>
35569    ///       </ul>
35570    ///     </div>
35571    ///   
35572    pub sandbox: core::option::Option<AttributeValueOwned>,
35573    ///
35574    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
35575    ///   
35576    pub slot: core::option::Option<AttributeValueOwned>,
35577    ///
35578    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
35579    ///     <ul>
35580    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
35581    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
35582    ///     </ul>
35583    ///   
35584    pub spellcheck: core::option::Option<AttributeValueOwned>,
35585    ///
35586    ///     <p>The URL of the page to embed. Use a value of <code>about:blank</code> to embed an empty page that conforms to the <a href="/en-US/docs/Web/Security/Same-origin_policy#inherited_origins">same-origin policy</a>. Also note that programmatically removing an <code>&lt;iframe&gt;</code>'s src attribute (e.g. via <a href="/en-US/docs/Web/API/Element/removeAttribute"><code>Element.removeAttribute()</code></a>) causes <code>about:blank</code> to be loaded in the frame in Firefox (from version 65), Chromium-based browsers, and Safari/iOS.</p>
35587    ///   
35588    pub src: core::option::Option<AttributeValueOwned>,
35589    ///
35590    ///     <p>Inline HTML to embed, overriding the <code>src</code> attribute. If a browser does not support the <code>srcdoc</code> attribute, it will fall back to the URL in the <code>src</code> attribute.</p>
35591    ///   
35592    pub srcdoc: core::option::Option<AttributeValueOwned>,
35593    ///
35594    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
35595    ///   
35596    pub style: core::option::Option<AttributeValueOwned>,
35597    ///
35598    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
35599    ///     <ul>
35600    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
35601    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
35602    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
35603    ///     </ul>
35604    ///   
35605    pub tabindex: core::option::Option<AttributeValueOwned>,
35606    ///
35607    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
35608    ///   
35609    pub title: core::option::Option<AttributeValueOwned>,
35610    ///
35611    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
35612    ///     <ul>
35613    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
35614    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
35615    ///     </ul>
35616    ///   
35617    pub translate: core::option::Option<AttributeValueOwned>,
35618    ///
35619    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
35620    ///     <ul>
35621    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
35622    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
35623    ///     </ul>
35624    ///   
35625    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
35626    ///
35627    ///     <p>The width of the frame in CSS pixels. Default is <code>300</code>.</p>
35628    ///   
35629    pub width: core::option::Option<AttributeValueOwned>,
35630}
35631#[allow(deprecated)]
35632#[cfg(feature = "alloc")]
35633impl IframeOwned {
35634    /// Get the tag name of the element.
35635    /// This is the same as the name of the struct, in kebab-case.
35636    pub fn tag() -> &'static str {
35637        "iframe"
35638    }
35639    /// Sets an attribute of the element.
35640    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
35641    /// If the `alloc` feature is disabled, this function will silently fail.
35642    ///
35643    /// # Note
35644    /// This only works when the attribute is lowercase.
35645    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
35646        match name {
35647            "accesskey" => self.accesskey = Some(value.into()),
35648            "allow" => self.allow = Some(value.into()),
35649            "allowfullscreen" => self.allowfullscreen = Some(value.into()),
35650            "allowpaymentrequest" => self.allowpaymentrequest = Some(value.into()),
35651            "autocapitalize" => self.autocapitalize = Some(value.into()),
35652            "autofocus" => self.autofocus = Some(value.into()),
35653            "class" => self.class = Some(value.into()),
35654            "contenteditable" => self.contenteditable = Some(value.into()),
35655            "contextmenu" => self.contextmenu = Some(value.into()),
35656            "credentialless" => self.credentialless = Some(value.into()),
35657            "csp" => self.csp = Some(value.into()),
35658            "dir" => self.dir = Some(value.into()),
35659            "draggable" => self.draggable = Some(value.into()),
35660            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
35661            "exportparts" => self.exportparts = Some(value.into()),
35662            "height" => self.height = Some(value.into()),
35663            "hidden" => self.hidden = Some(value.into()),
35664            "id" => self.id = Some(value.into()),
35665            "inert" => self.inert = Some(value.into()),
35666            "inputmode" => self.inputmode = Some(value.into()),
35667            "is" => self.is = Some(value.into()),
35668            "itemid" => self.itemid = Some(value.into()),
35669            "itemprop" => self.itemprop = Some(value.into()),
35670            "itemref" => self.itemref = Some(value.into()),
35671            "itemscope" => self.itemscope = Some(value.into()),
35672            "itemtype" => self.itemtype = Some(value.into()),
35673            "lang" => self.lang = Some(value.into()),
35674            "loading" => self.loading = Some(value.into()),
35675            "name" => self.name = Some(value.into()),
35676            "nonce" => self.nonce = Some(value.into()),
35677            "part" => self.part = Some(value.into()),
35678            "popover" => self.popover = Some(value.into()),
35679            "referrerpolicy" => self.referrerpolicy = Some(value.into()),
35680            "role" => self.role = Some(value.into()),
35681            "sandbox" => self.sandbox = Some(value.into()),
35682            "slot" => self.slot = Some(value.into()),
35683            "spellcheck" => self.spellcheck = Some(value.into()),
35684            "src" => self.src = Some(value.into()),
35685            "srcdoc" => self.srcdoc = Some(value.into()),
35686            "style" => self.style = Some(value.into()),
35687            "tabindex" => self.tabindex = Some(value.into()),
35688            "title" => self.title = Some(value.into()),
35689            "translate" => self.translate = Some(value.into()),
35690            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
35691            "width" => self.width = Some(value.into()),
35692            #[cfg(feature = "alloc")]
35693            _ => {
35694                #[allow(clippy::useless_conversion)]
35695                self.extra.insert(name.into(), value.into());
35696            }
35697            #[cfg(not(feature = "alloc"))]
35698            _ => {}
35699        }
35700    }
35701}
35702/// The <strong><code>&lt;object&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents an external resource, which can be treated as an image, a nested browsing context, or a resource to be handled by a plugin.
35703///
35704/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/object>
35705
35706#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
35707pub struct Object<'life> {
35708    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
35709    ///   
35710    pub accesskey: core::option::Option<AttributeValue<'life>>,
35711    ///
35712    ///     <p>A space-separated list of URIs for archives of resources for the object.</p>
35713    ///   
35714    pub archive: core::option::Option<AttributeValue<'life>>,
35715    ///
35716    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
35717    ///     <ul>
35718    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
35719    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
35720    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
35721    ///       <li><code>characters</code>, all letters should default to uppercase</li>
35722    ///     </ul>
35723    ///   
35724    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
35725    ///
35726    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
35727    ///   
35728    pub autofocus: core::option::Option<AttributeValue<'life>>,
35729    ///
35730    ///     <p>The width of a border around the control, in pixels.</p>
35731    ///   
35732    pub border: core::option::Option<AttributeValue<'life>>,
35733    ///
35734    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
35735    ///   
35736    pub class: core::option::Option<AttributeValue<'life>>,
35737    ///
35738    ///     <p>The URI of the object's implementation. It can be used together with, or in place of, the <strong>data</strong> attribute.</p>
35739    ///   
35740    pub classid: core::option::Option<AttributeValue<'life>>,
35741    ///
35742    ///     <p>The base path used to resolve relative URIs specified by <strong>classid</strong>, <strong>data</strong>, or <strong>archive</strong>. If not specified, the default is the base URI of the current document.</p>
35743    ///   
35744    pub codebase: core::option::Option<AttributeValue<'life>>,
35745    ///
35746    ///     <p>The content type of the data specified by <strong>classid</strong>.</p>
35747    ///   
35748    pub codetype: core::option::Option<AttributeValue<'life>>,
35749    ///
35750    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
35751    ///     <ul>
35752    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
35753    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
35754    ///     </ul>
35755    ///   
35756    pub contenteditable: core::option::Option<AttributeValue<'life>>,
35757    ///
35758    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
35759    ///   
35760    pub contextmenu: core::option::Option<AttributeValue<'life>>,
35761    ///
35762    ///     <p>The address of the resource as a valid URL. At least one of <strong>data</strong> and <strong>type</strong> must be defined.</p>
35763    ///   
35764    #[cfg(feature = "alloc")]
35765    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
35766    ///
35767    ///     <p>The presence of this Boolean attribute makes this element a declaration only. The object must be instantiated by a subsequent <code>&lt;object&gt;</code> element. Repeat the <code>&lt;object&gt;</code> element completely each time the resource is reused.</p>
35768    ///   
35769    pub declare: core::option::Option<AttributeValue<'life>>,
35770    ///
35771    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
35772    ///     <ul>
35773    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
35774    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
35775    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
35776    ///     </ul>
35777    ///   
35778    pub dir: core::option::Option<AttributeValue<'life>>,
35779    ///
35780    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
35781    ///     <ul>
35782    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
35783    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
35784    ///     </ul>
35785    ///   
35786    pub draggable: core::option::Option<AttributeValue<'life>>,
35787    ///
35788    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
35789    ///   
35790    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
35791    ///
35792    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
35793    ///   
35794    pub exportparts: core::option::Option<AttributeValue<'life>>,
35795    /// /// Extra attributes of the element.
35796
35797    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
35798    #[cfg(feature = "alloc")]
35799    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
35800    ///
35801    ///     <p>The form element, if any, that the object element is associated with (its <em>form owner</em>). The value of the attribute must be an ID of a <a href="/en-US/docs/Web/HTML/Element/form"><code>&lt;form&gt;</code></a> element in the same document.</p>
35802    ///   
35803    pub form: core::option::Option<AttributeValue<'life>>,
35804    ///
35805    ///     <p>The height of the displayed resource, in <a target="_blank" class="external" href="https://drafts.csswg.org/css-values/#px">CSS pixels</a>. — (Absolute values only. <a class="external" href="https://html.spec.whatwg.org/multipage/embedded-content.html#dimension-attributes" target="_blank">NO percentages</a>)</p>
35806    ///   
35807    pub height: core::option::Option<AttributeValue<'life>>,
35808    ///
35809    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
35810    ///   
35811    pub hidden: core::option::Option<AttributeValue<'life>>,
35812    ///
35813    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
35814    ///   
35815    pub id: core::option::Option<AttributeValue<'life>>,
35816    ///
35817    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
35818    ///   
35819    pub inert: core::option::Option<AttributeValue<'life>>,
35820    ///
35821    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
35822    ///   
35823    pub inputmode: core::option::Option<AttributeValue<'life>>,
35824    ///
35825    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
35826    ///   
35827    pub is: core::option::Option<AttributeValue<'life>>,
35828    ///
35829    ///     <p>The unique, global identifier of an item.</p>
35830    ///   
35831    pub itemid: core::option::Option<AttributeValue<'life>>,
35832    ///
35833    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
35834    ///   
35835    pub itemprop: core::option::Option<AttributeValue<'life>>,
35836    ///
35837    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
35838    ///   
35839    pub itemref: core::option::Option<AttributeValue<'life>>,
35840    ///
35841    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
35842    ///   
35843    pub itemscope: core::option::Option<AttributeValue<'life>>,
35844    ///
35845    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
35846    ///   
35847    pub itemtype: core::option::Option<AttributeValue<'life>>,
35848    ///
35849    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
35850    ///   
35851    pub lang: core::option::Option<AttributeValue<'life>>,
35852    ///
35853    ///     <p>The name of valid browsing context (HTML5), or the name of the control (HTML 4).</p>
35854    ///   
35855    pub name: core::option::Option<AttributeValue<'life>>,
35856    ///
35857    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
35858    ///   
35859    pub nonce: core::option::Option<AttributeValue<'life>>,
35860    ///
35861    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
35862    ///   
35863    pub part: core::option::Option<AttributeValue<'life>>,
35864    ///
35865    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
35866    ///   
35867    pub popover: core::option::Option<AttributeValue<'life>>,
35868    ///
35869    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
35870    ///   
35871    pub role: core::option::Option<AttributeValue<'life>>,
35872    ///
35873    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
35874    ///   
35875    pub slot: core::option::Option<AttributeValue<'life>>,
35876    ///
35877    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
35878    ///     <ul>
35879    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
35880    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
35881    ///     </ul>
35882    ///   
35883    pub spellcheck: core::option::Option<AttributeValue<'life>>,
35884    ///
35885    ///     <p>A message that the browser can show while loading the object's implementation and data.</p>
35886    ///   
35887    pub standby: core::option::Option<AttributeValue<'life>>,
35888    ///
35889    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
35890    ///   
35891    pub style: core::option::Option<AttributeValue<'life>>,
35892    ///
35893    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
35894    ///     <ul>
35895    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
35896    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
35897    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
35898    ///     </ul>
35899    ///   
35900    pub tabindex: core::option::Option<AttributeValue<'life>>,
35901    ///
35902    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
35903    ///   
35904    pub title: core::option::Option<AttributeValue<'life>>,
35905    ///
35906    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
35907    ///     <ul>
35908    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
35909    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
35910    ///     </ul>
35911    ///   
35912    pub translate: core::option::Option<AttributeValue<'life>>,
35913    ///
35914    ///     <p>The <a href="/en-US/docs/Glossary/MIME_type">content type</a> of the resource specified by <strong>data</strong>. At least one of <strong>data</strong> and <strong>type</strong> must be defined.</p>
35915    ///   
35916    pub type_: core::option::Option<AttributeValue<'life>>,
35917    ///
35918    ///     <p>A hash-name reference to a <a href="/en-US/docs/Web/HTML/Element/map"><code>&lt;map&gt;</code></a> element; that is a '#' followed by the value of a <a href="/en-US/docs/Web/HTML/Element/map#name"><code>name</code></a> of a map element.</p>
35919    ///   
35920    pub usemap: core::option::Option<AttributeValue<'life>>,
35921    ///
35922    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
35923    ///     <ul>
35924    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
35925    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
35926    ///     </ul>
35927    ///   
35928    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
35929    ///
35930    ///     <p>The width of the display resource, in <a class="external" href="https://drafts.csswg.org/css-values/#px" target="_blank">CSS pixels</a>. — (Absolute values only. <a target="_blank" href="https://html.spec.whatwg.org/multipage/embedded-content.html#dimension-attributes" class="external">NO percentages</a>)</p>
35931    ///   
35932    pub width: core::option::Option<AttributeValue<'life>>,
35933}
35934#[allow(deprecated)]
35935
35936impl<'life> Object<'life> {
35937    /// Get the tag name of the element.
35938    /// This is the same as the name of the struct, in kebab-case.
35939    pub fn tag() -> &'static str {
35940        "object"
35941    }
35942    /// Sets an attribute of the element.
35943    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
35944    /// If the `alloc` feature is disabled, this function will silently fail.
35945    ///
35946    /// # Note
35947    /// This only works when the attribute is lowercase.
35948    pub fn set_attr(
35949        &mut self,
35950        name: &'life str,
35951        value: impl core::convert::Into<AttributeValue<'life>>,
35952    ) {
35953        match name {
35954            "accesskey" => self.accesskey = Some(value.into()),
35955            "archive" => self.archive = Some(value.into()),
35956            "autocapitalize" => self.autocapitalize = Some(value.into()),
35957            "autofocus" => self.autofocus = Some(value.into()),
35958            "border" => self.border = Some(value.into()),
35959            "class" => self.class = Some(value.into()),
35960            "classid" => self.classid = Some(value.into()),
35961            "codebase" => self.codebase = Some(value.into()),
35962            "codetype" => self.codetype = Some(value.into()),
35963            "contenteditable" => self.contenteditable = Some(value.into()),
35964            "contextmenu" => self.contextmenu = Some(value.into()),
35965            "declare" => self.declare = Some(value.into()),
35966            "dir" => self.dir = Some(value.into()),
35967            "draggable" => self.draggable = Some(value.into()),
35968            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
35969            "exportparts" => self.exportparts = Some(value.into()),
35970            "form" => self.form = Some(value.into()),
35971            "height" => self.height = Some(value.into()),
35972            "hidden" => self.hidden = Some(value.into()),
35973            "id" => self.id = Some(value.into()),
35974            "inert" => self.inert = Some(value.into()),
35975            "inputmode" => self.inputmode = Some(value.into()),
35976            "is" => self.is = Some(value.into()),
35977            "itemid" => self.itemid = Some(value.into()),
35978            "itemprop" => self.itemprop = Some(value.into()),
35979            "itemref" => self.itemref = Some(value.into()),
35980            "itemscope" => self.itemscope = Some(value.into()),
35981            "itemtype" => self.itemtype = Some(value.into()),
35982            "lang" => self.lang = Some(value.into()),
35983            "name" => self.name = Some(value.into()),
35984            "nonce" => self.nonce = Some(value.into()),
35985            "part" => self.part = Some(value.into()),
35986            "popover" => self.popover = Some(value.into()),
35987            "role" => self.role = Some(value.into()),
35988            "slot" => self.slot = Some(value.into()),
35989            "spellcheck" => self.spellcheck = Some(value.into()),
35990            "standby" => self.standby = Some(value.into()),
35991            "style" => self.style = Some(value.into()),
35992            "tabindex" => self.tabindex = Some(value.into()),
35993            "title" => self.title = Some(value.into()),
35994            "translate" => self.translate = Some(value.into()),
35995            "type_" => self.type_ = Some(value.into()),
35996            "usemap" => self.usemap = Some(value.into()),
35997            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
35998            "width" => self.width = Some(value.into()),
35999            #[cfg(feature = "alloc")]
36000            _ => {
36001                #[allow(clippy::useless_conversion)]
36002                self.extra.insert(name.into(), value.into());
36003            }
36004            #[cfg(not(feature = "alloc"))]
36005            _ => {}
36006        }
36007    }
36008}
36009/// The <strong><code>&lt;object&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents an external resource, which can be treated as an image, a nested browsing context, or a resource to be handled by a plugin.
36010///
36011/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/object>
36012
36013#[cfg(feature = "alloc")]
36014#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
36015pub struct ObjectOwned {
36016    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
36017    ///   
36018    pub accesskey: core::option::Option<AttributeValueOwned>,
36019    ///
36020    ///     <p>A space-separated list of URIs for archives of resources for the object.</p>
36021    ///   
36022    pub archive: core::option::Option<AttributeValueOwned>,
36023    ///
36024    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
36025    ///     <ul>
36026    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
36027    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
36028    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
36029    ///       <li><code>characters</code>, all letters should default to uppercase</li>
36030    ///     </ul>
36031    ///   
36032    pub autocapitalize: core::option::Option<AttributeValueOwned>,
36033    ///
36034    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
36035    ///   
36036    pub autofocus: core::option::Option<AttributeValueOwned>,
36037    ///
36038    ///     <p>The width of a border around the control, in pixels.</p>
36039    ///   
36040    pub border: core::option::Option<AttributeValueOwned>,
36041    ///
36042    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
36043    ///   
36044    pub class: core::option::Option<AttributeValueOwned>,
36045    ///
36046    ///     <p>The URI of the object's implementation. It can be used together with, or in place of, the <strong>data</strong> attribute.</p>
36047    ///   
36048    pub classid: core::option::Option<AttributeValueOwned>,
36049    ///
36050    ///     <p>The base path used to resolve relative URIs specified by <strong>classid</strong>, <strong>data</strong>, or <strong>archive</strong>. If not specified, the default is the base URI of the current document.</p>
36051    ///   
36052    pub codebase: core::option::Option<AttributeValueOwned>,
36053    ///
36054    ///     <p>The content type of the data specified by <strong>classid</strong>.</p>
36055    ///   
36056    pub codetype: core::option::Option<AttributeValueOwned>,
36057    ///
36058    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
36059    ///     <ul>
36060    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
36061    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
36062    ///     </ul>
36063    ///   
36064    pub contenteditable: core::option::Option<AttributeValueOwned>,
36065    ///
36066    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
36067    ///   
36068    pub contextmenu: core::option::Option<AttributeValueOwned>,
36069    ///
36070    ///     <p>The address of the resource as a valid URL. At least one of <strong>data</strong> and <strong>type</strong> must be defined.</p>
36071    ///   
36072    #[cfg(feature = "alloc")]
36073    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
36074    ///
36075    ///     <p>The presence of this Boolean attribute makes this element a declaration only. The object must be instantiated by a subsequent <code>&lt;object&gt;</code> element. Repeat the <code>&lt;object&gt;</code> element completely each time the resource is reused.</p>
36076    ///   
36077    pub declare: core::option::Option<AttributeValueOwned>,
36078    ///
36079    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
36080    ///     <ul>
36081    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
36082    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
36083    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
36084    ///     </ul>
36085    ///   
36086    pub dir: core::option::Option<AttributeValueOwned>,
36087    ///
36088    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
36089    ///     <ul>
36090    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
36091    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
36092    ///     </ul>
36093    ///   
36094    pub draggable: core::option::Option<AttributeValueOwned>,
36095    ///
36096    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
36097    ///   
36098    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
36099    ///
36100    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
36101    ///   
36102    pub exportparts: core::option::Option<AttributeValueOwned>,
36103    /// /// Extra attributes of the element.
36104
36105    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
36106    #[cfg(feature = "alloc")]
36107    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
36108    ///
36109    ///     <p>The form element, if any, that the object element is associated with (its <em>form owner</em>). The value of the attribute must be an ID of a <a href="/en-US/docs/Web/HTML/Element/form"><code>&lt;form&gt;</code></a> element in the same document.</p>
36110    ///   
36111    pub form: core::option::Option<AttributeValueOwned>,
36112    ///
36113    ///     <p>The height of the displayed resource, in <a target="_blank" class="external" href="https://drafts.csswg.org/css-values/#px">CSS pixels</a>. — (Absolute values only. <a class="external" href="https://html.spec.whatwg.org/multipage/embedded-content.html#dimension-attributes" target="_blank">NO percentages</a>)</p>
36114    ///   
36115    pub height: core::option::Option<AttributeValueOwned>,
36116    ///
36117    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
36118    ///   
36119    pub hidden: core::option::Option<AttributeValueOwned>,
36120    ///
36121    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
36122    ///   
36123    pub id: core::option::Option<AttributeValueOwned>,
36124    ///
36125    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
36126    ///   
36127    pub inert: core::option::Option<AttributeValueOwned>,
36128    ///
36129    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
36130    ///   
36131    pub inputmode: core::option::Option<AttributeValueOwned>,
36132    ///
36133    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
36134    ///   
36135    pub is: core::option::Option<AttributeValueOwned>,
36136    ///
36137    ///     <p>The unique, global identifier of an item.</p>
36138    ///   
36139    pub itemid: core::option::Option<AttributeValueOwned>,
36140    ///
36141    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
36142    ///   
36143    pub itemprop: core::option::Option<AttributeValueOwned>,
36144    ///
36145    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
36146    ///   
36147    pub itemref: core::option::Option<AttributeValueOwned>,
36148    ///
36149    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
36150    ///   
36151    pub itemscope: core::option::Option<AttributeValueOwned>,
36152    ///
36153    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
36154    ///   
36155    pub itemtype: core::option::Option<AttributeValueOwned>,
36156    ///
36157    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
36158    ///   
36159    pub lang: core::option::Option<AttributeValueOwned>,
36160    ///
36161    ///     <p>The name of valid browsing context (HTML5), or the name of the control (HTML 4).</p>
36162    ///   
36163    pub name: core::option::Option<AttributeValueOwned>,
36164    ///
36165    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
36166    ///   
36167    pub nonce: core::option::Option<AttributeValueOwned>,
36168    ///
36169    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
36170    ///   
36171    pub part: core::option::Option<AttributeValueOwned>,
36172    ///
36173    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
36174    ///   
36175    pub popover: core::option::Option<AttributeValueOwned>,
36176    ///
36177    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
36178    ///   
36179    pub role: core::option::Option<AttributeValueOwned>,
36180    ///
36181    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
36182    ///   
36183    pub slot: core::option::Option<AttributeValueOwned>,
36184    ///
36185    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
36186    ///     <ul>
36187    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
36188    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
36189    ///     </ul>
36190    ///   
36191    pub spellcheck: core::option::Option<AttributeValueOwned>,
36192    ///
36193    ///     <p>A message that the browser can show while loading the object's implementation and data.</p>
36194    ///   
36195    pub standby: core::option::Option<AttributeValueOwned>,
36196    ///
36197    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
36198    ///   
36199    pub style: core::option::Option<AttributeValueOwned>,
36200    ///
36201    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
36202    ///     <ul>
36203    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
36204    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
36205    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
36206    ///     </ul>
36207    ///   
36208    pub tabindex: core::option::Option<AttributeValueOwned>,
36209    ///
36210    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
36211    ///   
36212    pub title: core::option::Option<AttributeValueOwned>,
36213    ///
36214    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
36215    ///     <ul>
36216    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
36217    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
36218    ///     </ul>
36219    ///   
36220    pub translate: core::option::Option<AttributeValueOwned>,
36221    ///
36222    ///     <p>The <a href="/en-US/docs/Glossary/MIME_type">content type</a> of the resource specified by <strong>data</strong>. At least one of <strong>data</strong> and <strong>type</strong> must be defined.</p>
36223    ///   
36224    pub type_: core::option::Option<AttributeValueOwned>,
36225    ///
36226    ///     <p>A hash-name reference to a <a href="/en-US/docs/Web/HTML/Element/map"><code>&lt;map&gt;</code></a> element; that is a '#' followed by the value of a <a href="/en-US/docs/Web/HTML/Element/map#name"><code>name</code></a> of a map element.</p>
36227    ///   
36228    pub usemap: core::option::Option<AttributeValueOwned>,
36229    ///
36230    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
36231    ///     <ul>
36232    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
36233    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
36234    ///     </ul>
36235    ///   
36236    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
36237    ///
36238    ///     <p>The width of the display resource, in <a class="external" href="https://drafts.csswg.org/css-values/#px" target="_blank">CSS pixels</a>. — (Absolute values only. <a target="_blank" href="https://html.spec.whatwg.org/multipage/embedded-content.html#dimension-attributes" class="external">NO percentages</a>)</p>
36239    ///   
36240    pub width: core::option::Option<AttributeValueOwned>,
36241}
36242#[allow(deprecated)]
36243#[cfg(feature = "alloc")]
36244impl ObjectOwned {
36245    /// Get the tag name of the element.
36246    /// This is the same as the name of the struct, in kebab-case.
36247    pub fn tag() -> &'static str {
36248        "object"
36249    }
36250    /// Sets an attribute of the element.
36251    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
36252    /// If the `alloc` feature is disabled, this function will silently fail.
36253    ///
36254    /// # Note
36255    /// This only works when the attribute is lowercase.
36256    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
36257        match name {
36258            "accesskey" => self.accesskey = Some(value.into()),
36259            "archive" => self.archive = Some(value.into()),
36260            "autocapitalize" => self.autocapitalize = Some(value.into()),
36261            "autofocus" => self.autofocus = Some(value.into()),
36262            "border" => self.border = Some(value.into()),
36263            "class" => self.class = Some(value.into()),
36264            "classid" => self.classid = Some(value.into()),
36265            "codebase" => self.codebase = Some(value.into()),
36266            "codetype" => self.codetype = Some(value.into()),
36267            "contenteditable" => self.contenteditable = Some(value.into()),
36268            "contextmenu" => self.contextmenu = Some(value.into()),
36269            "declare" => self.declare = Some(value.into()),
36270            "dir" => self.dir = Some(value.into()),
36271            "draggable" => self.draggable = Some(value.into()),
36272            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
36273            "exportparts" => self.exportparts = Some(value.into()),
36274            "form" => self.form = Some(value.into()),
36275            "height" => self.height = Some(value.into()),
36276            "hidden" => self.hidden = Some(value.into()),
36277            "id" => self.id = Some(value.into()),
36278            "inert" => self.inert = Some(value.into()),
36279            "inputmode" => self.inputmode = Some(value.into()),
36280            "is" => self.is = Some(value.into()),
36281            "itemid" => self.itemid = Some(value.into()),
36282            "itemprop" => self.itemprop = Some(value.into()),
36283            "itemref" => self.itemref = Some(value.into()),
36284            "itemscope" => self.itemscope = Some(value.into()),
36285            "itemtype" => self.itemtype = Some(value.into()),
36286            "lang" => self.lang = Some(value.into()),
36287            "name" => self.name = Some(value.into()),
36288            "nonce" => self.nonce = Some(value.into()),
36289            "part" => self.part = Some(value.into()),
36290            "popover" => self.popover = Some(value.into()),
36291            "role" => self.role = Some(value.into()),
36292            "slot" => self.slot = Some(value.into()),
36293            "spellcheck" => self.spellcheck = Some(value.into()),
36294            "standby" => self.standby = Some(value.into()),
36295            "style" => self.style = Some(value.into()),
36296            "tabindex" => self.tabindex = Some(value.into()),
36297            "title" => self.title = Some(value.into()),
36298            "translate" => self.translate = Some(value.into()),
36299            "type_" => self.type_ = Some(value.into()),
36300            "usemap" => self.usemap = Some(value.into()),
36301            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
36302            "width" => self.width = Some(value.into()),
36303            #[cfg(feature = "alloc")]
36304            _ => {
36305                #[allow(clippy::useless_conversion)]
36306                self.extra.insert(name.into(), value.into());
36307            }
36308            #[cfg(not(feature = "alloc"))]
36309            _ => {}
36310        }
36311    }
36312}
36313/// The <strong><code>&lt;picture&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element contains zero or more <a href="/en-US/docs/Web/HTML/Element/source"><code>&lt;source&gt;</code></a> elements and one <a href="/en-US/docs/Web/HTML/Element/img"><code>&lt;img&gt;</code></a> element to offer alternative versions of an image for different display/device scenarios.
36314///
36315/// The browser will consider each child <code>&lt;source&gt;</code> element and choose the best match among them. If no matches are found—or the browser doesn't support the <code>&lt;picture&gt;</code> element—the URL of the <code>&lt;img&gt;</code> element's <a href="/en-US/docs/Web/HTML/Element/img#src"><code>src</code></a> attribute is selected. The selected image is then presented in the space occupied by the <code>&lt;img&gt;</code> element.
36316///
36317/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/picture>
36318
36319#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
36320pub struct Picture<'life> {
36321    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
36322    ///   
36323    pub accesskey: core::option::Option<AttributeValue<'life>>,
36324    ///
36325    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
36326    ///     <ul>
36327    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
36328    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
36329    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
36330    ///       <li><code>characters</code>, all letters should default to uppercase</li>
36331    ///     </ul>
36332    ///   
36333    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
36334    ///
36335    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
36336    ///   
36337    pub autofocus: core::option::Option<AttributeValue<'life>>,
36338    ///
36339    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
36340    ///   
36341    pub class: core::option::Option<AttributeValue<'life>>,
36342    ///
36343    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
36344    ///     <ul>
36345    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
36346    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
36347    ///     </ul>
36348    ///   
36349    pub contenteditable: core::option::Option<AttributeValue<'life>>,
36350    ///
36351    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
36352    ///   
36353    pub contextmenu: core::option::Option<AttributeValue<'life>>,
36354    ///
36355    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
36356    ///   
36357    #[cfg(feature = "alloc")]
36358    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
36359    ///
36360    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
36361    ///     <ul>
36362    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
36363    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
36364    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
36365    ///     </ul>
36366    ///   
36367    pub dir: core::option::Option<AttributeValue<'life>>,
36368    ///
36369    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
36370    ///     <ul>
36371    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
36372    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
36373    ///     </ul>
36374    ///   
36375    pub draggable: core::option::Option<AttributeValue<'life>>,
36376    ///
36377    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
36378    ///   
36379    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
36380    ///
36381    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
36382    ///   
36383    pub exportparts: core::option::Option<AttributeValue<'life>>,
36384    /// /// Extra attributes of the element.
36385
36386    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
36387    #[cfg(feature = "alloc")]
36388    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
36389    ///
36390    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
36391    ///   
36392    pub hidden: core::option::Option<AttributeValue<'life>>,
36393    ///
36394    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
36395    ///   
36396    pub id: core::option::Option<AttributeValue<'life>>,
36397    ///
36398    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
36399    ///   
36400    pub inert: core::option::Option<AttributeValue<'life>>,
36401    ///
36402    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
36403    ///   
36404    pub inputmode: core::option::Option<AttributeValue<'life>>,
36405    ///
36406    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
36407    ///   
36408    pub is: core::option::Option<AttributeValue<'life>>,
36409    ///
36410    ///     <p>The unique, global identifier of an item.</p>
36411    ///   
36412    pub itemid: core::option::Option<AttributeValue<'life>>,
36413    ///
36414    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
36415    ///   
36416    pub itemprop: core::option::Option<AttributeValue<'life>>,
36417    ///
36418    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
36419    ///   
36420    pub itemref: core::option::Option<AttributeValue<'life>>,
36421    ///
36422    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
36423    ///   
36424    pub itemscope: core::option::Option<AttributeValue<'life>>,
36425    ///
36426    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
36427    ///   
36428    pub itemtype: core::option::Option<AttributeValue<'life>>,
36429    ///
36430    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
36431    ///   
36432    pub lang: core::option::Option<AttributeValue<'life>>,
36433    ///
36434    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
36435    ///   
36436    pub nonce: core::option::Option<AttributeValue<'life>>,
36437    ///
36438    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
36439    ///   
36440    pub part: core::option::Option<AttributeValue<'life>>,
36441    ///
36442    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
36443    ///   
36444    pub popover: core::option::Option<AttributeValue<'life>>,
36445    ///
36446    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
36447    ///   
36448    pub role: core::option::Option<AttributeValue<'life>>,
36449    ///
36450    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
36451    ///   
36452    pub slot: core::option::Option<AttributeValue<'life>>,
36453    ///
36454    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
36455    ///     <ul>
36456    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
36457    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
36458    ///     </ul>
36459    ///   
36460    pub spellcheck: core::option::Option<AttributeValue<'life>>,
36461    ///
36462    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
36463    ///   
36464    pub style: core::option::Option<AttributeValue<'life>>,
36465    ///
36466    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
36467    ///     <ul>
36468    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
36469    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
36470    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
36471    ///     </ul>
36472    ///   
36473    pub tabindex: core::option::Option<AttributeValue<'life>>,
36474    ///
36475    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
36476    ///   
36477    pub title: core::option::Option<AttributeValue<'life>>,
36478    ///
36479    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
36480    ///     <ul>
36481    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
36482    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
36483    ///     </ul>
36484    ///   
36485    pub translate: core::option::Option<AttributeValue<'life>>,
36486    ///
36487    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
36488    ///     <ul>
36489    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
36490    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
36491    ///     </ul>
36492    ///   
36493    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
36494}
36495#[allow(deprecated)]
36496
36497impl<'life> Picture<'life> {
36498    /// Get the tag name of the element.
36499    /// This is the same as the name of the struct, in kebab-case.
36500    pub fn tag() -> &'static str {
36501        "picture"
36502    }
36503    /// Sets an attribute of the element.
36504    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
36505    /// If the `alloc` feature is disabled, this function will silently fail.
36506    ///
36507    /// # Note
36508    /// This only works when the attribute is lowercase.
36509    pub fn set_attr(
36510        &mut self,
36511        name: &'life str,
36512        value: impl core::convert::Into<AttributeValue<'life>>,
36513    ) {
36514        match name {
36515            "accesskey" => self.accesskey = Some(value.into()),
36516            "autocapitalize" => self.autocapitalize = Some(value.into()),
36517            "autofocus" => self.autofocus = Some(value.into()),
36518            "class" => self.class = Some(value.into()),
36519            "contenteditable" => self.contenteditable = Some(value.into()),
36520            "contextmenu" => self.contextmenu = Some(value.into()),
36521            "dir" => self.dir = Some(value.into()),
36522            "draggable" => self.draggable = Some(value.into()),
36523            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
36524            "exportparts" => self.exportparts = Some(value.into()),
36525            "hidden" => self.hidden = Some(value.into()),
36526            "id" => self.id = Some(value.into()),
36527            "inert" => self.inert = Some(value.into()),
36528            "inputmode" => self.inputmode = Some(value.into()),
36529            "is" => self.is = Some(value.into()),
36530            "itemid" => self.itemid = Some(value.into()),
36531            "itemprop" => self.itemprop = Some(value.into()),
36532            "itemref" => self.itemref = Some(value.into()),
36533            "itemscope" => self.itemscope = Some(value.into()),
36534            "itemtype" => self.itemtype = Some(value.into()),
36535            "lang" => self.lang = Some(value.into()),
36536            "nonce" => self.nonce = Some(value.into()),
36537            "part" => self.part = Some(value.into()),
36538            "popover" => self.popover = Some(value.into()),
36539            "role" => self.role = Some(value.into()),
36540            "slot" => self.slot = Some(value.into()),
36541            "spellcheck" => self.spellcheck = Some(value.into()),
36542            "style" => self.style = Some(value.into()),
36543            "tabindex" => self.tabindex = Some(value.into()),
36544            "title" => self.title = Some(value.into()),
36545            "translate" => self.translate = Some(value.into()),
36546            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
36547            #[cfg(feature = "alloc")]
36548            _ => {
36549                #[allow(clippy::useless_conversion)]
36550                self.extra.insert(name.into(), value.into());
36551            }
36552            #[cfg(not(feature = "alloc"))]
36553            _ => {}
36554        }
36555    }
36556}
36557/// The <strong><code>&lt;picture&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element contains zero or more <a href="/en-US/docs/Web/HTML/Element/source"><code>&lt;source&gt;</code></a> elements and one <a href="/en-US/docs/Web/HTML/Element/img"><code>&lt;img&gt;</code></a> element to offer alternative versions of an image for different display/device scenarios.
36558///
36559/// The browser will consider each child <code>&lt;source&gt;</code> element and choose the best match among them. If no matches are found—or the browser doesn't support the <code>&lt;picture&gt;</code> element—the URL of the <code>&lt;img&gt;</code> element's <a href="/en-US/docs/Web/HTML/Element/img#src"><code>src</code></a> attribute is selected. The selected image is then presented in the space occupied by the <code>&lt;img&gt;</code> element.
36560///
36561/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/picture>
36562
36563#[cfg(feature = "alloc")]
36564#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
36565pub struct PictureOwned {
36566    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
36567    ///   
36568    pub accesskey: core::option::Option<AttributeValueOwned>,
36569    ///
36570    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
36571    ///     <ul>
36572    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
36573    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
36574    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
36575    ///       <li><code>characters</code>, all letters should default to uppercase</li>
36576    ///     </ul>
36577    ///   
36578    pub autocapitalize: core::option::Option<AttributeValueOwned>,
36579    ///
36580    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
36581    ///   
36582    pub autofocus: core::option::Option<AttributeValueOwned>,
36583    ///
36584    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
36585    ///   
36586    pub class: core::option::Option<AttributeValueOwned>,
36587    ///
36588    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
36589    ///     <ul>
36590    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
36591    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
36592    ///     </ul>
36593    ///   
36594    pub contenteditable: core::option::Option<AttributeValueOwned>,
36595    ///
36596    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
36597    ///   
36598    pub contextmenu: core::option::Option<AttributeValueOwned>,
36599    ///
36600    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
36601    ///   
36602    #[cfg(feature = "alloc")]
36603    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
36604    ///
36605    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
36606    ///     <ul>
36607    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
36608    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
36609    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
36610    ///     </ul>
36611    ///   
36612    pub dir: core::option::Option<AttributeValueOwned>,
36613    ///
36614    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
36615    ///     <ul>
36616    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
36617    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
36618    ///     </ul>
36619    ///   
36620    pub draggable: core::option::Option<AttributeValueOwned>,
36621    ///
36622    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
36623    ///   
36624    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
36625    ///
36626    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
36627    ///   
36628    pub exportparts: core::option::Option<AttributeValueOwned>,
36629    /// /// Extra attributes of the element.
36630
36631    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
36632    #[cfg(feature = "alloc")]
36633    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
36634    ///
36635    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
36636    ///   
36637    pub hidden: core::option::Option<AttributeValueOwned>,
36638    ///
36639    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
36640    ///   
36641    pub id: core::option::Option<AttributeValueOwned>,
36642    ///
36643    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
36644    ///   
36645    pub inert: core::option::Option<AttributeValueOwned>,
36646    ///
36647    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
36648    ///   
36649    pub inputmode: core::option::Option<AttributeValueOwned>,
36650    ///
36651    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
36652    ///   
36653    pub is: core::option::Option<AttributeValueOwned>,
36654    ///
36655    ///     <p>The unique, global identifier of an item.</p>
36656    ///   
36657    pub itemid: core::option::Option<AttributeValueOwned>,
36658    ///
36659    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
36660    ///   
36661    pub itemprop: core::option::Option<AttributeValueOwned>,
36662    ///
36663    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
36664    ///   
36665    pub itemref: core::option::Option<AttributeValueOwned>,
36666    ///
36667    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
36668    ///   
36669    pub itemscope: core::option::Option<AttributeValueOwned>,
36670    ///
36671    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
36672    ///   
36673    pub itemtype: core::option::Option<AttributeValueOwned>,
36674    ///
36675    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
36676    ///   
36677    pub lang: core::option::Option<AttributeValueOwned>,
36678    ///
36679    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
36680    ///   
36681    pub nonce: core::option::Option<AttributeValueOwned>,
36682    ///
36683    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
36684    ///   
36685    pub part: core::option::Option<AttributeValueOwned>,
36686    ///
36687    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
36688    ///   
36689    pub popover: core::option::Option<AttributeValueOwned>,
36690    ///
36691    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
36692    ///   
36693    pub role: core::option::Option<AttributeValueOwned>,
36694    ///
36695    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
36696    ///   
36697    pub slot: core::option::Option<AttributeValueOwned>,
36698    ///
36699    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
36700    ///     <ul>
36701    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
36702    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
36703    ///     </ul>
36704    ///   
36705    pub spellcheck: core::option::Option<AttributeValueOwned>,
36706    ///
36707    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
36708    ///   
36709    pub style: core::option::Option<AttributeValueOwned>,
36710    ///
36711    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
36712    ///     <ul>
36713    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
36714    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
36715    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
36716    ///     </ul>
36717    ///   
36718    pub tabindex: core::option::Option<AttributeValueOwned>,
36719    ///
36720    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
36721    ///   
36722    pub title: core::option::Option<AttributeValueOwned>,
36723    ///
36724    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
36725    ///     <ul>
36726    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
36727    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
36728    ///     </ul>
36729    ///   
36730    pub translate: core::option::Option<AttributeValueOwned>,
36731    ///
36732    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
36733    ///     <ul>
36734    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
36735    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
36736    ///     </ul>
36737    ///   
36738    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
36739}
36740#[allow(deprecated)]
36741#[cfg(feature = "alloc")]
36742impl PictureOwned {
36743    /// Get the tag name of the element.
36744    /// This is the same as the name of the struct, in kebab-case.
36745    pub fn tag() -> &'static str {
36746        "picture"
36747    }
36748    /// Sets an attribute of the element.
36749    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
36750    /// If the `alloc` feature is disabled, this function will silently fail.
36751    ///
36752    /// # Note
36753    /// This only works when the attribute is lowercase.
36754    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
36755        match name {
36756            "accesskey" => self.accesskey = Some(value.into()),
36757            "autocapitalize" => self.autocapitalize = Some(value.into()),
36758            "autofocus" => self.autofocus = Some(value.into()),
36759            "class" => self.class = Some(value.into()),
36760            "contenteditable" => self.contenteditable = Some(value.into()),
36761            "contextmenu" => self.contextmenu = Some(value.into()),
36762            "dir" => self.dir = Some(value.into()),
36763            "draggable" => self.draggable = Some(value.into()),
36764            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
36765            "exportparts" => self.exportparts = Some(value.into()),
36766            "hidden" => self.hidden = Some(value.into()),
36767            "id" => self.id = Some(value.into()),
36768            "inert" => self.inert = Some(value.into()),
36769            "inputmode" => self.inputmode = Some(value.into()),
36770            "is" => self.is = Some(value.into()),
36771            "itemid" => self.itemid = Some(value.into()),
36772            "itemprop" => self.itemprop = Some(value.into()),
36773            "itemref" => self.itemref = Some(value.into()),
36774            "itemscope" => self.itemscope = Some(value.into()),
36775            "itemtype" => self.itemtype = Some(value.into()),
36776            "lang" => self.lang = Some(value.into()),
36777            "nonce" => self.nonce = Some(value.into()),
36778            "part" => self.part = Some(value.into()),
36779            "popover" => self.popover = Some(value.into()),
36780            "role" => self.role = Some(value.into()),
36781            "slot" => self.slot = Some(value.into()),
36782            "spellcheck" => self.spellcheck = Some(value.into()),
36783            "style" => self.style = Some(value.into()),
36784            "tabindex" => self.tabindex = Some(value.into()),
36785            "title" => self.title = Some(value.into()),
36786            "translate" => self.translate = Some(value.into()),
36787            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
36788            #[cfg(feature = "alloc")]
36789            _ => {
36790                #[allow(clippy::useless_conversion)]
36791                self.extra.insert(name.into(), value.into());
36792            }
36793            #[cfg(not(feature = "alloc"))]
36794            _ => {}
36795        }
36796    }
36797}
36798/// The <strong><code>&lt;portal&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element enables the embedding of another HTML page into the current one for the purposes of allowing smoother navigation into new pages.
36799///
36800/// A <code>&lt;portal&gt;</code> is similar to an <code>&lt;iframe&gt;</code>. An <code>&lt;iframe&gt;</code> allows a separate <a href="/en-US/docs/Glossary/Browsing_context">browsing context</a> to be embedded. However, the embedded content of a <code>&lt;portal&gt;</code> is more limited than that of an <code>&lt;iframe&gt;</code>. It cannot be interacted with, and therefore is not suitable for embedding widgets into a document. Instead, the <code>&lt;portal&gt;</code> acts as a preview of the content of another page. It can be navigated into therefore allowing for seamless transition to the embedded content.
36801///
36802/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/portal>
36803
36804#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
36805pub struct Portal<'life> {
36806    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
36807    ///   
36808    pub accesskey: core::option::Option<AttributeValue<'life>>,
36809    ///
36810    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
36811    ///     <ul>
36812    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
36813    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
36814    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
36815    ///       <li><code>characters</code>, all letters should default to uppercase</li>
36816    ///     </ul>
36817    ///   
36818    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
36819    ///
36820    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
36821    ///   
36822    pub autofocus: core::option::Option<AttributeValue<'life>>,
36823    ///
36824    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
36825    ///   
36826    pub class: core::option::Option<AttributeValue<'life>>,
36827    ///
36828    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
36829    ///     <ul>
36830    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
36831    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
36832    ///     </ul>
36833    ///   
36834    pub contenteditable: core::option::Option<AttributeValue<'life>>,
36835    ///
36836    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
36837    ///   
36838    pub contextmenu: core::option::Option<AttributeValue<'life>>,
36839    ///
36840    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
36841    ///   
36842    #[cfg(feature = "alloc")]
36843    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
36844    ///
36845    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
36846    ///     <ul>
36847    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
36848    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
36849    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
36850    ///     </ul>
36851    ///   
36852    pub dir: core::option::Option<AttributeValue<'life>>,
36853    ///
36854    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
36855    ///     <ul>
36856    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
36857    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
36858    ///     </ul>
36859    ///   
36860    pub draggable: core::option::Option<AttributeValue<'life>>,
36861    ///
36862    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
36863    ///   
36864    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
36865    ///
36866    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
36867    ///   
36868    pub exportparts: core::option::Option<AttributeValue<'life>>,
36869    /// /// Extra attributes of the element.
36870
36871    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
36872    #[cfg(feature = "alloc")]
36873    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
36874    ///
36875    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
36876    ///   
36877    pub hidden: core::option::Option<AttributeValue<'life>>,
36878    ///
36879    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
36880    ///   
36881    pub id: core::option::Option<AttributeValue<'life>>,
36882    ///
36883    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
36884    ///   
36885    pub inert: core::option::Option<AttributeValue<'life>>,
36886    ///
36887    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
36888    ///   
36889    pub inputmode: core::option::Option<AttributeValue<'life>>,
36890    ///
36891    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
36892    ///   
36893    pub is: core::option::Option<AttributeValue<'life>>,
36894    ///
36895    ///     <p>The unique, global identifier of an item.</p>
36896    ///   
36897    pub itemid: core::option::Option<AttributeValue<'life>>,
36898    ///
36899    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
36900    ///   
36901    pub itemprop: core::option::Option<AttributeValue<'life>>,
36902    ///
36903    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
36904    ///   
36905    pub itemref: core::option::Option<AttributeValue<'life>>,
36906    ///
36907    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
36908    ///   
36909    pub itemscope: core::option::Option<AttributeValue<'life>>,
36910    ///
36911    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
36912    ///   
36913    pub itemtype: core::option::Option<AttributeValue<'life>>,
36914    ///
36915    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
36916    ///   
36917    pub lang: core::option::Option<AttributeValue<'life>>,
36918    ///
36919    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
36920    ///   
36921    pub nonce: core::option::Option<AttributeValue<'life>>,
36922    ///
36923    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
36924    ///   
36925    pub part: core::option::Option<AttributeValue<'life>>,
36926    ///
36927    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
36928    ///   
36929    pub popover: core::option::Option<AttributeValue<'life>>,
36930    ///
36931    ///     <p>Sets the <a href="/en-US/docs/Web/HTTP/Headers/Referrer-Policy">referrer policy</a> to use when requesting the page at the URL given as the value of the <code>src</code> attribute.</p>
36932    ///   
36933    pub referrerpolicy: core::option::Option<AttributeValue<'life>>,
36934    ///
36935    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
36936    ///   
36937    pub role: core::option::Option<AttributeValue<'life>>,
36938    ///
36939    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
36940    ///   
36941    pub slot: core::option::Option<AttributeValue<'life>>,
36942    ///
36943    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
36944    ///     <ul>
36945    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
36946    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
36947    ///     </ul>
36948    ///   
36949    pub spellcheck: core::option::Option<AttributeValue<'life>>,
36950    ///
36951    ///     <p>The URL of the page to embed.</p>
36952    ///   
36953    pub src: core::option::Option<AttributeValue<'life>>,
36954    ///
36955    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
36956    ///   
36957    pub style: core::option::Option<AttributeValue<'life>>,
36958    ///
36959    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
36960    ///     <ul>
36961    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
36962    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
36963    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
36964    ///     </ul>
36965    ///   
36966    pub tabindex: core::option::Option<AttributeValue<'life>>,
36967    ///
36968    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
36969    ///   
36970    pub title: core::option::Option<AttributeValue<'life>>,
36971    ///
36972    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
36973    ///     <ul>
36974    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
36975    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
36976    ///     </ul>
36977    ///   
36978    pub translate: core::option::Option<AttributeValue<'life>>,
36979    ///
36980    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
36981    ///     <ul>
36982    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
36983    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
36984    ///     </ul>
36985    ///   
36986    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
36987}
36988#[allow(deprecated)]
36989
36990impl<'life> Portal<'life> {
36991    /// Get the tag name of the element.
36992    /// This is the same as the name of the struct, in kebab-case.
36993    pub fn tag() -> &'static str {
36994        "portal"
36995    }
36996    /// Sets an attribute of the element.
36997    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
36998    /// If the `alloc` feature is disabled, this function will silently fail.
36999    ///
37000    /// # Note
37001    /// This only works when the attribute is lowercase.
37002    pub fn set_attr(
37003        &mut self,
37004        name: &'life str,
37005        value: impl core::convert::Into<AttributeValue<'life>>,
37006    ) {
37007        match name {
37008            "accesskey" => self.accesskey = Some(value.into()),
37009            "autocapitalize" => self.autocapitalize = Some(value.into()),
37010            "autofocus" => self.autofocus = Some(value.into()),
37011            "class" => self.class = Some(value.into()),
37012            "contenteditable" => self.contenteditable = Some(value.into()),
37013            "contextmenu" => self.contextmenu = Some(value.into()),
37014            "dir" => self.dir = Some(value.into()),
37015            "draggable" => self.draggable = Some(value.into()),
37016            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
37017            "exportparts" => self.exportparts = Some(value.into()),
37018            "hidden" => self.hidden = Some(value.into()),
37019            "id" => self.id = Some(value.into()),
37020            "inert" => self.inert = Some(value.into()),
37021            "inputmode" => self.inputmode = Some(value.into()),
37022            "is" => self.is = Some(value.into()),
37023            "itemid" => self.itemid = Some(value.into()),
37024            "itemprop" => self.itemprop = Some(value.into()),
37025            "itemref" => self.itemref = Some(value.into()),
37026            "itemscope" => self.itemscope = Some(value.into()),
37027            "itemtype" => self.itemtype = Some(value.into()),
37028            "lang" => self.lang = Some(value.into()),
37029            "nonce" => self.nonce = Some(value.into()),
37030            "part" => self.part = Some(value.into()),
37031            "popover" => self.popover = Some(value.into()),
37032            "referrerpolicy" => self.referrerpolicy = Some(value.into()),
37033            "role" => self.role = Some(value.into()),
37034            "slot" => self.slot = Some(value.into()),
37035            "spellcheck" => self.spellcheck = Some(value.into()),
37036            "src" => self.src = Some(value.into()),
37037            "style" => self.style = Some(value.into()),
37038            "tabindex" => self.tabindex = Some(value.into()),
37039            "title" => self.title = Some(value.into()),
37040            "translate" => self.translate = Some(value.into()),
37041            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
37042            #[cfg(feature = "alloc")]
37043            _ => {
37044                #[allow(clippy::useless_conversion)]
37045                self.extra.insert(name.into(), value.into());
37046            }
37047            #[cfg(not(feature = "alloc"))]
37048            _ => {}
37049        }
37050    }
37051}
37052/// The <strong><code>&lt;portal&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element enables the embedding of another HTML page into the current one for the purposes of allowing smoother navigation into new pages.
37053///
37054/// A <code>&lt;portal&gt;</code> is similar to an <code>&lt;iframe&gt;</code>. An <code>&lt;iframe&gt;</code> allows a separate <a href="/en-US/docs/Glossary/Browsing_context">browsing context</a> to be embedded. However, the embedded content of a <code>&lt;portal&gt;</code> is more limited than that of an <code>&lt;iframe&gt;</code>. It cannot be interacted with, and therefore is not suitable for embedding widgets into a document. Instead, the <code>&lt;portal&gt;</code> acts as a preview of the content of another page. It can be navigated into therefore allowing for seamless transition to the embedded content.
37055///
37056/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/portal>
37057
37058#[cfg(feature = "alloc")]
37059#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
37060pub struct PortalOwned {
37061    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
37062    ///   
37063    pub accesskey: core::option::Option<AttributeValueOwned>,
37064    ///
37065    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
37066    ///     <ul>
37067    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
37068    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
37069    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
37070    ///       <li><code>characters</code>, all letters should default to uppercase</li>
37071    ///     </ul>
37072    ///   
37073    pub autocapitalize: core::option::Option<AttributeValueOwned>,
37074    ///
37075    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
37076    ///   
37077    pub autofocus: core::option::Option<AttributeValueOwned>,
37078    ///
37079    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
37080    ///   
37081    pub class: core::option::Option<AttributeValueOwned>,
37082    ///
37083    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
37084    ///     <ul>
37085    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
37086    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
37087    ///     </ul>
37088    ///   
37089    pub contenteditable: core::option::Option<AttributeValueOwned>,
37090    ///
37091    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
37092    ///   
37093    pub contextmenu: core::option::Option<AttributeValueOwned>,
37094    ///
37095    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
37096    ///   
37097    #[cfg(feature = "alloc")]
37098    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
37099    ///
37100    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
37101    ///     <ul>
37102    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
37103    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
37104    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
37105    ///     </ul>
37106    ///   
37107    pub dir: core::option::Option<AttributeValueOwned>,
37108    ///
37109    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
37110    ///     <ul>
37111    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
37112    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
37113    ///     </ul>
37114    ///   
37115    pub draggable: core::option::Option<AttributeValueOwned>,
37116    ///
37117    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
37118    ///   
37119    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
37120    ///
37121    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
37122    ///   
37123    pub exportparts: core::option::Option<AttributeValueOwned>,
37124    /// /// Extra attributes of the element.
37125
37126    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
37127    #[cfg(feature = "alloc")]
37128    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
37129    ///
37130    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
37131    ///   
37132    pub hidden: core::option::Option<AttributeValueOwned>,
37133    ///
37134    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
37135    ///   
37136    pub id: core::option::Option<AttributeValueOwned>,
37137    ///
37138    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
37139    ///   
37140    pub inert: core::option::Option<AttributeValueOwned>,
37141    ///
37142    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
37143    ///   
37144    pub inputmode: core::option::Option<AttributeValueOwned>,
37145    ///
37146    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
37147    ///   
37148    pub is: core::option::Option<AttributeValueOwned>,
37149    ///
37150    ///     <p>The unique, global identifier of an item.</p>
37151    ///   
37152    pub itemid: core::option::Option<AttributeValueOwned>,
37153    ///
37154    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
37155    ///   
37156    pub itemprop: core::option::Option<AttributeValueOwned>,
37157    ///
37158    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
37159    ///   
37160    pub itemref: core::option::Option<AttributeValueOwned>,
37161    ///
37162    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
37163    ///   
37164    pub itemscope: core::option::Option<AttributeValueOwned>,
37165    ///
37166    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
37167    ///   
37168    pub itemtype: core::option::Option<AttributeValueOwned>,
37169    ///
37170    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
37171    ///   
37172    pub lang: core::option::Option<AttributeValueOwned>,
37173    ///
37174    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
37175    ///   
37176    pub nonce: core::option::Option<AttributeValueOwned>,
37177    ///
37178    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
37179    ///   
37180    pub part: core::option::Option<AttributeValueOwned>,
37181    ///
37182    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
37183    ///   
37184    pub popover: core::option::Option<AttributeValueOwned>,
37185    ///
37186    ///     <p>Sets the <a href="/en-US/docs/Web/HTTP/Headers/Referrer-Policy">referrer policy</a> to use when requesting the page at the URL given as the value of the <code>src</code> attribute.</p>
37187    ///   
37188    pub referrerpolicy: core::option::Option<AttributeValueOwned>,
37189    ///
37190    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
37191    ///   
37192    pub role: core::option::Option<AttributeValueOwned>,
37193    ///
37194    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
37195    ///   
37196    pub slot: core::option::Option<AttributeValueOwned>,
37197    ///
37198    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
37199    ///     <ul>
37200    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
37201    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
37202    ///     </ul>
37203    ///   
37204    pub spellcheck: core::option::Option<AttributeValueOwned>,
37205    ///
37206    ///     <p>The URL of the page to embed.</p>
37207    ///   
37208    pub src: core::option::Option<AttributeValueOwned>,
37209    ///
37210    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
37211    ///   
37212    pub style: core::option::Option<AttributeValueOwned>,
37213    ///
37214    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
37215    ///     <ul>
37216    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
37217    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
37218    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
37219    ///     </ul>
37220    ///   
37221    pub tabindex: core::option::Option<AttributeValueOwned>,
37222    ///
37223    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
37224    ///   
37225    pub title: core::option::Option<AttributeValueOwned>,
37226    ///
37227    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
37228    ///     <ul>
37229    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
37230    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
37231    ///     </ul>
37232    ///   
37233    pub translate: core::option::Option<AttributeValueOwned>,
37234    ///
37235    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
37236    ///     <ul>
37237    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
37238    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
37239    ///     </ul>
37240    ///   
37241    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
37242}
37243#[allow(deprecated)]
37244#[cfg(feature = "alloc")]
37245impl PortalOwned {
37246    /// Get the tag name of the element.
37247    /// This is the same as the name of the struct, in kebab-case.
37248    pub fn tag() -> &'static str {
37249        "portal"
37250    }
37251    /// Sets an attribute of the element.
37252    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
37253    /// If the `alloc` feature is disabled, this function will silently fail.
37254    ///
37255    /// # Note
37256    /// This only works when the attribute is lowercase.
37257    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
37258        match name {
37259            "accesskey" => self.accesskey = Some(value.into()),
37260            "autocapitalize" => self.autocapitalize = Some(value.into()),
37261            "autofocus" => self.autofocus = Some(value.into()),
37262            "class" => self.class = Some(value.into()),
37263            "contenteditable" => self.contenteditable = Some(value.into()),
37264            "contextmenu" => self.contextmenu = Some(value.into()),
37265            "dir" => self.dir = Some(value.into()),
37266            "draggable" => self.draggable = Some(value.into()),
37267            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
37268            "exportparts" => self.exportparts = Some(value.into()),
37269            "hidden" => self.hidden = Some(value.into()),
37270            "id" => self.id = Some(value.into()),
37271            "inert" => self.inert = Some(value.into()),
37272            "inputmode" => self.inputmode = Some(value.into()),
37273            "is" => self.is = Some(value.into()),
37274            "itemid" => self.itemid = Some(value.into()),
37275            "itemprop" => self.itemprop = Some(value.into()),
37276            "itemref" => self.itemref = Some(value.into()),
37277            "itemscope" => self.itemscope = Some(value.into()),
37278            "itemtype" => self.itemtype = Some(value.into()),
37279            "lang" => self.lang = Some(value.into()),
37280            "nonce" => self.nonce = Some(value.into()),
37281            "part" => self.part = Some(value.into()),
37282            "popover" => self.popover = Some(value.into()),
37283            "referrerpolicy" => self.referrerpolicy = Some(value.into()),
37284            "role" => self.role = Some(value.into()),
37285            "slot" => self.slot = Some(value.into()),
37286            "spellcheck" => self.spellcheck = Some(value.into()),
37287            "src" => self.src = Some(value.into()),
37288            "style" => self.style = Some(value.into()),
37289            "tabindex" => self.tabindex = Some(value.into()),
37290            "title" => self.title = Some(value.into()),
37291            "translate" => self.translate = Some(value.into()),
37292            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
37293            #[cfg(feature = "alloc")]
37294            _ => {
37295                #[allow(clippy::useless_conversion)]
37296                self.extra.insert(name.into(), value.into());
37297            }
37298            #[cfg(not(feature = "alloc"))]
37299            _ => {}
37300        }
37301    }
37302}
37303/// The <strong><code>&lt;source&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element specifies multiple media resources for the <a href="/en-US/docs/Web/HTML/Element/picture"><code>&lt;picture&gt;</code></a>, the <a href="/en-US/docs/Web/HTML/Element/audio"><code>&lt;audio&gt;</code></a> element, or the <a href="/en-US/docs/Web/HTML/Element/video"><code>&lt;video&gt;</code></a> element. It is a <a href="/en-US/docs/Glossary/Void_element">void element</a>, meaning that it has no content and does not have a closing tag. It is commonly used to offer the same media content in multiple file formats in order to provide compatibility with a broad range of browsers given their differing support for <a href="/en-US/docs/Web/Media/Formats/Image_types">image file formats</a> and <a href="/en-US/docs/Web/Media/Formats">media file formats</a>.
37304///
37305/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/source>
37306
37307#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
37308pub struct Source<'life> {
37309    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
37310    ///   
37311    pub accesskey: core::option::Option<AttributeValue<'life>>,
37312    ///
37313    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
37314    ///     <ul>
37315    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
37316    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
37317    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
37318    ///       <li><code>characters</code>, all letters should default to uppercase</li>
37319    ///     </ul>
37320    ///   
37321    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
37322    ///
37323    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
37324    ///   
37325    pub autofocus: core::option::Option<AttributeValue<'life>>,
37326    ///
37327    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
37328    ///   
37329    pub class: core::option::Option<AttributeValue<'life>>,
37330    ///
37331    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
37332    ///     <ul>
37333    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
37334    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
37335    ///     </ul>
37336    ///   
37337    pub contenteditable: core::option::Option<AttributeValue<'life>>,
37338    ///
37339    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
37340    ///   
37341    pub contextmenu: core::option::Option<AttributeValue<'life>>,
37342    ///
37343    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
37344    ///   
37345    #[cfg(feature = "alloc")]
37346    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
37347    ///
37348    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
37349    ///     <ul>
37350    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
37351    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
37352    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
37353    ///     </ul>
37354    ///   
37355    pub dir: core::option::Option<AttributeValue<'life>>,
37356    ///
37357    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
37358    ///     <ul>
37359    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
37360    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
37361    ///     </ul>
37362    ///   
37363    pub draggable: core::option::Option<AttributeValue<'life>>,
37364    ///
37365    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
37366    ///   
37367    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
37368    ///
37369    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
37370    ///   
37371    pub exportparts: core::option::Option<AttributeValue<'life>>,
37372    /// /// Extra attributes of the element.
37373
37374    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
37375    #[cfg(feature = "alloc")]
37376    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
37377    ///
37378    ///     <p>Allowed if the <code>source</code> element's parent is a <a href="/en-US/docs/Web/HTML/Element/picture"><code>&lt;picture&gt;</code></a> element, but not allowed if the <code>source</code> element's parent is an <a href="/en-US/docs/Web/HTML/Element/audio"><code>&lt;audio&gt;</code></a> or <a href="/en-US/docs/Web/HTML/Element/video"><code>&lt;video&gt;</code></a> element.</p>
37379    ///     <p>The intrinsic height of the image, in pixels. Must be an integer without a unit.</p>
37380    ///   
37381    pub height: core::option::Option<AttributeValue<'life>>,
37382    ///
37383    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
37384    ///   
37385    pub hidden: core::option::Option<AttributeValue<'life>>,
37386    ///
37387    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
37388    ///   
37389    pub id: core::option::Option<AttributeValue<'life>>,
37390    ///
37391    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
37392    ///   
37393    pub inert: core::option::Option<AttributeValue<'life>>,
37394    ///
37395    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
37396    ///   
37397    pub inputmode: core::option::Option<AttributeValue<'life>>,
37398    ///
37399    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
37400    ///   
37401    pub is: core::option::Option<AttributeValue<'life>>,
37402    ///
37403    ///     <p>The unique, global identifier of an item.</p>
37404    ///   
37405    pub itemid: core::option::Option<AttributeValue<'life>>,
37406    ///
37407    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
37408    ///   
37409    pub itemprop: core::option::Option<AttributeValue<'life>>,
37410    ///
37411    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
37412    ///   
37413    pub itemref: core::option::Option<AttributeValue<'life>>,
37414    ///
37415    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
37416    ///   
37417    pub itemscope: core::option::Option<AttributeValue<'life>>,
37418    ///
37419    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
37420    ///   
37421    pub itemtype: core::option::Option<AttributeValue<'life>>,
37422    ///
37423    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
37424    ///   
37425    pub lang: core::option::Option<AttributeValue<'life>>,
37426    ///
37427    ///     <p>Allowed if the <code>source</code> element's parent is a <a href="/en-US/docs/Web/HTML/Element/picture"><code>&lt;picture&gt;</code></a> element, but not allowed if the <code>source</code> element's parent is an <a href="/en-US/docs/Web/HTML/Element/audio"><code>&lt;audio&gt;</code></a> or <a href="/en-US/docs/Web/HTML/Element/video"><code>&lt;video&gt;</code></a> element.</p>
37428    ///     <p><a href="/en-US/docs/Web/CSS/Media_Queries">Media query</a> of the resource's intended media.</p>
37429    ///   
37430    pub media: core::option::Option<AttributeValue<'life>>,
37431    ///
37432    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
37433    ///   
37434    pub nonce: core::option::Option<AttributeValue<'life>>,
37435    ///
37436    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
37437    ///   
37438    pub part: core::option::Option<AttributeValue<'life>>,
37439    ///
37440    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
37441    ///   
37442    pub popover: core::option::Option<AttributeValue<'life>>,
37443    ///
37444    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
37445    ///   
37446    pub role: core::option::Option<AttributeValue<'life>>,
37447    ///
37448    ///     <p>Allowed if the <code>source</code> element's parent is a <a href="/en-US/docs/Web/HTML/Element/picture"><code>&lt;picture&gt;</code></a> element, but not allowed if the <code>source</code> element's parent is an <a href="/en-US/docs/Web/HTML/Element/audio"><code>&lt;audio&gt;</code></a> or <a href="/en-US/docs/Web/HTML/Element/video"><code>&lt;video&gt;</code></a> element.</p>
37449    ///     <p>A list of source sizes that describes the final rendered width of the image represented by the source. Each source size consists of a comma-separated list of media condition-length pairs. Before laying the page out, the browser uses this information to determine which image is defined in <a href="#srcset"><code>srcset</code></a> to use. Please note that <code>sizes</code> will have its effect only if width dimension descriptors are provided with <code>srcset</code> instead of pixel ratio values (200w instead of 2x for example).</p>
37450    ///   
37451    pub sizes: core::option::Option<AttributeValue<'life>>,
37452    ///
37453    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
37454    ///   
37455    pub slot: core::option::Option<AttributeValue<'life>>,
37456    ///
37457    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
37458    ///     <ul>
37459    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
37460    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
37461    ///     </ul>
37462    ///   
37463    pub spellcheck: core::option::Option<AttributeValue<'life>>,
37464    ///
37465    ///     <p>Required if the <code>source</code> element's parent is an <a href="/en-US/docs/Web/HTML/Element/audio"><code>&lt;audio&gt;</code></a> and <a href="/en-US/docs/Web/HTML/Element/video"><code>&lt;video&gt;</code></a> element, but not allowed if the <code>source</code> element's parent is a <a href="/en-US/docs/Web/HTML/Element/picture"><code>&lt;picture&gt;</code></a> element.</p>
37466    ///     <p>Address of the media resource.</p>
37467    ///   
37468    pub src: core::option::Option<AttributeValue<'life>>,
37469    ///
37470    ///     <p>Required if the <code>source</code> element's parent is a <a href="/en-US/docs/Web/HTML/Element/picture"><code>&lt;picture&gt;</code></a> element, but not allowed if the <code>source</code> element's parent is an <a href="/en-US/docs/Web/HTML/Element/audio"><code>&lt;audio&gt;</code></a> or <a href="/en-US/docs/Web/HTML/Element/video"><code>&lt;video&gt;</code></a> element.</p>
37471    ///     <p>A list of one or more strings, separated by commas, indicating a set of possible images represented by the source for the browser to use. Each string is composed of:</p>
37472    ///     <ol>
37473    ///       <li>One URL specifying an image.</li>
37474    ///       <li>A width descriptor, which consists of a string containing a positive integer directly followed by <code>"w"</code>, such as <code>300w</code>. The default value, if missing, is the infinity.</li>
37475    ///       <li>A pixel density descriptor, that is a positive floating number directly followed by <code>"x"</code>. The default value, if missing, is <code>1x</code>.</li>
37476    ///     </ol>
37477    ///     <p>Each string in the list must have at least a width descriptor or a pixel density descriptor to be valid. The two types of descriptors should not be mixed together and only one should be used consistently throughout the list. Among the list, the value of each descriptor must be unique. The browser chooses the most adequate image to display at a given point of time. If the <code>sizes</code> attribute is present, then a width descriptor must be specified for each string. If the browser does not support <code>srcset</code>, then <code>src</code> will be used for the default source.</p>
37478    ///   
37479    pub srcset: core::option::Option<AttributeValue<'life>>,
37480    ///
37481    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
37482    ///   
37483    pub style: core::option::Option<AttributeValue<'life>>,
37484    ///
37485    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
37486    ///     <ul>
37487    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
37488    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
37489    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
37490    ///     </ul>
37491    ///   
37492    pub tabindex: core::option::Option<AttributeValue<'life>>,
37493    ///
37494    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
37495    ///   
37496    pub title: core::option::Option<AttributeValue<'life>>,
37497    ///
37498    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
37499    ///     <ul>
37500    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
37501    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
37502    ///     </ul>
37503    ///   
37504    pub translate: core::option::Option<AttributeValue<'life>>,
37505    ///
37506    ///     <p>The <a href="/en-US/docs/Web/Media/Formats/Image_types">MIME media type of the image</a> or <a href="/en-US/docs/Web/Media/Formats/Containers">other media type</a>, optionally with a <a href="/en-US/docs/Web/Media/Formats/codecs_parameter"><code>codecs</code> parameter</a>.</p>
37507    ///   
37508    pub type_: core::option::Option<AttributeValue<'life>>,
37509    ///
37510    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
37511    ///     <ul>
37512    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
37513    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
37514    ///     </ul>
37515    ///   
37516    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
37517    ///
37518    ///     <p>Allowed if the <code>source</code> element's parent is a <a href="/en-US/docs/Web/HTML/Element/picture"><code>&lt;picture&gt;</code></a> element, but not allowed if the <code>source</code> element's parent is an <a href="/en-US/docs/Web/HTML/Element/audio"><code>&lt;audio&gt;</code></a> or <a href="/en-US/docs/Web/HTML/Element/video"><code>&lt;video&gt;</code></a> element.</p>
37519    ///     <p>The intrinsic width of the image in pixels. Must be an integer without a unit.</p>
37520    ///   
37521    pub width: core::option::Option<AttributeValue<'life>>,
37522}
37523#[allow(deprecated)]
37524
37525impl<'life> Source<'life> {
37526    /// Get the tag name of the element.
37527    /// This is the same as the name of the struct, in kebab-case.
37528    pub fn tag() -> &'static str {
37529        "source"
37530    }
37531    /// Sets an attribute of the element.
37532    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
37533    /// If the `alloc` feature is disabled, this function will silently fail.
37534    ///
37535    /// # Note
37536    /// This only works when the attribute is lowercase.
37537    pub fn set_attr(
37538        &mut self,
37539        name: &'life str,
37540        value: impl core::convert::Into<AttributeValue<'life>>,
37541    ) {
37542        match name {
37543            "accesskey" => self.accesskey = Some(value.into()),
37544            "autocapitalize" => self.autocapitalize = Some(value.into()),
37545            "autofocus" => self.autofocus = Some(value.into()),
37546            "class" => self.class = Some(value.into()),
37547            "contenteditable" => self.contenteditable = Some(value.into()),
37548            "contextmenu" => self.contextmenu = Some(value.into()),
37549            "dir" => self.dir = Some(value.into()),
37550            "draggable" => self.draggable = Some(value.into()),
37551            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
37552            "exportparts" => self.exportparts = Some(value.into()),
37553            "height" => self.height = Some(value.into()),
37554            "hidden" => self.hidden = Some(value.into()),
37555            "id" => self.id = Some(value.into()),
37556            "inert" => self.inert = Some(value.into()),
37557            "inputmode" => self.inputmode = Some(value.into()),
37558            "is" => self.is = Some(value.into()),
37559            "itemid" => self.itemid = Some(value.into()),
37560            "itemprop" => self.itemprop = Some(value.into()),
37561            "itemref" => self.itemref = Some(value.into()),
37562            "itemscope" => self.itemscope = Some(value.into()),
37563            "itemtype" => self.itemtype = Some(value.into()),
37564            "lang" => self.lang = Some(value.into()),
37565            "media" => self.media = Some(value.into()),
37566            "nonce" => self.nonce = Some(value.into()),
37567            "part" => self.part = Some(value.into()),
37568            "popover" => self.popover = Some(value.into()),
37569            "role" => self.role = Some(value.into()),
37570            "sizes" => self.sizes = Some(value.into()),
37571            "slot" => self.slot = Some(value.into()),
37572            "spellcheck" => self.spellcheck = Some(value.into()),
37573            "src" => self.src = Some(value.into()),
37574            "srcset" => self.srcset = Some(value.into()),
37575            "style" => self.style = Some(value.into()),
37576            "tabindex" => self.tabindex = Some(value.into()),
37577            "title" => self.title = Some(value.into()),
37578            "translate" => self.translate = Some(value.into()),
37579            "type_" => self.type_ = Some(value.into()),
37580            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
37581            "width" => self.width = Some(value.into()),
37582            #[cfg(feature = "alloc")]
37583            _ => {
37584                #[allow(clippy::useless_conversion)]
37585                self.extra.insert(name.into(), value.into());
37586            }
37587            #[cfg(not(feature = "alloc"))]
37588            _ => {}
37589        }
37590    }
37591}
37592/// The <strong><code>&lt;source&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element specifies multiple media resources for the <a href="/en-US/docs/Web/HTML/Element/picture"><code>&lt;picture&gt;</code></a>, the <a href="/en-US/docs/Web/HTML/Element/audio"><code>&lt;audio&gt;</code></a> element, or the <a href="/en-US/docs/Web/HTML/Element/video"><code>&lt;video&gt;</code></a> element. It is a <a href="/en-US/docs/Glossary/Void_element">void element</a>, meaning that it has no content and does not have a closing tag. It is commonly used to offer the same media content in multiple file formats in order to provide compatibility with a broad range of browsers given their differing support for <a href="/en-US/docs/Web/Media/Formats/Image_types">image file formats</a> and <a href="/en-US/docs/Web/Media/Formats">media file formats</a>.
37593///
37594/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/source>
37595
37596#[cfg(feature = "alloc")]
37597#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
37598pub struct SourceOwned {
37599    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
37600    ///   
37601    pub accesskey: core::option::Option<AttributeValueOwned>,
37602    ///
37603    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
37604    ///     <ul>
37605    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
37606    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
37607    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
37608    ///       <li><code>characters</code>, all letters should default to uppercase</li>
37609    ///     </ul>
37610    ///   
37611    pub autocapitalize: core::option::Option<AttributeValueOwned>,
37612    ///
37613    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
37614    ///   
37615    pub autofocus: core::option::Option<AttributeValueOwned>,
37616    ///
37617    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
37618    ///   
37619    pub class: core::option::Option<AttributeValueOwned>,
37620    ///
37621    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
37622    ///     <ul>
37623    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
37624    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
37625    ///     </ul>
37626    ///   
37627    pub contenteditable: core::option::Option<AttributeValueOwned>,
37628    ///
37629    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
37630    ///   
37631    pub contextmenu: core::option::Option<AttributeValueOwned>,
37632    ///
37633    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
37634    ///   
37635    #[cfg(feature = "alloc")]
37636    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
37637    ///
37638    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
37639    ///     <ul>
37640    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
37641    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
37642    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
37643    ///     </ul>
37644    ///   
37645    pub dir: core::option::Option<AttributeValueOwned>,
37646    ///
37647    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
37648    ///     <ul>
37649    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
37650    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
37651    ///     </ul>
37652    ///   
37653    pub draggable: core::option::Option<AttributeValueOwned>,
37654    ///
37655    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
37656    ///   
37657    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
37658    ///
37659    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
37660    ///   
37661    pub exportparts: core::option::Option<AttributeValueOwned>,
37662    /// /// Extra attributes of the element.
37663
37664    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
37665    #[cfg(feature = "alloc")]
37666    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
37667    ///
37668    ///     <p>Allowed if the <code>source</code> element's parent is a <a href="/en-US/docs/Web/HTML/Element/picture"><code>&lt;picture&gt;</code></a> element, but not allowed if the <code>source</code> element's parent is an <a href="/en-US/docs/Web/HTML/Element/audio"><code>&lt;audio&gt;</code></a> or <a href="/en-US/docs/Web/HTML/Element/video"><code>&lt;video&gt;</code></a> element.</p>
37669    ///     <p>The intrinsic height of the image, in pixels. Must be an integer without a unit.</p>
37670    ///   
37671    pub height: core::option::Option<AttributeValueOwned>,
37672    ///
37673    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
37674    ///   
37675    pub hidden: core::option::Option<AttributeValueOwned>,
37676    ///
37677    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
37678    ///   
37679    pub id: core::option::Option<AttributeValueOwned>,
37680    ///
37681    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
37682    ///   
37683    pub inert: core::option::Option<AttributeValueOwned>,
37684    ///
37685    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
37686    ///   
37687    pub inputmode: core::option::Option<AttributeValueOwned>,
37688    ///
37689    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
37690    ///   
37691    pub is: core::option::Option<AttributeValueOwned>,
37692    ///
37693    ///     <p>The unique, global identifier of an item.</p>
37694    ///   
37695    pub itemid: core::option::Option<AttributeValueOwned>,
37696    ///
37697    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
37698    ///   
37699    pub itemprop: core::option::Option<AttributeValueOwned>,
37700    ///
37701    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
37702    ///   
37703    pub itemref: core::option::Option<AttributeValueOwned>,
37704    ///
37705    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
37706    ///   
37707    pub itemscope: core::option::Option<AttributeValueOwned>,
37708    ///
37709    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
37710    ///   
37711    pub itemtype: core::option::Option<AttributeValueOwned>,
37712    ///
37713    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
37714    ///   
37715    pub lang: core::option::Option<AttributeValueOwned>,
37716    ///
37717    ///     <p>Allowed if the <code>source</code> element's parent is a <a href="/en-US/docs/Web/HTML/Element/picture"><code>&lt;picture&gt;</code></a> element, but not allowed if the <code>source</code> element's parent is an <a href="/en-US/docs/Web/HTML/Element/audio"><code>&lt;audio&gt;</code></a> or <a href="/en-US/docs/Web/HTML/Element/video"><code>&lt;video&gt;</code></a> element.</p>
37718    ///     <p><a href="/en-US/docs/Web/CSS/Media_Queries">Media query</a> of the resource's intended media.</p>
37719    ///   
37720    pub media: core::option::Option<AttributeValueOwned>,
37721    ///
37722    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
37723    ///   
37724    pub nonce: core::option::Option<AttributeValueOwned>,
37725    ///
37726    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
37727    ///   
37728    pub part: core::option::Option<AttributeValueOwned>,
37729    ///
37730    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
37731    ///   
37732    pub popover: core::option::Option<AttributeValueOwned>,
37733    ///
37734    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
37735    ///   
37736    pub role: core::option::Option<AttributeValueOwned>,
37737    ///
37738    ///     <p>Allowed if the <code>source</code> element's parent is a <a href="/en-US/docs/Web/HTML/Element/picture"><code>&lt;picture&gt;</code></a> element, but not allowed if the <code>source</code> element's parent is an <a href="/en-US/docs/Web/HTML/Element/audio"><code>&lt;audio&gt;</code></a> or <a href="/en-US/docs/Web/HTML/Element/video"><code>&lt;video&gt;</code></a> element.</p>
37739    ///     <p>A list of source sizes that describes the final rendered width of the image represented by the source. Each source size consists of a comma-separated list of media condition-length pairs. Before laying the page out, the browser uses this information to determine which image is defined in <a href="#srcset"><code>srcset</code></a> to use. Please note that <code>sizes</code> will have its effect only if width dimension descriptors are provided with <code>srcset</code> instead of pixel ratio values (200w instead of 2x for example).</p>
37740    ///   
37741    pub sizes: core::option::Option<AttributeValueOwned>,
37742    ///
37743    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
37744    ///   
37745    pub slot: core::option::Option<AttributeValueOwned>,
37746    ///
37747    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
37748    ///     <ul>
37749    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
37750    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
37751    ///     </ul>
37752    ///   
37753    pub spellcheck: core::option::Option<AttributeValueOwned>,
37754    ///
37755    ///     <p>Required if the <code>source</code> element's parent is an <a href="/en-US/docs/Web/HTML/Element/audio"><code>&lt;audio&gt;</code></a> and <a href="/en-US/docs/Web/HTML/Element/video"><code>&lt;video&gt;</code></a> element, but not allowed if the <code>source</code> element's parent is a <a href="/en-US/docs/Web/HTML/Element/picture"><code>&lt;picture&gt;</code></a> element.</p>
37756    ///     <p>Address of the media resource.</p>
37757    ///   
37758    pub src: core::option::Option<AttributeValueOwned>,
37759    ///
37760    ///     <p>Required if the <code>source</code> element's parent is a <a href="/en-US/docs/Web/HTML/Element/picture"><code>&lt;picture&gt;</code></a> element, but not allowed if the <code>source</code> element's parent is an <a href="/en-US/docs/Web/HTML/Element/audio"><code>&lt;audio&gt;</code></a> or <a href="/en-US/docs/Web/HTML/Element/video"><code>&lt;video&gt;</code></a> element.</p>
37761    ///     <p>A list of one or more strings, separated by commas, indicating a set of possible images represented by the source for the browser to use. Each string is composed of:</p>
37762    ///     <ol>
37763    ///       <li>One URL specifying an image.</li>
37764    ///       <li>A width descriptor, which consists of a string containing a positive integer directly followed by <code>"w"</code>, such as <code>300w</code>. The default value, if missing, is the infinity.</li>
37765    ///       <li>A pixel density descriptor, that is a positive floating number directly followed by <code>"x"</code>. The default value, if missing, is <code>1x</code>.</li>
37766    ///     </ol>
37767    ///     <p>Each string in the list must have at least a width descriptor or a pixel density descriptor to be valid. The two types of descriptors should not be mixed together and only one should be used consistently throughout the list. Among the list, the value of each descriptor must be unique. The browser chooses the most adequate image to display at a given point of time. If the <code>sizes</code> attribute is present, then a width descriptor must be specified for each string. If the browser does not support <code>srcset</code>, then <code>src</code> will be used for the default source.</p>
37768    ///   
37769    pub srcset: core::option::Option<AttributeValueOwned>,
37770    ///
37771    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
37772    ///   
37773    pub style: core::option::Option<AttributeValueOwned>,
37774    ///
37775    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
37776    ///     <ul>
37777    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
37778    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
37779    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
37780    ///     </ul>
37781    ///   
37782    pub tabindex: core::option::Option<AttributeValueOwned>,
37783    ///
37784    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
37785    ///   
37786    pub title: core::option::Option<AttributeValueOwned>,
37787    ///
37788    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
37789    ///     <ul>
37790    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
37791    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
37792    ///     </ul>
37793    ///   
37794    pub translate: core::option::Option<AttributeValueOwned>,
37795    ///
37796    ///     <p>The <a href="/en-US/docs/Web/Media/Formats/Image_types">MIME media type of the image</a> or <a href="/en-US/docs/Web/Media/Formats/Containers">other media type</a>, optionally with a <a href="/en-US/docs/Web/Media/Formats/codecs_parameter"><code>codecs</code> parameter</a>.</p>
37797    ///   
37798    pub type_: core::option::Option<AttributeValueOwned>,
37799    ///
37800    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
37801    ///     <ul>
37802    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
37803    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
37804    ///     </ul>
37805    ///   
37806    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
37807    ///
37808    ///     <p>Allowed if the <code>source</code> element's parent is a <a href="/en-US/docs/Web/HTML/Element/picture"><code>&lt;picture&gt;</code></a> element, but not allowed if the <code>source</code> element's parent is an <a href="/en-US/docs/Web/HTML/Element/audio"><code>&lt;audio&gt;</code></a> or <a href="/en-US/docs/Web/HTML/Element/video"><code>&lt;video&gt;</code></a> element.</p>
37809    ///     <p>The intrinsic width of the image in pixels. Must be an integer without a unit.</p>
37810    ///   
37811    pub width: core::option::Option<AttributeValueOwned>,
37812}
37813#[allow(deprecated)]
37814#[cfg(feature = "alloc")]
37815impl SourceOwned {
37816    /// Get the tag name of the element.
37817    /// This is the same as the name of the struct, in kebab-case.
37818    pub fn tag() -> &'static str {
37819        "source"
37820    }
37821    /// Sets an attribute of the element.
37822    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
37823    /// If the `alloc` feature is disabled, this function will silently fail.
37824    ///
37825    /// # Note
37826    /// This only works when the attribute is lowercase.
37827    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
37828        match name {
37829            "accesskey" => self.accesskey = Some(value.into()),
37830            "autocapitalize" => self.autocapitalize = Some(value.into()),
37831            "autofocus" => self.autofocus = Some(value.into()),
37832            "class" => self.class = Some(value.into()),
37833            "contenteditable" => self.contenteditable = Some(value.into()),
37834            "contextmenu" => self.contextmenu = Some(value.into()),
37835            "dir" => self.dir = Some(value.into()),
37836            "draggable" => self.draggable = Some(value.into()),
37837            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
37838            "exportparts" => self.exportparts = Some(value.into()),
37839            "height" => self.height = Some(value.into()),
37840            "hidden" => self.hidden = Some(value.into()),
37841            "id" => self.id = Some(value.into()),
37842            "inert" => self.inert = Some(value.into()),
37843            "inputmode" => self.inputmode = Some(value.into()),
37844            "is" => self.is = Some(value.into()),
37845            "itemid" => self.itemid = Some(value.into()),
37846            "itemprop" => self.itemprop = Some(value.into()),
37847            "itemref" => self.itemref = Some(value.into()),
37848            "itemscope" => self.itemscope = Some(value.into()),
37849            "itemtype" => self.itemtype = Some(value.into()),
37850            "lang" => self.lang = Some(value.into()),
37851            "media" => self.media = Some(value.into()),
37852            "nonce" => self.nonce = Some(value.into()),
37853            "part" => self.part = Some(value.into()),
37854            "popover" => self.popover = Some(value.into()),
37855            "role" => self.role = Some(value.into()),
37856            "sizes" => self.sizes = Some(value.into()),
37857            "slot" => self.slot = Some(value.into()),
37858            "spellcheck" => self.spellcheck = Some(value.into()),
37859            "src" => self.src = Some(value.into()),
37860            "srcset" => self.srcset = Some(value.into()),
37861            "style" => self.style = Some(value.into()),
37862            "tabindex" => self.tabindex = Some(value.into()),
37863            "title" => self.title = Some(value.into()),
37864            "translate" => self.translate = Some(value.into()),
37865            "type_" => self.type_ = Some(value.into()),
37866            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
37867            "width" => self.width = Some(value.into()),
37868            #[cfg(feature = "alloc")]
37869            _ => {
37870                #[allow(clippy::useless_conversion)]
37871                self.extra.insert(name.into(), value.into());
37872            }
37873            #[cfg(not(feature = "alloc"))]
37874            _ => {}
37875        }
37876    }
37877}
37878/// Use the <strong>HTML <code>&lt;canvas&gt;</code> element</strong> with either the <a href="/en-US/docs/Web/API/Canvas_API">canvas scripting API</a> or the <a href="/en-US/docs/Web/API/WebGL_API">WebGL API</a> to draw graphics and animations.
37879///
37880/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas>
37881
37882#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
37883pub struct Canvas<'life> {
37884    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
37885    ///   
37886    pub accesskey: core::option::Option<AttributeValue<'life>>,
37887    ///
37888    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
37889    ///     <ul>
37890    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
37891    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
37892    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
37893    ///       <li><code>characters</code>, all letters should default to uppercase</li>
37894    ///     </ul>
37895    ///   
37896    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
37897    ///
37898    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
37899    ///   
37900    pub autofocus: core::option::Option<AttributeValue<'life>>,
37901    ///
37902    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
37903    ///   
37904    pub class: core::option::Option<AttributeValue<'life>>,
37905    ///
37906    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
37907    ///     <ul>
37908    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
37909    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
37910    ///     </ul>
37911    ///   
37912    pub contenteditable: core::option::Option<AttributeValue<'life>>,
37913    ///
37914    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
37915    ///   
37916    pub contextmenu: core::option::Option<AttributeValue<'life>>,
37917    ///
37918    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
37919    ///   
37920    #[cfg(feature = "alloc")]
37921    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
37922    ///
37923    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
37924    ///     <ul>
37925    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
37926    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
37927    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
37928    ///     </ul>
37929    ///   
37930    pub dir: core::option::Option<AttributeValue<'life>>,
37931    ///
37932    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
37933    ///     <ul>
37934    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
37935    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
37936    ///     </ul>
37937    ///   
37938    pub draggable: core::option::Option<AttributeValue<'life>>,
37939    ///
37940    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
37941    ///   
37942    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
37943    ///
37944    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
37945    ///   
37946    pub exportparts: core::option::Option<AttributeValue<'life>>,
37947    /// /// Extra attributes of the element.
37948
37949    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
37950    #[cfg(feature = "alloc")]
37951    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
37952    ///
37953    ///     <p>The height of the coordinate space in CSS pixels. Defaults to 150.</p>
37954    ///   
37955    pub height: core::option::Option<AttributeValue<'life>>,
37956    ///
37957    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
37958    ///   
37959    pub hidden: core::option::Option<AttributeValue<'life>>,
37960    ///
37961    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
37962    ///   
37963    pub id: core::option::Option<AttributeValue<'life>>,
37964    ///
37965    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
37966    ///   
37967    pub inert: core::option::Option<AttributeValue<'life>>,
37968    ///
37969    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
37970    ///   
37971    pub inputmode: core::option::Option<AttributeValue<'life>>,
37972    ///
37973    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
37974    ///   
37975    pub is: core::option::Option<AttributeValue<'life>>,
37976    ///
37977    ///     <p>The unique, global identifier of an item.</p>
37978    ///   
37979    pub itemid: core::option::Option<AttributeValue<'life>>,
37980    ///
37981    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
37982    ///   
37983    pub itemprop: core::option::Option<AttributeValue<'life>>,
37984    ///
37985    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
37986    ///   
37987    pub itemref: core::option::Option<AttributeValue<'life>>,
37988    ///
37989    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
37990    ///   
37991    pub itemscope: core::option::Option<AttributeValue<'life>>,
37992    ///
37993    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
37994    ///   
37995    pub itemtype: core::option::Option<AttributeValue<'life>>,
37996    ///
37997    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
37998    ///   
37999    pub lang: core::option::Option<AttributeValue<'life>>,
38000    ///
38001    ///     <p>Lets the canvas know whether translucency will be a factor. If the canvas knows there's no translucency, painting performance can be optimized. This is only supported by Mozilla-based browsers; use the standardized <a title="canvas.getContext('2d', { alpha: false })" href="/en-US/docs/Web/API/HTMLCanvasElement/getContext"><code>canvas.getContext('2d', { alpha: false })</code></a> instead.</p>
38002    ///   
38003    pub moz_opaque: core::option::Option<AttributeValue<'life>>,
38004    ///
38005    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
38006    ///   
38007    pub nonce: core::option::Option<AttributeValue<'life>>,
38008    ///
38009    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
38010    ///   
38011    pub part: core::option::Option<AttributeValue<'life>>,
38012    ///
38013    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
38014    ///   
38015    pub popover: core::option::Option<AttributeValue<'life>>,
38016    ///
38017    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
38018    ///   
38019    pub role: core::option::Option<AttributeValue<'life>>,
38020    ///
38021    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
38022    ///   
38023    pub slot: core::option::Option<AttributeValue<'life>>,
38024    ///
38025    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
38026    ///     <ul>
38027    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
38028    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
38029    ///     </ul>
38030    ///   
38031    pub spellcheck: core::option::Option<AttributeValue<'life>>,
38032    ///
38033    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
38034    ///   
38035    pub style: core::option::Option<AttributeValue<'life>>,
38036    ///
38037    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
38038    ///     <ul>
38039    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
38040    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
38041    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
38042    ///     </ul>
38043    ///   
38044    pub tabindex: core::option::Option<AttributeValue<'life>>,
38045    ///
38046    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
38047    ///   
38048    pub title: core::option::Option<AttributeValue<'life>>,
38049    ///
38050    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
38051    ///     <ul>
38052    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
38053    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
38054    ///     </ul>
38055    ///   
38056    pub translate: core::option::Option<AttributeValue<'life>>,
38057    ///
38058    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
38059    ///     <ul>
38060    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
38061    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
38062    ///     </ul>
38063    ///   
38064    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
38065    ///
38066    ///     <p>The width of the coordinate space in CSS pixels. Defaults to 300.</p>
38067    ///   
38068    pub width: core::option::Option<AttributeValue<'life>>,
38069}
38070#[allow(deprecated)]
38071
38072impl<'life> Canvas<'life> {
38073    /// Get the tag name of the element.
38074    /// This is the same as the name of the struct, in kebab-case.
38075    pub fn tag() -> &'static str {
38076        "canvas"
38077    }
38078    /// Sets an attribute of the element.
38079    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
38080    /// If the `alloc` feature is disabled, this function will silently fail.
38081    ///
38082    /// # Note
38083    /// This only works when the attribute is lowercase.
38084    pub fn set_attr(
38085        &mut self,
38086        name: &'life str,
38087        value: impl core::convert::Into<AttributeValue<'life>>,
38088    ) {
38089        match name {
38090            "accesskey" => self.accesskey = Some(value.into()),
38091            "autocapitalize" => self.autocapitalize = Some(value.into()),
38092            "autofocus" => self.autofocus = Some(value.into()),
38093            "class" => self.class = Some(value.into()),
38094            "contenteditable" => self.contenteditable = Some(value.into()),
38095            "contextmenu" => self.contextmenu = Some(value.into()),
38096            "dir" => self.dir = Some(value.into()),
38097            "draggable" => self.draggable = Some(value.into()),
38098            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
38099            "exportparts" => self.exportparts = Some(value.into()),
38100            "height" => self.height = Some(value.into()),
38101            "hidden" => self.hidden = Some(value.into()),
38102            "id" => self.id = Some(value.into()),
38103            "inert" => self.inert = Some(value.into()),
38104            "inputmode" => self.inputmode = Some(value.into()),
38105            "is" => self.is = Some(value.into()),
38106            "itemid" => self.itemid = Some(value.into()),
38107            "itemprop" => self.itemprop = Some(value.into()),
38108            "itemref" => self.itemref = Some(value.into()),
38109            "itemscope" => self.itemscope = Some(value.into()),
38110            "itemtype" => self.itemtype = Some(value.into()),
38111            "lang" => self.lang = Some(value.into()),
38112            "moz_opaque" => self.moz_opaque = Some(value.into()),
38113            "nonce" => self.nonce = Some(value.into()),
38114            "part" => self.part = Some(value.into()),
38115            "popover" => self.popover = Some(value.into()),
38116            "role" => self.role = Some(value.into()),
38117            "slot" => self.slot = Some(value.into()),
38118            "spellcheck" => self.spellcheck = Some(value.into()),
38119            "style" => self.style = Some(value.into()),
38120            "tabindex" => self.tabindex = Some(value.into()),
38121            "title" => self.title = Some(value.into()),
38122            "translate" => self.translate = Some(value.into()),
38123            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
38124            "width" => self.width = Some(value.into()),
38125            #[cfg(feature = "alloc")]
38126            _ => {
38127                #[allow(clippy::useless_conversion)]
38128                self.extra.insert(name.into(), value.into());
38129            }
38130            #[cfg(not(feature = "alloc"))]
38131            _ => {}
38132        }
38133    }
38134}
38135/// Use the <strong>HTML <code>&lt;canvas&gt;</code> element</strong> with either the <a href="/en-US/docs/Web/API/Canvas_API">canvas scripting API</a> or the <a href="/en-US/docs/Web/API/WebGL_API">WebGL API</a> to draw graphics and animations.
38136///
38137/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas>
38138
38139#[cfg(feature = "alloc")]
38140#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
38141pub struct CanvasOwned {
38142    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
38143    ///   
38144    pub accesskey: core::option::Option<AttributeValueOwned>,
38145    ///
38146    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
38147    ///     <ul>
38148    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
38149    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
38150    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
38151    ///       <li><code>characters</code>, all letters should default to uppercase</li>
38152    ///     </ul>
38153    ///   
38154    pub autocapitalize: core::option::Option<AttributeValueOwned>,
38155    ///
38156    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
38157    ///   
38158    pub autofocus: core::option::Option<AttributeValueOwned>,
38159    ///
38160    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
38161    ///   
38162    pub class: core::option::Option<AttributeValueOwned>,
38163    ///
38164    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
38165    ///     <ul>
38166    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
38167    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
38168    ///     </ul>
38169    ///   
38170    pub contenteditable: core::option::Option<AttributeValueOwned>,
38171    ///
38172    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
38173    ///   
38174    pub contextmenu: core::option::Option<AttributeValueOwned>,
38175    ///
38176    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
38177    ///   
38178    #[cfg(feature = "alloc")]
38179    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
38180    ///
38181    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
38182    ///     <ul>
38183    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
38184    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
38185    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
38186    ///     </ul>
38187    ///   
38188    pub dir: core::option::Option<AttributeValueOwned>,
38189    ///
38190    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
38191    ///     <ul>
38192    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
38193    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
38194    ///     </ul>
38195    ///   
38196    pub draggable: core::option::Option<AttributeValueOwned>,
38197    ///
38198    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
38199    ///   
38200    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
38201    ///
38202    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
38203    ///   
38204    pub exportparts: core::option::Option<AttributeValueOwned>,
38205    /// /// Extra attributes of the element.
38206
38207    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
38208    #[cfg(feature = "alloc")]
38209    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
38210    ///
38211    ///     <p>The height of the coordinate space in CSS pixels. Defaults to 150.</p>
38212    ///   
38213    pub height: core::option::Option<AttributeValueOwned>,
38214    ///
38215    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
38216    ///   
38217    pub hidden: core::option::Option<AttributeValueOwned>,
38218    ///
38219    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
38220    ///   
38221    pub id: core::option::Option<AttributeValueOwned>,
38222    ///
38223    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
38224    ///   
38225    pub inert: core::option::Option<AttributeValueOwned>,
38226    ///
38227    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
38228    ///   
38229    pub inputmode: core::option::Option<AttributeValueOwned>,
38230    ///
38231    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
38232    ///   
38233    pub is: core::option::Option<AttributeValueOwned>,
38234    ///
38235    ///     <p>The unique, global identifier of an item.</p>
38236    ///   
38237    pub itemid: core::option::Option<AttributeValueOwned>,
38238    ///
38239    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
38240    ///   
38241    pub itemprop: core::option::Option<AttributeValueOwned>,
38242    ///
38243    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
38244    ///   
38245    pub itemref: core::option::Option<AttributeValueOwned>,
38246    ///
38247    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
38248    ///   
38249    pub itemscope: core::option::Option<AttributeValueOwned>,
38250    ///
38251    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
38252    ///   
38253    pub itemtype: core::option::Option<AttributeValueOwned>,
38254    ///
38255    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
38256    ///   
38257    pub lang: core::option::Option<AttributeValueOwned>,
38258    ///
38259    ///     <p>Lets the canvas know whether translucency will be a factor. If the canvas knows there's no translucency, painting performance can be optimized. This is only supported by Mozilla-based browsers; use the standardized <a title="canvas.getContext('2d', { alpha: false })" href="/en-US/docs/Web/API/HTMLCanvasElement/getContext"><code>canvas.getContext('2d', { alpha: false })</code></a> instead.</p>
38260    ///   
38261    pub moz_opaque: core::option::Option<AttributeValueOwned>,
38262    ///
38263    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
38264    ///   
38265    pub nonce: core::option::Option<AttributeValueOwned>,
38266    ///
38267    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
38268    ///   
38269    pub part: core::option::Option<AttributeValueOwned>,
38270    ///
38271    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
38272    ///   
38273    pub popover: core::option::Option<AttributeValueOwned>,
38274    ///
38275    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
38276    ///   
38277    pub role: core::option::Option<AttributeValueOwned>,
38278    ///
38279    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
38280    ///   
38281    pub slot: core::option::Option<AttributeValueOwned>,
38282    ///
38283    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
38284    ///     <ul>
38285    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
38286    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
38287    ///     </ul>
38288    ///   
38289    pub spellcheck: core::option::Option<AttributeValueOwned>,
38290    ///
38291    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
38292    ///   
38293    pub style: core::option::Option<AttributeValueOwned>,
38294    ///
38295    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
38296    ///     <ul>
38297    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
38298    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
38299    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
38300    ///     </ul>
38301    ///   
38302    pub tabindex: core::option::Option<AttributeValueOwned>,
38303    ///
38304    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
38305    ///   
38306    pub title: core::option::Option<AttributeValueOwned>,
38307    ///
38308    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
38309    ///     <ul>
38310    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
38311    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
38312    ///     </ul>
38313    ///   
38314    pub translate: core::option::Option<AttributeValueOwned>,
38315    ///
38316    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
38317    ///     <ul>
38318    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
38319    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
38320    ///     </ul>
38321    ///   
38322    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
38323    ///
38324    ///     <p>The width of the coordinate space in CSS pixels. Defaults to 300.</p>
38325    ///   
38326    pub width: core::option::Option<AttributeValueOwned>,
38327}
38328#[allow(deprecated)]
38329#[cfg(feature = "alloc")]
38330impl CanvasOwned {
38331    /// Get the tag name of the element.
38332    /// This is the same as the name of the struct, in kebab-case.
38333    pub fn tag() -> &'static str {
38334        "canvas"
38335    }
38336    /// Sets an attribute of the element.
38337    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
38338    /// If the `alloc` feature is disabled, this function will silently fail.
38339    ///
38340    /// # Note
38341    /// This only works when the attribute is lowercase.
38342    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
38343        match name {
38344            "accesskey" => self.accesskey = Some(value.into()),
38345            "autocapitalize" => self.autocapitalize = Some(value.into()),
38346            "autofocus" => self.autofocus = Some(value.into()),
38347            "class" => self.class = Some(value.into()),
38348            "contenteditable" => self.contenteditable = Some(value.into()),
38349            "contextmenu" => self.contextmenu = Some(value.into()),
38350            "dir" => self.dir = Some(value.into()),
38351            "draggable" => self.draggable = Some(value.into()),
38352            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
38353            "exportparts" => self.exportparts = Some(value.into()),
38354            "height" => self.height = Some(value.into()),
38355            "hidden" => self.hidden = Some(value.into()),
38356            "id" => self.id = Some(value.into()),
38357            "inert" => self.inert = Some(value.into()),
38358            "inputmode" => self.inputmode = Some(value.into()),
38359            "is" => self.is = Some(value.into()),
38360            "itemid" => self.itemid = Some(value.into()),
38361            "itemprop" => self.itemprop = Some(value.into()),
38362            "itemref" => self.itemref = Some(value.into()),
38363            "itemscope" => self.itemscope = Some(value.into()),
38364            "itemtype" => self.itemtype = Some(value.into()),
38365            "lang" => self.lang = Some(value.into()),
38366            "moz_opaque" => self.moz_opaque = Some(value.into()),
38367            "nonce" => self.nonce = Some(value.into()),
38368            "part" => self.part = Some(value.into()),
38369            "popover" => self.popover = Some(value.into()),
38370            "role" => self.role = Some(value.into()),
38371            "slot" => self.slot = Some(value.into()),
38372            "spellcheck" => self.spellcheck = Some(value.into()),
38373            "style" => self.style = Some(value.into()),
38374            "tabindex" => self.tabindex = Some(value.into()),
38375            "title" => self.title = Some(value.into()),
38376            "translate" => self.translate = Some(value.into()),
38377            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
38378            "width" => self.width = Some(value.into()),
38379            #[cfg(feature = "alloc")]
38380            _ => {
38381                #[allow(clippy::useless_conversion)]
38382                self.extra.insert(name.into(), value.into());
38383            }
38384            #[cfg(not(feature = "alloc"))]
38385            _ => {}
38386        }
38387    }
38388}
38389/// The <strong><code>&lt;noscript&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element defines a section of HTML to be inserted if a script type on the page is unsupported or if scripting is currently turned off in the browser.
38390///
38391/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/noscript>
38392
38393#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
38394pub struct Noscript<'life> {
38395    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
38396    ///   
38397    pub accesskey: core::option::Option<AttributeValue<'life>>,
38398    ///
38399    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
38400    ///     <ul>
38401    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
38402    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
38403    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
38404    ///       <li><code>characters</code>, all letters should default to uppercase</li>
38405    ///     </ul>
38406    ///   
38407    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
38408    ///
38409    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
38410    ///   
38411    pub autofocus: core::option::Option<AttributeValue<'life>>,
38412    ///
38413    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
38414    ///   
38415    pub class: core::option::Option<AttributeValue<'life>>,
38416    ///
38417    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
38418    ///     <ul>
38419    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
38420    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
38421    ///     </ul>
38422    ///   
38423    pub contenteditable: core::option::Option<AttributeValue<'life>>,
38424    ///
38425    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
38426    ///   
38427    pub contextmenu: core::option::Option<AttributeValue<'life>>,
38428    ///
38429    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
38430    ///   
38431    #[cfg(feature = "alloc")]
38432    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
38433    ///
38434    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
38435    ///     <ul>
38436    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
38437    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
38438    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
38439    ///     </ul>
38440    ///   
38441    pub dir: core::option::Option<AttributeValue<'life>>,
38442    ///
38443    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
38444    ///     <ul>
38445    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
38446    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
38447    ///     </ul>
38448    ///   
38449    pub draggable: core::option::Option<AttributeValue<'life>>,
38450    ///
38451    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
38452    ///   
38453    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
38454    ///
38455    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
38456    ///   
38457    pub exportparts: core::option::Option<AttributeValue<'life>>,
38458    /// /// Extra attributes of the element.
38459
38460    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
38461    #[cfg(feature = "alloc")]
38462    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
38463    ///
38464    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
38465    ///   
38466    pub hidden: core::option::Option<AttributeValue<'life>>,
38467    ///
38468    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
38469    ///   
38470    pub id: core::option::Option<AttributeValue<'life>>,
38471    ///
38472    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
38473    ///   
38474    pub inert: core::option::Option<AttributeValue<'life>>,
38475    ///
38476    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
38477    ///   
38478    pub inputmode: core::option::Option<AttributeValue<'life>>,
38479    ///
38480    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
38481    ///   
38482    pub is: core::option::Option<AttributeValue<'life>>,
38483    ///
38484    ///     <p>The unique, global identifier of an item.</p>
38485    ///   
38486    pub itemid: core::option::Option<AttributeValue<'life>>,
38487    ///
38488    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
38489    ///   
38490    pub itemprop: core::option::Option<AttributeValue<'life>>,
38491    ///
38492    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
38493    ///   
38494    pub itemref: core::option::Option<AttributeValue<'life>>,
38495    ///
38496    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
38497    ///   
38498    pub itemscope: core::option::Option<AttributeValue<'life>>,
38499    ///
38500    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
38501    ///   
38502    pub itemtype: core::option::Option<AttributeValue<'life>>,
38503    ///
38504    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
38505    ///   
38506    pub lang: core::option::Option<AttributeValue<'life>>,
38507    ///
38508    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
38509    ///   
38510    pub nonce: core::option::Option<AttributeValue<'life>>,
38511    ///
38512    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
38513    ///   
38514    pub part: core::option::Option<AttributeValue<'life>>,
38515    ///
38516    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
38517    ///   
38518    pub popover: core::option::Option<AttributeValue<'life>>,
38519    ///
38520    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
38521    ///   
38522    pub role: core::option::Option<AttributeValue<'life>>,
38523    ///
38524    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
38525    ///   
38526    pub slot: core::option::Option<AttributeValue<'life>>,
38527    ///
38528    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
38529    ///     <ul>
38530    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
38531    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
38532    ///     </ul>
38533    ///   
38534    pub spellcheck: core::option::Option<AttributeValue<'life>>,
38535    ///
38536    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
38537    ///   
38538    pub style: core::option::Option<AttributeValue<'life>>,
38539    ///
38540    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
38541    ///     <ul>
38542    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
38543    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
38544    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
38545    ///     </ul>
38546    ///   
38547    pub tabindex: core::option::Option<AttributeValue<'life>>,
38548    ///
38549    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
38550    ///   
38551    pub title: core::option::Option<AttributeValue<'life>>,
38552    ///
38553    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
38554    ///     <ul>
38555    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
38556    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
38557    ///     </ul>
38558    ///   
38559    pub translate: core::option::Option<AttributeValue<'life>>,
38560    ///
38561    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
38562    ///     <ul>
38563    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
38564    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
38565    ///     </ul>
38566    ///   
38567    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
38568}
38569#[allow(deprecated)]
38570
38571impl<'life> Noscript<'life> {
38572    /// Get the tag name of the element.
38573    /// This is the same as the name of the struct, in kebab-case.
38574    pub fn tag() -> &'static str {
38575        "noscript"
38576    }
38577    /// Sets an attribute of the element.
38578    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
38579    /// If the `alloc` feature is disabled, this function will silently fail.
38580    ///
38581    /// # Note
38582    /// This only works when the attribute is lowercase.
38583    pub fn set_attr(
38584        &mut self,
38585        name: &'life str,
38586        value: impl core::convert::Into<AttributeValue<'life>>,
38587    ) {
38588        match name {
38589            "accesskey" => self.accesskey = Some(value.into()),
38590            "autocapitalize" => self.autocapitalize = Some(value.into()),
38591            "autofocus" => self.autofocus = Some(value.into()),
38592            "class" => self.class = Some(value.into()),
38593            "contenteditable" => self.contenteditable = Some(value.into()),
38594            "contextmenu" => self.contextmenu = Some(value.into()),
38595            "dir" => self.dir = Some(value.into()),
38596            "draggable" => self.draggable = Some(value.into()),
38597            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
38598            "exportparts" => self.exportparts = Some(value.into()),
38599            "hidden" => self.hidden = Some(value.into()),
38600            "id" => self.id = Some(value.into()),
38601            "inert" => self.inert = Some(value.into()),
38602            "inputmode" => self.inputmode = Some(value.into()),
38603            "is" => self.is = Some(value.into()),
38604            "itemid" => self.itemid = Some(value.into()),
38605            "itemprop" => self.itemprop = Some(value.into()),
38606            "itemref" => self.itemref = Some(value.into()),
38607            "itemscope" => self.itemscope = Some(value.into()),
38608            "itemtype" => self.itemtype = Some(value.into()),
38609            "lang" => self.lang = Some(value.into()),
38610            "nonce" => self.nonce = Some(value.into()),
38611            "part" => self.part = Some(value.into()),
38612            "popover" => self.popover = Some(value.into()),
38613            "role" => self.role = Some(value.into()),
38614            "slot" => self.slot = Some(value.into()),
38615            "spellcheck" => self.spellcheck = Some(value.into()),
38616            "style" => self.style = Some(value.into()),
38617            "tabindex" => self.tabindex = Some(value.into()),
38618            "title" => self.title = Some(value.into()),
38619            "translate" => self.translate = Some(value.into()),
38620            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
38621            #[cfg(feature = "alloc")]
38622            _ => {
38623                #[allow(clippy::useless_conversion)]
38624                self.extra.insert(name.into(), value.into());
38625            }
38626            #[cfg(not(feature = "alloc"))]
38627            _ => {}
38628        }
38629    }
38630}
38631/// The <strong><code>&lt;noscript&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element defines a section of HTML to be inserted if a script type on the page is unsupported or if scripting is currently turned off in the browser.
38632///
38633/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/noscript>
38634
38635#[cfg(feature = "alloc")]
38636#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
38637pub struct NoscriptOwned {
38638    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
38639    ///   
38640    pub accesskey: core::option::Option<AttributeValueOwned>,
38641    ///
38642    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
38643    ///     <ul>
38644    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
38645    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
38646    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
38647    ///       <li><code>characters</code>, all letters should default to uppercase</li>
38648    ///     </ul>
38649    ///   
38650    pub autocapitalize: core::option::Option<AttributeValueOwned>,
38651    ///
38652    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
38653    ///   
38654    pub autofocus: core::option::Option<AttributeValueOwned>,
38655    ///
38656    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
38657    ///   
38658    pub class: core::option::Option<AttributeValueOwned>,
38659    ///
38660    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
38661    ///     <ul>
38662    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
38663    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
38664    ///     </ul>
38665    ///   
38666    pub contenteditable: core::option::Option<AttributeValueOwned>,
38667    ///
38668    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
38669    ///   
38670    pub contextmenu: core::option::Option<AttributeValueOwned>,
38671    ///
38672    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
38673    ///   
38674    #[cfg(feature = "alloc")]
38675    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
38676    ///
38677    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
38678    ///     <ul>
38679    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
38680    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
38681    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
38682    ///     </ul>
38683    ///   
38684    pub dir: core::option::Option<AttributeValueOwned>,
38685    ///
38686    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
38687    ///     <ul>
38688    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
38689    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
38690    ///     </ul>
38691    ///   
38692    pub draggable: core::option::Option<AttributeValueOwned>,
38693    ///
38694    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
38695    ///   
38696    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
38697    ///
38698    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
38699    ///   
38700    pub exportparts: core::option::Option<AttributeValueOwned>,
38701    /// /// Extra attributes of the element.
38702
38703    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
38704    #[cfg(feature = "alloc")]
38705    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
38706    ///
38707    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
38708    ///   
38709    pub hidden: core::option::Option<AttributeValueOwned>,
38710    ///
38711    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
38712    ///   
38713    pub id: core::option::Option<AttributeValueOwned>,
38714    ///
38715    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
38716    ///   
38717    pub inert: core::option::Option<AttributeValueOwned>,
38718    ///
38719    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
38720    ///   
38721    pub inputmode: core::option::Option<AttributeValueOwned>,
38722    ///
38723    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
38724    ///   
38725    pub is: core::option::Option<AttributeValueOwned>,
38726    ///
38727    ///     <p>The unique, global identifier of an item.</p>
38728    ///   
38729    pub itemid: core::option::Option<AttributeValueOwned>,
38730    ///
38731    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
38732    ///   
38733    pub itemprop: core::option::Option<AttributeValueOwned>,
38734    ///
38735    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
38736    ///   
38737    pub itemref: core::option::Option<AttributeValueOwned>,
38738    ///
38739    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
38740    ///   
38741    pub itemscope: core::option::Option<AttributeValueOwned>,
38742    ///
38743    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
38744    ///   
38745    pub itemtype: core::option::Option<AttributeValueOwned>,
38746    ///
38747    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
38748    ///   
38749    pub lang: core::option::Option<AttributeValueOwned>,
38750    ///
38751    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
38752    ///   
38753    pub nonce: core::option::Option<AttributeValueOwned>,
38754    ///
38755    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
38756    ///   
38757    pub part: core::option::Option<AttributeValueOwned>,
38758    ///
38759    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
38760    ///   
38761    pub popover: core::option::Option<AttributeValueOwned>,
38762    ///
38763    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
38764    ///   
38765    pub role: core::option::Option<AttributeValueOwned>,
38766    ///
38767    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
38768    ///   
38769    pub slot: core::option::Option<AttributeValueOwned>,
38770    ///
38771    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
38772    ///     <ul>
38773    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
38774    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
38775    ///     </ul>
38776    ///   
38777    pub spellcheck: core::option::Option<AttributeValueOwned>,
38778    ///
38779    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
38780    ///   
38781    pub style: core::option::Option<AttributeValueOwned>,
38782    ///
38783    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
38784    ///     <ul>
38785    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
38786    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
38787    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
38788    ///     </ul>
38789    ///   
38790    pub tabindex: core::option::Option<AttributeValueOwned>,
38791    ///
38792    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
38793    ///   
38794    pub title: core::option::Option<AttributeValueOwned>,
38795    ///
38796    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
38797    ///     <ul>
38798    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
38799    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
38800    ///     </ul>
38801    ///   
38802    pub translate: core::option::Option<AttributeValueOwned>,
38803    ///
38804    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
38805    ///     <ul>
38806    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
38807    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
38808    ///     </ul>
38809    ///   
38810    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
38811}
38812#[allow(deprecated)]
38813#[cfg(feature = "alloc")]
38814impl NoscriptOwned {
38815    /// Get the tag name of the element.
38816    /// This is the same as the name of the struct, in kebab-case.
38817    pub fn tag() -> &'static str {
38818        "noscript"
38819    }
38820    /// Sets an attribute of the element.
38821    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
38822    /// If the `alloc` feature is disabled, this function will silently fail.
38823    ///
38824    /// # Note
38825    /// This only works when the attribute is lowercase.
38826    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
38827        match name {
38828            "accesskey" => self.accesskey = Some(value.into()),
38829            "autocapitalize" => self.autocapitalize = Some(value.into()),
38830            "autofocus" => self.autofocus = Some(value.into()),
38831            "class" => self.class = Some(value.into()),
38832            "contenteditable" => self.contenteditable = Some(value.into()),
38833            "contextmenu" => self.contextmenu = Some(value.into()),
38834            "dir" => self.dir = Some(value.into()),
38835            "draggable" => self.draggable = Some(value.into()),
38836            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
38837            "exportparts" => self.exportparts = Some(value.into()),
38838            "hidden" => self.hidden = Some(value.into()),
38839            "id" => self.id = Some(value.into()),
38840            "inert" => self.inert = Some(value.into()),
38841            "inputmode" => self.inputmode = Some(value.into()),
38842            "is" => self.is = Some(value.into()),
38843            "itemid" => self.itemid = Some(value.into()),
38844            "itemprop" => self.itemprop = Some(value.into()),
38845            "itemref" => self.itemref = Some(value.into()),
38846            "itemscope" => self.itemscope = Some(value.into()),
38847            "itemtype" => self.itemtype = Some(value.into()),
38848            "lang" => self.lang = Some(value.into()),
38849            "nonce" => self.nonce = Some(value.into()),
38850            "part" => self.part = Some(value.into()),
38851            "popover" => self.popover = Some(value.into()),
38852            "role" => self.role = Some(value.into()),
38853            "slot" => self.slot = Some(value.into()),
38854            "spellcheck" => self.spellcheck = Some(value.into()),
38855            "style" => self.style = Some(value.into()),
38856            "tabindex" => self.tabindex = Some(value.into()),
38857            "title" => self.title = Some(value.into()),
38858            "translate" => self.translate = Some(value.into()),
38859            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
38860            #[cfg(feature = "alloc")]
38861            _ => {
38862                #[allow(clippy::useless_conversion)]
38863                self.extra.insert(name.into(), value.into());
38864            }
38865            #[cfg(not(feature = "alloc"))]
38866            _ => {}
38867        }
38868    }
38869}
38870/// The <strong><code>&lt;script&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element is used to embed executable code or data; this is typically used to embed or refer to JavaScript code. The <code>&lt;script&gt;</code> element can also be used with other languages, such as <a href="/en-US/docs/Web/API/WebGL_API">WebGL</a>'s GLSL shader programming language and <a href="/en-US/docs/Glossary/JSON">JSON</a>.
38871///
38872/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script>
38873
38874#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
38875pub struct Script<'life> {
38876    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
38877    ///   
38878    pub accesskey: core::option::Option<AttributeValue<'life>>,
38879    ///
38880    ///     <p>For classic scripts, if the <code>async</code> attribute is present, then the classic script will be fetched in parallel to parsing and evaluated as soon as it is available.</p>
38881    ///     <p>For <a href="/en-US/docs/Web/JavaScript/Guide/Modules">module scripts</a>, if the <code>async</code> attribute is present then the scripts and all their dependencies will be executed in the defer queue, therefore they will get fetched in parallel to parsing and evaluated as soon as they are available.</p>
38882    ///     <p>This attribute allows the elimination of <strong>parser-blocking JavaScript</strong> where the browser would have to load and evaluate scripts before continuing to parse. <code>defer</code> has a similar effect in this case.</p>
38883    ///     <p>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.</p>
38884    ///     <p>See <a href="#browser_compatibility">Browser compatibility</a> for notes on browser support. See also <a href="/en-US/docs/Games/Techniques/Async_scripts">Async scripts for asm.js</a>.</p>
38885    ///   
38886    pub async_: core::option::Option<AttributeValue<'life>>,
38887    ///
38888    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
38889    ///     <ul>
38890    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
38891    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
38892    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
38893    ///       <li><code>characters</code>, all letters should default to uppercase</li>
38894    ///     </ul>
38895    ///   
38896    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
38897    ///
38898    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
38899    ///   
38900    pub autofocus: core::option::Option<AttributeValue<'life>>,
38901    ///
38902    ///     <p>This attribute explicitly indicates that certain operations should be blocked on the fetching of the script. The operations that are to be blocked must be a space-separated list of blocking attributes listed below.</p>
38903    ///     <ul>
38904    ///       <li><code>render</code>: The rendering of content on the screen is blocked.</li>
38905    ///     </ul>
38906    ///   
38907    pub blocking: core::option::Option<AttributeValue<'life>>,
38908    ///
38909    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
38910    ///   
38911    pub class: core::option::Option<AttributeValue<'life>>,
38912    ///
38913    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
38914    ///     <ul>
38915    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
38916    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
38917    ///     </ul>
38918    ///   
38919    pub contenteditable: core::option::Option<AttributeValue<'life>>,
38920    ///
38921    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
38922    ///   
38923    pub contextmenu: core::option::Option<AttributeValue<'life>>,
38924    ///
38925    ///     <p>Normal <code>script</code> elements pass minimal information to the <a href="/en-US/docs/Web/API/Window/error_event" title="window.onerror"><code>window.onerror</code></a> for scripts which do not pass the standard <a href="/en-US/docs/Glossary/CORS">CORS</a> checks. To allow error logging for sites which use a separate domain for static media, use this attribute. See <a href="/en-US/docs/Web/HTML/Attributes/crossorigin">CORS settings attributes</a> for a more descriptive explanation of its valid arguments.</p>
38926    ///   
38927    pub crossorigin: core::option::Option<AttributeValue<'life>>,
38928    ///
38929    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
38930    ///   
38931    #[cfg(feature = "alloc")]
38932    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
38933    ///
38934    ///     <p>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 <a title="DOMContentLoaded" href="/en-US/docs/Web/API/Document/DOMContentLoaded_event"><code>DOMContentLoaded</code></a>.</p>
38935    ///     <p>Scripts with the <code>defer</code> attribute will prevent the <code>DOMContentLoaded</code> event from firing until the script has loaded and finished evaluating.</p>
38936    ///     <div class="notecard warning" id="sect1">
38937    ///       <p><strong>Warning:</strong> This attribute must not be used if the <code>src</code> attribute is absent (i.e. for inline scripts), in this case it would have no effect.</p>
38938    ///       <p>The <code>defer</code> attribute has no effect on <a href="/en-US/docs/Web/JavaScript/Guide/Modules">module scripts</a> — they defer by default.</p>
38939    ///     </div>
38940    ///     <p>Scripts with the <code>defer</code> attribute will execute in the order in which they appear in the document.</p>
38941    ///     <p>This attribute allows the elimination of <strong>parser-blocking JavaScript</strong> where the browser would have to load and evaluate scripts before continuing to parse. <code>async</code> has a similar effect in this case.</p>
38942    ///   
38943    pub defer: core::option::Option<AttributeValue<'life>>,
38944    ///
38945    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
38946    ///     <ul>
38947    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
38948    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
38949    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
38950    ///     </ul>
38951    ///   
38952    pub dir: core::option::Option<AttributeValue<'life>>,
38953    ///
38954    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
38955    ///     <ul>
38956    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
38957    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
38958    ///     </ul>
38959    ///   
38960    pub draggable: core::option::Option<AttributeValue<'life>>,
38961    ///
38962    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
38963    ///   
38964    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
38965    ///
38966    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
38967    ///   
38968    pub exportparts: core::option::Option<AttributeValue<'life>>,
38969    /// /// Extra attributes of the element.
38970
38971    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
38972    #[cfg(feature = "alloc")]
38973    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
38974    ///
38975    ///     <p>Provides a hint of the relative priority to use when fetching an external script. Allowed values:</p>
38976    ///     <dl>
38977    ///       <dt id="high"><code>high</code></dt>
38978    ///       <dd>
38979    ///         <p>Signals a high-priority fetch relative to other external scripts.</p>
38980    ///       </dd>
38981    ///       <dt id="low"><code>low</code></dt>
38982    ///       <dd>
38983    ///         <p>Signals a low-priority fetch relative to other external scripts.</p>
38984    ///       </dd>
38985    ///       <dt id="auto"><code>auto</code></dt>
38986    ///       <dd>
38987    ///         <p>Default: Signals automatic determination of fetch priority relative to other external scripts.</p>
38988    ///       </dd>
38989    ///     </dl>
38990    ///   
38991    pub fetchpriority: core::option::Option<AttributeValue<'life>>,
38992    ///
38993    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
38994    ///   
38995    pub hidden: core::option::Option<AttributeValue<'life>>,
38996    ///
38997    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
38998    ///   
38999    pub id: core::option::Option<AttributeValue<'life>>,
39000    ///
39001    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
39002    ///   
39003    pub inert: core::option::Option<AttributeValue<'life>>,
39004    ///
39005    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
39006    ///   
39007    pub inputmode: core::option::Option<AttributeValue<'life>>,
39008    ///
39009    ///     <p>This attribute contains inline metadata that a user agent can use to verify that a fetched resource has been delivered free of unexpected manipulation. See <a href="/en-US/docs/Web/Security/Subresource_Integrity">Subresource Integrity</a>.</p>
39010    ///   
39011    pub integrity: core::option::Option<AttributeValue<'life>>,
39012    ///
39013    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
39014    ///   
39015    pub is: core::option::Option<AttributeValue<'life>>,
39016    ///
39017    ///     <p>The unique, global identifier of an item.</p>
39018    ///   
39019    pub itemid: core::option::Option<AttributeValue<'life>>,
39020    ///
39021    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
39022    ///   
39023    pub itemprop: core::option::Option<AttributeValue<'life>>,
39024    ///
39025    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
39026    ///   
39027    pub itemref: core::option::Option<AttributeValue<'life>>,
39028    ///
39029    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
39030    ///   
39031    pub itemscope: core::option::Option<AttributeValue<'life>>,
39032    ///
39033    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
39034    ///   
39035    pub itemtype: core::option::Option<AttributeValue<'life>>,
39036    ///
39037    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
39038    ///   
39039    pub lang: core::option::Option<AttributeValue<'life>>,
39040    ///
39041    ///     <p>This Boolean attribute is set to indicate that the script should not be executed in browsers that support <a href="/en-US/docs/Web/JavaScript/Guide/Modules">ES modules</a> — in effect, this can be used to serve fallback scripts to older browsers that do not support modular JavaScript code.</p>
39042    ///   
39043    pub nomodule: core::option::Option<AttributeValue<'life>>,
39044    ///
39045    ///     <p>A cryptographic nonce (number used once) to allow scripts in a <a href="/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/script-src">script-src Content-Security-Policy</a>. 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.</p>
39046    ///   
39047    pub nonce: core::option::Option<AttributeValue<'life>>,
39048    ///
39049    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
39050    ///   
39051    pub part: core::option::Option<AttributeValue<'life>>,
39052    ///
39053    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
39054    ///   
39055    pub popover: core::option::Option<AttributeValue<'life>>,
39056    ///
39057    ///     <p>Indicates which <a href="/en-US/docs/Web/API/Document/referrer">referrer</a> to send when fetching the script, or resources fetched by the script:</p>
39058    ///     <ul>
39059    ///       <li><code>no-referrer</code>: The <a href="/en-US/docs/Web/HTTP/Headers/Referer"><code>Referer</code></a> header will not be sent.</li>
39060    ///       <li><code>no-referrer-when-downgrade</code>: The <a href="/en-US/docs/Web/HTTP/Headers/Referer"><code>Referer</code></a> header will not be sent to <a href="/en-US/docs/Glossary/Origin">origin</a>s without <a href="/en-US/docs/Glossary/TLS">TLS</a> (<a href="/en-US/docs/Glossary/HTTPS">HTTPS</a>).</li>
39061    ///       <li><code>origin</code>: The sent referrer will be limited to the origin of the referring page: its <a href="/en-US/docs/Learn/Common_questions/Web_mechanics/What_is_a_URL">scheme</a>, <a href="/en-US/docs/Glossary/Host">host</a>, and <a href="/en-US/docs/Glossary/Port">port</a>.</li>
39062    ///       <li><code>origin-when-cross-origin</code>: 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.</li>
39063    ///       <li><code>same-origin</code>: A referrer will be sent for <a href="/en-US/docs/Glossary/Same-origin_policy">same origin</a>, but cross-origin requests will contain no referrer information.</li>
39064    ///       <li><code>strict-origin</code>: 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).</li>
39065    ///       <li><code>strict-origin-when-cross-origin</code> (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).</li>
39066    ///       <li><code>unsafe-url</code>: The referrer will include the origin <em>and</em> the path (but not the <a href="/en-US/docs/Web/API/HTMLAnchorElement/hash">fragment</a>, <a href="/en-US/docs/Web/API/HTMLAnchorElement/password">password</a>, or <a href="/en-US/docs/Web/API/HTMLAnchorElement/username">username</a>). <strong>This value is unsafe</strong>, because it leaks origins and paths from TLS-protected resources to insecure origins.</li>
39067    ///     </ul>
39068    ///     <div class="notecard note" id="sect2">
39069    ///       <p><strong>Note:</strong> An empty string value (<code>""</code>) is both the default value, and a fallback value if <code>referrerpolicy</code> is not supported. If <code>referrerpolicy</code> is not explicitly specified on the <code>&lt;script&gt;</code> 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 <code>strict-origin-when-cross-origin</code>.</p>
39070    ///     </div>
39071    ///   
39072    pub referrerpolicy: core::option::Option<AttributeValue<'life>>,
39073    ///
39074    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
39075    ///   
39076    pub role: core::option::Option<AttributeValue<'life>>,
39077    ///
39078    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
39079    ///   
39080    pub slot: core::option::Option<AttributeValue<'life>>,
39081    ///
39082    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
39083    ///     <ul>
39084    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
39085    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
39086    ///     </ul>
39087    ///   
39088    pub spellcheck: core::option::Option<AttributeValue<'life>>,
39089    ///
39090    ///     <p>This attribute specifies the URI of an external script; this can be used as an alternative to embedding a script directly within a document.</p>
39091    ///   
39092    pub src: core::option::Option<AttributeValue<'life>>,
39093    ///
39094    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
39095    ///   
39096    pub style: core::option::Option<AttributeValue<'life>>,
39097    ///
39098    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
39099    ///     <ul>
39100    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
39101    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
39102    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
39103    ///     </ul>
39104    ///   
39105    pub tabindex: core::option::Option<AttributeValue<'life>>,
39106    ///
39107    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
39108    ///   
39109    pub title: core::option::Option<AttributeValue<'life>>,
39110    ///
39111    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
39112    ///     <ul>
39113    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
39114    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
39115    ///     </ul>
39116    ///   
39117    pub translate: core::option::Option<AttributeValue<'life>>,
39118    ///
39119    ///     <p>
39120    ///       This attribute indicates the type of script represented.
39121    ///       The value of this attribute will be one of the following:
39122    ///     </p>
39123    ///     <dl>
39124    ///       <dt id="attribute_is_not_set_default_an_empty_string_or_a_javascript_mime_type"><strong>Attribute is not set (default), an empty string, or a JavaScript MIME type</strong></dt>
39125    ///       <dd>
39126    ///         <p>
39127    ///           Indicates that the script is a "classic script", containing JavaScript code.
39128    ///           Authors are encouraged to omit the attribute if the script refers to JavaScript code rather than specify a MIME type.
39129    ///           JavaScript MIME types are <a href="/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types#textjavascript">listed in the IANA media types specification</a>.
39130    ///         </p>
39131    ///       </dd>
39132    ///       <dt id="module"><code>module</code></dt>
39133    ///       <dd>
39134    ///         <p>
39135    ///           This value causes the code to be treated as a JavaScript module.
39136    ///           The processing of the script contents is deferred.
39137    ///           The <code>charset</code> and <code>defer</code> attributes have no effect.
39138    ///           For information on using <code>module</code>, see our <a href="/en-US/docs/Web/JavaScript/Guide/Modules">JavaScript modules</a> guide.
39139    ///           Unlike classic scripts, module scripts require the use of the CORS protocol for cross-origin fetching.
39140    ///         </p>
39141    ///       </dd>
39142    ///       <dt id="importmap"><a href="/en-US/docs/Web/HTML/Element/script/type/importmap"><code>importmap</code></a></dt>
39143    ///       <dd>
39144    ///         <p>
39145    ///           This value indicates that the body of the element contains an import map.
39146    ///           The import map is a JSON object that developers can use to control how the browser resolves module specifiers when importing <a href="/en-US/docs/Web/JavaScript/Guide/Modules#importing_modules_using_import_maps">JavaScript modules</a>.
39147    ///         </p>
39148    ///       </dd>
39149    ///       <dt id="any_other_value"><strong>Any other value</strong></dt>
39150    ///       <dd>
39151    ///         <p>
39152    ///           The embedded content is treated as a data block, and won't be processed by the browser.
39153    ///           Developers must use a valid MIME type that is not a JavaScript MIME type to denote data blocks.
39154    ///           All of the other attributes will be ignored, including the <code>src</code> attribute.
39155    ///         </p>
39156    ///       </dd>
39157    ///     </dl>
39158    ///   
39159    pub type_: core::option::Option<AttributeValue<'life>>,
39160    ///
39161    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
39162    ///     <ul>
39163    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
39164    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
39165    ///     </ul>
39166    ///   
39167    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
39168}
39169#[allow(deprecated)]
39170
39171impl<'life> Script<'life> {
39172    /// Get the tag name of the element.
39173    /// This is the same as the name of the struct, in kebab-case.
39174    pub fn tag() -> &'static str {
39175        "script"
39176    }
39177    /// Sets an attribute of the element.
39178    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
39179    /// If the `alloc` feature is disabled, this function will silently fail.
39180    ///
39181    /// # Note
39182    /// This only works when the attribute is lowercase.
39183    pub fn set_attr(
39184        &mut self,
39185        name: &'life str,
39186        value: impl core::convert::Into<AttributeValue<'life>>,
39187    ) {
39188        match name {
39189            "accesskey" => self.accesskey = Some(value.into()),
39190            "async_" => self.async_ = Some(value.into()),
39191            "autocapitalize" => self.autocapitalize = Some(value.into()),
39192            "autofocus" => self.autofocus = Some(value.into()),
39193            "blocking" => self.blocking = Some(value.into()),
39194            "class" => self.class = Some(value.into()),
39195            "contenteditable" => self.contenteditable = Some(value.into()),
39196            "contextmenu" => self.contextmenu = Some(value.into()),
39197            "crossorigin" => self.crossorigin = Some(value.into()),
39198            "defer" => self.defer = Some(value.into()),
39199            "dir" => self.dir = Some(value.into()),
39200            "draggable" => self.draggable = Some(value.into()),
39201            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
39202            "exportparts" => self.exportparts = Some(value.into()),
39203            "fetchpriority" => self.fetchpriority = Some(value.into()),
39204            "hidden" => self.hidden = Some(value.into()),
39205            "id" => self.id = Some(value.into()),
39206            "inert" => self.inert = Some(value.into()),
39207            "inputmode" => self.inputmode = Some(value.into()),
39208            "integrity" => self.integrity = Some(value.into()),
39209            "is" => self.is = Some(value.into()),
39210            "itemid" => self.itemid = Some(value.into()),
39211            "itemprop" => self.itemprop = Some(value.into()),
39212            "itemref" => self.itemref = Some(value.into()),
39213            "itemscope" => self.itemscope = Some(value.into()),
39214            "itemtype" => self.itemtype = Some(value.into()),
39215            "lang" => self.lang = Some(value.into()),
39216            "nomodule" => self.nomodule = Some(value.into()),
39217            "nonce" => self.nonce = Some(value.into()),
39218            "part" => self.part = Some(value.into()),
39219            "popover" => self.popover = Some(value.into()),
39220            "referrerpolicy" => self.referrerpolicy = Some(value.into()),
39221            "role" => self.role = Some(value.into()),
39222            "slot" => self.slot = Some(value.into()),
39223            "spellcheck" => self.spellcheck = Some(value.into()),
39224            "src" => self.src = Some(value.into()),
39225            "style" => self.style = Some(value.into()),
39226            "tabindex" => self.tabindex = Some(value.into()),
39227            "title" => self.title = Some(value.into()),
39228            "translate" => self.translate = Some(value.into()),
39229            "type_" => self.type_ = Some(value.into()),
39230            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
39231            #[cfg(feature = "alloc")]
39232            _ => {
39233                #[allow(clippy::useless_conversion)]
39234                self.extra.insert(name.into(), value.into());
39235            }
39236            #[cfg(not(feature = "alloc"))]
39237            _ => {}
39238        }
39239    }
39240}
39241/// The <strong><code>&lt;script&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element is used to embed executable code or data; this is typically used to embed or refer to JavaScript code. The <code>&lt;script&gt;</code> element can also be used with other languages, such as <a href="/en-US/docs/Web/API/WebGL_API">WebGL</a>'s GLSL shader programming language and <a href="/en-US/docs/Glossary/JSON">JSON</a>.
39242///
39243/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script>
39244
39245#[cfg(feature = "alloc")]
39246#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
39247pub struct ScriptOwned {
39248    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
39249    ///   
39250    pub accesskey: core::option::Option<AttributeValueOwned>,
39251    ///
39252    ///     <p>For classic scripts, if the <code>async</code> attribute is present, then the classic script will be fetched in parallel to parsing and evaluated as soon as it is available.</p>
39253    ///     <p>For <a href="/en-US/docs/Web/JavaScript/Guide/Modules">module scripts</a>, if the <code>async</code> attribute is present then the scripts and all their dependencies will be executed in the defer queue, therefore they will get fetched in parallel to parsing and evaluated as soon as they are available.</p>
39254    ///     <p>This attribute allows the elimination of <strong>parser-blocking JavaScript</strong> where the browser would have to load and evaluate scripts before continuing to parse. <code>defer</code> has a similar effect in this case.</p>
39255    ///     <p>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.</p>
39256    ///     <p>See <a href="#browser_compatibility">Browser compatibility</a> for notes on browser support. See also <a href="/en-US/docs/Games/Techniques/Async_scripts">Async scripts for asm.js</a>.</p>
39257    ///   
39258    pub async_: core::option::Option<AttributeValueOwned>,
39259    ///
39260    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
39261    ///     <ul>
39262    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
39263    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
39264    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
39265    ///       <li><code>characters</code>, all letters should default to uppercase</li>
39266    ///     </ul>
39267    ///   
39268    pub autocapitalize: core::option::Option<AttributeValueOwned>,
39269    ///
39270    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
39271    ///   
39272    pub autofocus: core::option::Option<AttributeValueOwned>,
39273    ///
39274    ///     <p>This attribute explicitly indicates that certain operations should be blocked on the fetching of the script. The operations that are to be blocked must be a space-separated list of blocking attributes listed below.</p>
39275    ///     <ul>
39276    ///       <li><code>render</code>: The rendering of content on the screen is blocked.</li>
39277    ///     </ul>
39278    ///   
39279    pub blocking: core::option::Option<AttributeValueOwned>,
39280    ///
39281    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
39282    ///   
39283    pub class: core::option::Option<AttributeValueOwned>,
39284    ///
39285    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
39286    ///     <ul>
39287    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
39288    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
39289    ///     </ul>
39290    ///   
39291    pub contenteditable: core::option::Option<AttributeValueOwned>,
39292    ///
39293    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
39294    ///   
39295    pub contextmenu: core::option::Option<AttributeValueOwned>,
39296    ///
39297    ///     <p>Normal <code>script</code> elements pass minimal information to the <a href="/en-US/docs/Web/API/Window/error_event" title="window.onerror"><code>window.onerror</code></a> for scripts which do not pass the standard <a href="/en-US/docs/Glossary/CORS">CORS</a> checks. To allow error logging for sites which use a separate domain for static media, use this attribute. See <a href="/en-US/docs/Web/HTML/Attributes/crossorigin">CORS settings attributes</a> for a more descriptive explanation of its valid arguments.</p>
39298    ///   
39299    pub crossorigin: core::option::Option<AttributeValueOwned>,
39300    ///
39301    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
39302    ///   
39303    #[cfg(feature = "alloc")]
39304    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
39305    ///
39306    ///     <p>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 <a title="DOMContentLoaded" href="/en-US/docs/Web/API/Document/DOMContentLoaded_event"><code>DOMContentLoaded</code></a>.</p>
39307    ///     <p>Scripts with the <code>defer</code> attribute will prevent the <code>DOMContentLoaded</code> event from firing until the script has loaded and finished evaluating.</p>
39308    ///     <div class="notecard warning" id="sect1">
39309    ///       <p><strong>Warning:</strong> This attribute must not be used if the <code>src</code> attribute is absent (i.e. for inline scripts), in this case it would have no effect.</p>
39310    ///       <p>The <code>defer</code> attribute has no effect on <a href="/en-US/docs/Web/JavaScript/Guide/Modules">module scripts</a> — they defer by default.</p>
39311    ///     </div>
39312    ///     <p>Scripts with the <code>defer</code> attribute will execute in the order in which they appear in the document.</p>
39313    ///     <p>This attribute allows the elimination of <strong>parser-blocking JavaScript</strong> where the browser would have to load and evaluate scripts before continuing to parse. <code>async</code> has a similar effect in this case.</p>
39314    ///   
39315    pub defer: core::option::Option<AttributeValueOwned>,
39316    ///
39317    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
39318    ///     <ul>
39319    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
39320    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
39321    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
39322    ///     </ul>
39323    ///   
39324    pub dir: core::option::Option<AttributeValueOwned>,
39325    ///
39326    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
39327    ///     <ul>
39328    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
39329    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
39330    ///     </ul>
39331    ///   
39332    pub draggable: core::option::Option<AttributeValueOwned>,
39333    ///
39334    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
39335    ///   
39336    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
39337    ///
39338    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
39339    ///   
39340    pub exportparts: core::option::Option<AttributeValueOwned>,
39341    /// /// Extra attributes of the element.
39342
39343    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
39344    #[cfg(feature = "alloc")]
39345    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
39346    ///
39347    ///     <p>Provides a hint of the relative priority to use when fetching an external script. Allowed values:</p>
39348    ///     <dl>
39349    ///       <dt id="high"><code>high</code></dt>
39350    ///       <dd>
39351    ///         <p>Signals a high-priority fetch relative to other external scripts.</p>
39352    ///       </dd>
39353    ///       <dt id="low"><code>low</code></dt>
39354    ///       <dd>
39355    ///         <p>Signals a low-priority fetch relative to other external scripts.</p>
39356    ///       </dd>
39357    ///       <dt id="auto"><code>auto</code></dt>
39358    ///       <dd>
39359    ///         <p>Default: Signals automatic determination of fetch priority relative to other external scripts.</p>
39360    ///       </dd>
39361    ///     </dl>
39362    ///   
39363    pub fetchpriority: core::option::Option<AttributeValueOwned>,
39364    ///
39365    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
39366    ///   
39367    pub hidden: core::option::Option<AttributeValueOwned>,
39368    ///
39369    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
39370    ///   
39371    pub id: core::option::Option<AttributeValueOwned>,
39372    ///
39373    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
39374    ///   
39375    pub inert: core::option::Option<AttributeValueOwned>,
39376    ///
39377    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
39378    ///   
39379    pub inputmode: core::option::Option<AttributeValueOwned>,
39380    ///
39381    ///     <p>This attribute contains inline metadata that a user agent can use to verify that a fetched resource has been delivered free of unexpected manipulation. See <a href="/en-US/docs/Web/Security/Subresource_Integrity">Subresource Integrity</a>.</p>
39382    ///   
39383    pub integrity: core::option::Option<AttributeValueOwned>,
39384    ///
39385    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
39386    ///   
39387    pub is: core::option::Option<AttributeValueOwned>,
39388    ///
39389    ///     <p>The unique, global identifier of an item.</p>
39390    ///   
39391    pub itemid: core::option::Option<AttributeValueOwned>,
39392    ///
39393    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
39394    ///   
39395    pub itemprop: core::option::Option<AttributeValueOwned>,
39396    ///
39397    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
39398    ///   
39399    pub itemref: core::option::Option<AttributeValueOwned>,
39400    ///
39401    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
39402    ///   
39403    pub itemscope: core::option::Option<AttributeValueOwned>,
39404    ///
39405    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
39406    ///   
39407    pub itemtype: core::option::Option<AttributeValueOwned>,
39408    ///
39409    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
39410    ///   
39411    pub lang: core::option::Option<AttributeValueOwned>,
39412    ///
39413    ///     <p>This Boolean attribute is set to indicate that the script should not be executed in browsers that support <a href="/en-US/docs/Web/JavaScript/Guide/Modules">ES modules</a> — in effect, this can be used to serve fallback scripts to older browsers that do not support modular JavaScript code.</p>
39414    ///   
39415    pub nomodule: core::option::Option<AttributeValueOwned>,
39416    ///
39417    ///     <p>A cryptographic nonce (number used once) to allow scripts in a <a href="/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/script-src">script-src Content-Security-Policy</a>. 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.</p>
39418    ///   
39419    pub nonce: core::option::Option<AttributeValueOwned>,
39420    ///
39421    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
39422    ///   
39423    pub part: core::option::Option<AttributeValueOwned>,
39424    ///
39425    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
39426    ///   
39427    pub popover: core::option::Option<AttributeValueOwned>,
39428    ///
39429    ///     <p>Indicates which <a href="/en-US/docs/Web/API/Document/referrer">referrer</a> to send when fetching the script, or resources fetched by the script:</p>
39430    ///     <ul>
39431    ///       <li><code>no-referrer</code>: The <a href="/en-US/docs/Web/HTTP/Headers/Referer"><code>Referer</code></a> header will not be sent.</li>
39432    ///       <li><code>no-referrer-when-downgrade</code>: The <a href="/en-US/docs/Web/HTTP/Headers/Referer"><code>Referer</code></a> header will not be sent to <a href="/en-US/docs/Glossary/Origin">origin</a>s without <a href="/en-US/docs/Glossary/TLS">TLS</a> (<a href="/en-US/docs/Glossary/HTTPS">HTTPS</a>).</li>
39433    ///       <li><code>origin</code>: The sent referrer will be limited to the origin of the referring page: its <a href="/en-US/docs/Learn/Common_questions/Web_mechanics/What_is_a_URL">scheme</a>, <a href="/en-US/docs/Glossary/Host">host</a>, and <a href="/en-US/docs/Glossary/Port">port</a>.</li>
39434    ///       <li><code>origin-when-cross-origin</code>: 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.</li>
39435    ///       <li><code>same-origin</code>: A referrer will be sent for <a href="/en-US/docs/Glossary/Same-origin_policy">same origin</a>, but cross-origin requests will contain no referrer information.</li>
39436    ///       <li><code>strict-origin</code>: 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).</li>
39437    ///       <li><code>strict-origin-when-cross-origin</code> (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).</li>
39438    ///       <li><code>unsafe-url</code>: The referrer will include the origin <em>and</em> the path (but not the <a href="/en-US/docs/Web/API/HTMLAnchorElement/hash">fragment</a>, <a href="/en-US/docs/Web/API/HTMLAnchorElement/password">password</a>, or <a href="/en-US/docs/Web/API/HTMLAnchorElement/username">username</a>). <strong>This value is unsafe</strong>, because it leaks origins and paths from TLS-protected resources to insecure origins.</li>
39439    ///     </ul>
39440    ///     <div class="notecard note" id="sect2">
39441    ///       <p><strong>Note:</strong> An empty string value (<code>""</code>) is both the default value, and a fallback value if <code>referrerpolicy</code> is not supported. If <code>referrerpolicy</code> is not explicitly specified on the <code>&lt;script&gt;</code> 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 <code>strict-origin-when-cross-origin</code>.</p>
39442    ///     </div>
39443    ///   
39444    pub referrerpolicy: core::option::Option<AttributeValueOwned>,
39445    ///
39446    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
39447    ///   
39448    pub role: core::option::Option<AttributeValueOwned>,
39449    ///
39450    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
39451    ///   
39452    pub slot: core::option::Option<AttributeValueOwned>,
39453    ///
39454    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
39455    ///     <ul>
39456    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
39457    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
39458    ///     </ul>
39459    ///   
39460    pub spellcheck: core::option::Option<AttributeValueOwned>,
39461    ///
39462    ///     <p>This attribute specifies the URI of an external script; this can be used as an alternative to embedding a script directly within a document.</p>
39463    ///   
39464    pub src: core::option::Option<AttributeValueOwned>,
39465    ///
39466    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
39467    ///   
39468    pub style: core::option::Option<AttributeValueOwned>,
39469    ///
39470    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
39471    ///     <ul>
39472    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
39473    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
39474    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
39475    ///     </ul>
39476    ///   
39477    pub tabindex: core::option::Option<AttributeValueOwned>,
39478    ///
39479    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
39480    ///   
39481    pub title: core::option::Option<AttributeValueOwned>,
39482    ///
39483    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
39484    ///     <ul>
39485    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
39486    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
39487    ///     </ul>
39488    ///   
39489    pub translate: core::option::Option<AttributeValueOwned>,
39490    ///
39491    ///     <p>
39492    ///       This attribute indicates the type of script represented.
39493    ///       The value of this attribute will be one of the following:
39494    ///     </p>
39495    ///     <dl>
39496    ///       <dt id="attribute_is_not_set_default_an_empty_string_or_a_javascript_mime_type"><strong>Attribute is not set (default), an empty string, or a JavaScript MIME type</strong></dt>
39497    ///       <dd>
39498    ///         <p>
39499    ///           Indicates that the script is a "classic script", containing JavaScript code.
39500    ///           Authors are encouraged to omit the attribute if the script refers to JavaScript code rather than specify a MIME type.
39501    ///           JavaScript MIME types are <a href="/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types#textjavascript">listed in the IANA media types specification</a>.
39502    ///         </p>
39503    ///       </dd>
39504    ///       <dt id="module"><code>module</code></dt>
39505    ///       <dd>
39506    ///         <p>
39507    ///           This value causes the code to be treated as a JavaScript module.
39508    ///           The processing of the script contents is deferred.
39509    ///           The <code>charset</code> and <code>defer</code> attributes have no effect.
39510    ///           For information on using <code>module</code>, see our <a href="/en-US/docs/Web/JavaScript/Guide/Modules">JavaScript modules</a> guide.
39511    ///           Unlike classic scripts, module scripts require the use of the CORS protocol for cross-origin fetching.
39512    ///         </p>
39513    ///       </dd>
39514    ///       <dt id="importmap"><a href="/en-US/docs/Web/HTML/Element/script/type/importmap"><code>importmap</code></a></dt>
39515    ///       <dd>
39516    ///         <p>
39517    ///           This value indicates that the body of the element contains an import map.
39518    ///           The import map is a JSON object that developers can use to control how the browser resolves module specifiers when importing <a href="/en-US/docs/Web/JavaScript/Guide/Modules#importing_modules_using_import_maps">JavaScript modules</a>.
39519    ///         </p>
39520    ///       </dd>
39521    ///       <dt id="any_other_value"><strong>Any other value</strong></dt>
39522    ///       <dd>
39523    ///         <p>
39524    ///           The embedded content is treated as a data block, and won't be processed by the browser.
39525    ///           Developers must use a valid MIME type that is not a JavaScript MIME type to denote data blocks.
39526    ///           All of the other attributes will be ignored, including the <code>src</code> attribute.
39527    ///         </p>
39528    ///       </dd>
39529    ///     </dl>
39530    ///   
39531    pub type_: core::option::Option<AttributeValueOwned>,
39532    ///
39533    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
39534    ///     <ul>
39535    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
39536    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
39537    ///     </ul>
39538    ///   
39539    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
39540}
39541#[allow(deprecated)]
39542#[cfg(feature = "alloc")]
39543impl ScriptOwned {
39544    /// Get the tag name of the element.
39545    /// This is the same as the name of the struct, in kebab-case.
39546    pub fn tag() -> &'static str {
39547        "script"
39548    }
39549    /// Sets an attribute of the element.
39550    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
39551    /// If the `alloc` feature is disabled, this function will silently fail.
39552    ///
39553    /// # Note
39554    /// This only works when the attribute is lowercase.
39555    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
39556        match name {
39557            "accesskey" => self.accesskey = Some(value.into()),
39558            "async_" => self.async_ = Some(value.into()),
39559            "autocapitalize" => self.autocapitalize = Some(value.into()),
39560            "autofocus" => self.autofocus = Some(value.into()),
39561            "blocking" => self.blocking = Some(value.into()),
39562            "class" => self.class = Some(value.into()),
39563            "contenteditable" => self.contenteditable = Some(value.into()),
39564            "contextmenu" => self.contextmenu = Some(value.into()),
39565            "crossorigin" => self.crossorigin = Some(value.into()),
39566            "defer" => self.defer = Some(value.into()),
39567            "dir" => self.dir = Some(value.into()),
39568            "draggable" => self.draggable = Some(value.into()),
39569            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
39570            "exportparts" => self.exportparts = Some(value.into()),
39571            "fetchpriority" => self.fetchpriority = Some(value.into()),
39572            "hidden" => self.hidden = Some(value.into()),
39573            "id" => self.id = Some(value.into()),
39574            "inert" => self.inert = Some(value.into()),
39575            "inputmode" => self.inputmode = Some(value.into()),
39576            "integrity" => self.integrity = Some(value.into()),
39577            "is" => self.is = Some(value.into()),
39578            "itemid" => self.itemid = Some(value.into()),
39579            "itemprop" => self.itemprop = Some(value.into()),
39580            "itemref" => self.itemref = Some(value.into()),
39581            "itemscope" => self.itemscope = Some(value.into()),
39582            "itemtype" => self.itemtype = Some(value.into()),
39583            "lang" => self.lang = Some(value.into()),
39584            "nomodule" => self.nomodule = Some(value.into()),
39585            "nonce" => self.nonce = Some(value.into()),
39586            "part" => self.part = Some(value.into()),
39587            "popover" => self.popover = Some(value.into()),
39588            "referrerpolicy" => self.referrerpolicy = Some(value.into()),
39589            "role" => self.role = Some(value.into()),
39590            "slot" => self.slot = Some(value.into()),
39591            "spellcheck" => self.spellcheck = Some(value.into()),
39592            "src" => self.src = Some(value.into()),
39593            "style" => self.style = Some(value.into()),
39594            "tabindex" => self.tabindex = Some(value.into()),
39595            "title" => self.title = Some(value.into()),
39596            "translate" => self.translate = Some(value.into()),
39597            "type_" => self.type_ = Some(value.into()),
39598            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
39599            #[cfg(feature = "alloc")]
39600            _ => {
39601                #[allow(clippy::useless_conversion)]
39602                self.extra.insert(name.into(), value.into());
39603            }
39604            #[cfg(not(feature = "alloc"))]
39605            _ => {}
39606        }
39607    }
39608}
39609/// The <strong><code>&lt;del&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents a range of text that has been deleted from a document. This can be used when rendering "track changes" or source code diff information, for example. The <a href="/en-US/docs/Web/HTML/Element/ins"><code>&lt;ins&gt;</code></a> element can be used for the opposite purpose: to indicate text that has been added to the document.
39610///
39611/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/del>
39612
39613#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
39614pub struct Del<'life> {
39615    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
39616    ///   
39617    pub accesskey: core::option::Option<AttributeValue<'life>>,
39618    ///
39619    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
39620    ///     <ul>
39621    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
39622    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
39623    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
39624    ///       <li><code>characters</code>, all letters should default to uppercase</li>
39625    ///     </ul>
39626    ///   
39627    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
39628    ///
39629    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
39630    ///   
39631    pub autofocus: core::option::Option<AttributeValue<'life>>,
39632    ///
39633    ///     <p>A URI for a resource that explains the change (for example, meeting minutes).</p>
39634    ///   
39635    pub cite: core::option::Option<AttributeValue<'life>>,
39636    ///
39637    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
39638    ///   
39639    pub class: core::option::Option<AttributeValue<'life>>,
39640    ///
39641    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
39642    ///     <ul>
39643    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
39644    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
39645    ///     </ul>
39646    ///   
39647    pub contenteditable: core::option::Option<AttributeValue<'life>>,
39648    ///
39649    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
39650    ///   
39651    pub contextmenu: core::option::Option<AttributeValue<'life>>,
39652    ///
39653    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
39654    ///   
39655    #[cfg(feature = "alloc")]
39656    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
39657    ///
39658    ///     <p>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 <a href="/en-US/docs/Web/HTML/Date_and_time_formats#date_strings">Date strings</a>. The format of the string if it includes both date and time is covered in <a href="/en-US/docs/Web/HTML/Date_and_time_formats#local_date_and_time_strings">Local date and time strings</a>.</p>
39659    ///   
39660    pub datetime: core::option::Option<AttributeValue<'life>>,
39661    ///
39662    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
39663    ///     <ul>
39664    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
39665    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
39666    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
39667    ///     </ul>
39668    ///   
39669    pub dir: core::option::Option<AttributeValue<'life>>,
39670    ///
39671    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
39672    ///     <ul>
39673    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
39674    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
39675    ///     </ul>
39676    ///   
39677    pub draggable: core::option::Option<AttributeValue<'life>>,
39678    ///
39679    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
39680    ///   
39681    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
39682    ///
39683    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
39684    ///   
39685    pub exportparts: core::option::Option<AttributeValue<'life>>,
39686    /// /// Extra attributes of the element.
39687
39688    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
39689    #[cfg(feature = "alloc")]
39690    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
39691    ///
39692    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
39693    ///   
39694    pub hidden: core::option::Option<AttributeValue<'life>>,
39695    ///
39696    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
39697    ///   
39698    pub id: core::option::Option<AttributeValue<'life>>,
39699    ///
39700    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
39701    ///   
39702    pub inert: core::option::Option<AttributeValue<'life>>,
39703    ///
39704    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
39705    ///   
39706    pub inputmode: core::option::Option<AttributeValue<'life>>,
39707    ///
39708    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
39709    ///   
39710    pub is: core::option::Option<AttributeValue<'life>>,
39711    ///
39712    ///     <p>The unique, global identifier of an item.</p>
39713    ///   
39714    pub itemid: core::option::Option<AttributeValue<'life>>,
39715    ///
39716    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
39717    ///   
39718    pub itemprop: core::option::Option<AttributeValue<'life>>,
39719    ///
39720    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
39721    ///   
39722    pub itemref: core::option::Option<AttributeValue<'life>>,
39723    ///
39724    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
39725    ///   
39726    pub itemscope: core::option::Option<AttributeValue<'life>>,
39727    ///
39728    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
39729    ///   
39730    pub itemtype: core::option::Option<AttributeValue<'life>>,
39731    ///
39732    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
39733    ///   
39734    pub lang: core::option::Option<AttributeValue<'life>>,
39735    ///
39736    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
39737    ///   
39738    pub nonce: core::option::Option<AttributeValue<'life>>,
39739    ///
39740    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
39741    ///   
39742    pub part: core::option::Option<AttributeValue<'life>>,
39743    ///
39744    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
39745    ///   
39746    pub popover: core::option::Option<AttributeValue<'life>>,
39747    ///
39748    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
39749    ///   
39750    pub role: core::option::Option<AttributeValue<'life>>,
39751    ///
39752    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
39753    ///   
39754    pub slot: core::option::Option<AttributeValue<'life>>,
39755    ///
39756    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
39757    ///     <ul>
39758    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
39759    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
39760    ///     </ul>
39761    ///   
39762    pub spellcheck: core::option::Option<AttributeValue<'life>>,
39763    ///
39764    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
39765    ///   
39766    pub style: core::option::Option<AttributeValue<'life>>,
39767    ///
39768    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
39769    ///     <ul>
39770    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
39771    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
39772    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
39773    ///     </ul>
39774    ///   
39775    pub tabindex: core::option::Option<AttributeValue<'life>>,
39776    ///
39777    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
39778    ///   
39779    pub title: core::option::Option<AttributeValue<'life>>,
39780    ///
39781    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
39782    ///     <ul>
39783    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
39784    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
39785    ///     </ul>
39786    ///   
39787    pub translate: core::option::Option<AttributeValue<'life>>,
39788    ///
39789    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
39790    ///     <ul>
39791    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
39792    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
39793    ///     </ul>
39794    ///   
39795    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
39796}
39797#[allow(deprecated)]
39798
39799impl<'life> Del<'life> {
39800    /// Get the tag name of the element.
39801    /// This is the same as the name of the struct, in kebab-case.
39802    pub fn tag() -> &'static str {
39803        "del"
39804    }
39805    /// Sets an attribute of the element.
39806    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
39807    /// If the `alloc` feature is disabled, this function will silently fail.
39808    ///
39809    /// # Note
39810    /// This only works when the attribute is lowercase.
39811    pub fn set_attr(
39812        &mut self,
39813        name: &'life str,
39814        value: impl core::convert::Into<AttributeValue<'life>>,
39815    ) {
39816        match name {
39817            "accesskey" => self.accesskey = Some(value.into()),
39818            "autocapitalize" => self.autocapitalize = Some(value.into()),
39819            "autofocus" => self.autofocus = Some(value.into()),
39820            "cite" => self.cite = Some(value.into()),
39821            "class" => self.class = Some(value.into()),
39822            "contenteditable" => self.contenteditable = Some(value.into()),
39823            "contextmenu" => self.contextmenu = Some(value.into()),
39824            "datetime" => self.datetime = Some(value.into()),
39825            "dir" => self.dir = Some(value.into()),
39826            "draggable" => self.draggable = Some(value.into()),
39827            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
39828            "exportparts" => self.exportparts = Some(value.into()),
39829            "hidden" => self.hidden = Some(value.into()),
39830            "id" => self.id = Some(value.into()),
39831            "inert" => self.inert = Some(value.into()),
39832            "inputmode" => self.inputmode = Some(value.into()),
39833            "is" => self.is = Some(value.into()),
39834            "itemid" => self.itemid = Some(value.into()),
39835            "itemprop" => self.itemprop = Some(value.into()),
39836            "itemref" => self.itemref = Some(value.into()),
39837            "itemscope" => self.itemscope = Some(value.into()),
39838            "itemtype" => self.itemtype = Some(value.into()),
39839            "lang" => self.lang = Some(value.into()),
39840            "nonce" => self.nonce = Some(value.into()),
39841            "part" => self.part = Some(value.into()),
39842            "popover" => self.popover = Some(value.into()),
39843            "role" => self.role = Some(value.into()),
39844            "slot" => self.slot = Some(value.into()),
39845            "spellcheck" => self.spellcheck = Some(value.into()),
39846            "style" => self.style = Some(value.into()),
39847            "tabindex" => self.tabindex = Some(value.into()),
39848            "title" => self.title = Some(value.into()),
39849            "translate" => self.translate = Some(value.into()),
39850            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
39851            #[cfg(feature = "alloc")]
39852            _ => {
39853                #[allow(clippy::useless_conversion)]
39854                self.extra.insert(name.into(), value.into());
39855            }
39856            #[cfg(not(feature = "alloc"))]
39857            _ => {}
39858        }
39859    }
39860}
39861/// The <strong><code>&lt;del&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents a range of text that has been deleted from a document. This can be used when rendering "track changes" or source code diff information, for example. The <a href="/en-US/docs/Web/HTML/Element/ins"><code>&lt;ins&gt;</code></a> element can be used for the opposite purpose: to indicate text that has been added to the document.
39862///
39863/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/del>
39864
39865#[cfg(feature = "alloc")]
39866#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
39867pub struct DelOwned {
39868    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
39869    ///   
39870    pub accesskey: core::option::Option<AttributeValueOwned>,
39871    ///
39872    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
39873    ///     <ul>
39874    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
39875    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
39876    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
39877    ///       <li><code>characters</code>, all letters should default to uppercase</li>
39878    ///     </ul>
39879    ///   
39880    pub autocapitalize: core::option::Option<AttributeValueOwned>,
39881    ///
39882    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
39883    ///   
39884    pub autofocus: core::option::Option<AttributeValueOwned>,
39885    ///
39886    ///     <p>A URI for a resource that explains the change (for example, meeting minutes).</p>
39887    ///   
39888    pub cite: core::option::Option<AttributeValueOwned>,
39889    ///
39890    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
39891    ///   
39892    pub class: core::option::Option<AttributeValueOwned>,
39893    ///
39894    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
39895    ///     <ul>
39896    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
39897    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
39898    ///     </ul>
39899    ///   
39900    pub contenteditable: core::option::Option<AttributeValueOwned>,
39901    ///
39902    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
39903    ///   
39904    pub contextmenu: core::option::Option<AttributeValueOwned>,
39905    ///
39906    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
39907    ///   
39908    #[cfg(feature = "alloc")]
39909    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
39910    ///
39911    ///     <p>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 <a href="/en-US/docs/Web/HTML/Date_and_time_formats#date_strings">Date strings</a>. The format of the string if it includes both date and time is covered in <a href="/en-US/docs/Web/HTML/Date_and_time_formats#local_date_and_time_strings">Local date and time strings</a>.</p>
39912    ///   
39913    pub datetime: core::option::Option<AttributeValueOwned>,
39914    ///
39915    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
39916    ///     <ul>
39917    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
39918    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
39919    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
39920    ///     </ul>
39921    ///   
39922    pub dir: core::option::Option<AttributeValueOwned>,
39923    ///
39924    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
39925    ///     <ul>
39926    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
39927    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
39928    ///     </ul>
39929    ///   
39930    pub draggable: core::option::Option<AttributeValueOwned>,
39931    ///
39932    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
39933    ///   
39934    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
39935    ///
39936    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
39937    ///   
39938    pub exportparts: core::option::Option<AttributeValueOwned>,
39939    /// /// Extra attributes of the element.
39940
39941    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
39942    #[cfg(feature = "alloc")]
39943    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
39944    ///
39945    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
39946    ///   
39947    pub hidden: core::option::Option<AttributeValueOwned>,
39948    ///
39949    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
39950    ///   
39951    pub id: core::option::Option<AttributeValueOwned>,
39952    ///
39953    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
39954    ///   
39955    pub inert: core::option::Option<AttributeValueOwned>,
39956    ///
39957    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
39958    ///   
39959    pub inputmode: core::option::Option<AttributeValueOwned>,
39960    ///
39961    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
39962    ///   
39963    pub is: core::option::Option<AttributeValueOwned>,
39964    ///
39965    ///     <p>The unique, global identifier of an item.</p>
39966    ///   
39967    pub itemid: core::option::Option<AttributeValueOwned>,
39968    ///
39969    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
39970    ///   
39971    pub itemprop: core::option::Option<AttributeValueOwned>,
39972    ///
39973    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
39974    ///   
39975    pub itemref: core::option::Option<AttributeValueOwned>,
39976    ///
39977    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
39978    ///   
39979    pub itemscope: core::option::Option<AttributeValueOwned>,
39980    ///
39981    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
39982    ///   
39983    pub itemtype: core::option::Option<AttributeValueOwned>,
39984    ///
39985    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
39986    ///   
39987    pub lang: core::option::Option<AttributeValueOwned>,
39988    ///
39989    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
39990    ///   
39991    pub nonce: core::option::Option<AttributeValueOwned>,
39992    ///
39993    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
39994    ///   
39995    pub part: core::option::Option<AttributeValueOwned>,
39996    ///
39997    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
39998    ///   
39999    pub popover: core::option::Option<AttributeValueOwned>,
40000    ///
40001    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
40002    ///   
40003    pub role: core::option::Option<AttributeValueOwned>,
40004    ///
40005    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
40006    ///   
40007    pub slot: core::option::Option<AttributeValueOwned>,
40008    ///
40009    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
40010    ///     <ul>
40011    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
40012    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
40013    ///     </ul>
40014    ///   
40015    pub spellcheck: core::option::Option<AttributeValueOwned>,
40016    ///
40017    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
40018    ///   
40019    pub style: core::option::Option<AttributeValueOwned>,
40020    ///
40021    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
40022    ///     <ul>
40023    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
40024    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
40025    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
40026    ///     </ul>
40027    ///   
40028    pub tabindex: core::option::Option<AttributeValueOwned>,
40029    ///
40030    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
40031    ///   
40032    pub title: core::option::Option<AttributeValueOwned>,
40033    ///
40034    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
40035    ///     <ul>
40036    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
40037    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
40038    ///     </ul>
40039    ///   
40040    pub translate: core::option::Option<AttributeValueOwned>,
40041    ///
40042    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
40043    ///     <ul>
40044    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
40045    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
40046    ///     </ul>
40047    ///   
40048    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
40049}
40050#[allow(deprecated)]
40051#[cfg(feature = "alloc")]
40052impl DelOwned {
40053    /// Get the tag name of the element.
40054    /// This is the same as the name of the struct, in kebab-case.
40055    pub fn tag() -> &'static str {
40056        "del"
40057    }
40058    /// Sets an attribute of the element.
40059    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
40060    /// If the `alloc` feature is disabled, this function will silently fail.
40061    ///
40062    /// # Note
40063    /// This only works when the attribute is lowercase.
40064    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
40065        match name {
40066            "accesskey" => self.accesskey = Some(value.into()),
40067            "autocapitalize" => self.autocapitalize = Some(value.into()),
40068            "autofocus" => self.autofocus = Some(value.into()),
40069            "cite" => self.cite = Some(value.into()),
40070            "class" => self.class = Some(value.into()),
40071            "contenteditable" => self.contenteditable = Some(value.into()),
40072            "contextmenu" => self.contextmenu = Some(value.into()),
40073            "datetime" => self.datetime = Some(value.into()),
40074            "dir" => self.dir = Some(value.into()),
40075            "draggable" => self.draggable = Some(value.into()),
40076            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
40077            "exportparts" => self.exportparts = Some(value.into()),
40078            "hidden" => self.hidden = Some(value.into()),
40079            "id" => self.id = Some(value.into()),
40080            "inert" => self.inert = Some(value.into()),
40081            "inputmode" => self.inputmode = Some(value.into()),
40082            "is" => self.is = Some(value.into()),
40083            "itemid" => self.itemid = Some(value.into()),
40084            "itemprop" => self.itemprop = Some(value.into()),
40085            "itemref" => self.itemref = Some(value.into()),
40086            "itemscope" => self.itemscope = Some(value.into()),
40087            "itemtype" => self.itemtype = Some(value.into()),
40088            "lang" => self.lang = Some(value.into()),
40089            "nonce" => self.nonce = Some(value.into()),
40090            "part" => self.part = Some(value.into()),
40091            "popover" => self.popover = Some(value.into()),
40092            "role" => self.role = Some(value.into()),
40093            "slot" => self.slot = Some(value.into()),
40094            "spellcheck" => self.spellcheck = Some(value.into()),
40095            "style" => self.style = Some(value.into()),
40096            "tabindex" => self.tabindex = Some(value.into()),
40097            "title" => self.title = Some(value.into()),
40098            "translate" => self.translate = Some(value.into()),
40099            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
40100            #[cfg(feature = "alloc")]
40101            _ => {
40102                #[allow(clippy::useless_conversion)]
40103                self.extra.insert(name.into(), value.into());
40104            }
40105            #[cfg(not(feature = "alloc"))]
40106            _ => {}
40107        }
40108    }
40109}
40110/// The <strong><code>&lt;ins&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents a range of text that has been added to a document. You can use the <a href="/en-US/docs/Web/HTML/Element/del"><code>&lt;del&gt;</code></a> element to similarly represent a range of text that has been deleted from the document.
40111///
40112/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ins>
40113
40114#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
40115pub struct Ins<'life> {
40116    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
40117    ///   
40118    pub accesskey: core::option::Option<AttributeValue<'life>>,
40119    ///
40120    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
40121    ///     <ul>
40122    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
40123    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
40124    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
40125    ///       <li><code>characters</code>, all letters should default to uppercase</li>
40126    ///     </ul>
40127    ///   
40128    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
40129    ///
40130    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
40131    ///   
40132    pub autofocus: core::option::Option<AttributeValue<'life>>,
40133    ///
40134    ///     <p>This attribute defines the URI of a resource that explains the change, such as a link to meeting minutes or a ticket in a troubleshooting system.</p>
40135    ///   
40136    pub cite: core::option::Option<AttributeValue<'life>>,
40137    ///
40138    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
40139    ///   
40140    pub class: core::option::Option<AttributeValue<'life>>,
40141    ///
40142    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
40143    ///     <ul>
40144    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
40145    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
40146    ///     </ul>
40147    ///   
40148    pub contenteditable: core::option::Option<AttributeValue<'life>>,
40149    ///
40150    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
40151    ///   
40152    pub contextmenu: core::option::Option<AttributeValue<'life>>,
40153    ///
40154    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
40155    ///   
40156    #[cfg(feature = "alloc")]
40157    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
40158    ///
40159    ///     <p>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 <a href="/en-US/docs/Web/HTML/Date_and_time_formats#date_strings">Format of a valid date string</a>. The format of the string if it includes both date and time is covered in <a href="/en-US/docs/Web/HTML/Date_and_time_formats#local_date_and_time_strings">Format of a valid local date and time string</a>.</p>
40160    ///   
40161    pub datetime: core::option::Option<AttributeValue<'life>>,
40162    ///
40163    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
40164    ///     <ul>
40165    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
40166    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
40167    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
40168    ///     </ul>
40169    ///   
40170    pub dir: core::option::Option<AttributeValue<'life>>,
40171    ///
40172    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
40173    ///     <ul>
40174    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
40175    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
40176    ///     </ul>
40177    ///   
40178    pub draggable: core::option::Option<AttributeValue<'life>>,
40179    ///
40180    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
40181    ///   
40182    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
40183    ///
40184    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
40185    ///   
40186    pub exportparts: core::option::Option<AttributeValue<'life>>,
40187    /// /// Extra attributes of the element.
40188
40189    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
40190    #[cfg(feature = "alloc")]
40191    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
40192    ///
40193    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
40194    ///   
40195    pub hidden: core::option::Option<AttributeValue<'life>>,
40196    ///
40197    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
40198    ///   
40199    pub id: core::option::Option<AttributeValue<'life>>,
40200    ///
40201    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
40202    ///   
40203    pub inert: core::option::Option<AttributeValue<'life>>,
40204    ///
40205    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
40206    ///   
40207    pub inputmode: core::option::Option<AttributeValue<'life>>,
40208    ///
40209    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
40210    ///   
40211    pub is: core::option::Option<AttributeValue<'life>>,
40212    ///
40213    ///     <p>The unique, global identifier of an item.</p>
40214    ///   
40215    pub itemid: core::option::Option<AttributeValue<'life>>,
40216    ///
40217    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
40218    ///   
40219    pub itemprop: core::option::Option<AttributeValue<'life>>,
40220    ///
40221    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
40222    ///   
40223    pub itemref: core::option::Option<AttributeValue<'life>>,
40224    ///
40225    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
40226    ///   
40227    pub itemscope: core::option::Option<AttributeValue<'life>>,
40228    ///
40229    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
40230    ///   
40231    pub itemtype: core::option::Option<AttributeValue<'life>>,
40232    ///
40233    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
40234    ///   
40235    pub lang: core::option::Option<AttributeValue<'life>>,
40236    ///
40237    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
40238    ///   
40239    pub nonce: core::option::Option<AttributeValue<'life>>,
40240    ///
40241    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
40242    ///   
40243    pub part: core::option::Option<AttributeValue<'life>>,
40244    ///
40245    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
40246    ///   
40247    pub popover: core::option::Option<AttributeValue<'life>>,
40248    ///
40249    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
40250    ///   
40251    pub role: core::option::Option<AttributeValue<'life>>,
40252    ///
40253    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
40254    ///   
40255    pub slot: core::option::Option<AttributeValue<'life>>,
40256    ///
40257    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
40258    ///     <ul>
40259    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
40260    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
40261    ///     </ul>
40262    ///   
40263    pub spellcheck: core::option::Option<AttributeValue<'life>>,
40264    ///
40265    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
40266    ///   
40267    pub style: core::option::Option<AttributeValue<'life>>,
40268    ///
40269    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
40270    ///     <ul>
40271    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
40272    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
40273    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
40274    ///     </ul>
40275    ///   
40276    pub tabindex: core::option::Option<AttributeValue<'life>>,
40277    ///
40278    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
40279    ///   
40280    pub title: core::option::Option<AttributeValue<'life>>,
40281    ///
40282    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
40283    ///     <ul>
40284    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
40285    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
40286    ///     </ul>
40287    ///   
40288    pub translate: core::option::Option<AttributeValue<'life>>,
40289    ///
40290    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
40291    ///     <ul>
40292    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
40293    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
40294    ///     </ul>
40295    ///   
40296    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
40297}
40298#[allow(deprecated)]
40299
40300impl<'life> Ins<'life> {
40301    /// Get the tag name of the element.
40302    /// This is the same as the name of the struct, in kebab-case.
40303    pub fn tag() -> &'static str {
40304        "ins"
40305    }
40306    /// Sets an attribute of the element.
40307    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
40308    /// If the `alloc` feature is disabled, this function will silently fail.
40309    ///
40310    /// # Note
40311    /// This only works when the attribute is lowercase.
40312    pub fn set_attr(
40313        &mut self,
40314        name: &'life str,
40315        value: impl core::convert::Into<AttributeValue<'life>>,
40316    ) {
40317        match name {
40318            "accesskey" => self.accesskey = Some(value.into()),
40319            "autocapitalize" => self.autocapitalize = Some(value.into()),
40320            "autofocus" => self.autofocus = Some(value.into()),
40321            "cite" => self.cite = Some(value.into()),
40322            "class" => self.class = Some(value.into()),
40323            "contenteditable" => self.contenteditable = Some(value.into()),
40324            "contextmenu" => self.contextmenu = Some(value.into()),
40325            "datetime" => self.datetime = Some(value.into()),
40326            "dir" => self.dir = Some(value.into()),
40327            "draggable" => self.draggable = Some(value.into()),
40328            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
40329            "exportparts" => self.exportparts = Some(value.into()),
40330            "hidden" => self.hidden = Some(value.into()),
40331            "id" => self.id = Some(value.into()),
40332            "inert" => self.inert = Some(value.into()),
40333            "inputmode" => self.inputmode = Some(value.into()),
40334            "is" => self.is = Some(value.into()),
40335            "itemid" => self.itemid = Some(value.into()),
40336            "itemprop" => self.itemprop = Some(value.into()),
40337            "itemref" => self.itemref = Some(value.into()),
40338            "itemscope" => self.itemscope = Some(value.into()),
40339            "itemtype" => self.itemtype = Some(value.into()),
40340            "lang" => self.lang = Some(value.into()),
40341            "nonce" => self.nonce = Some(value.into()),
40342            "part" => self.part = Some(value.into()),
40343            "popover" => self.popover = Some(value.into()),
40344            "role" => self.role = Some(value.into()),
40345            "slot" => self.slot = Some(value.into()),
40346            "spellcheck" => self.spellcheck = Some(value.into()),
40347            "style" => self.style = Some(value.into()),
40348            "tabindex" => self.tabindex = Some(value.into()),
40349            "title" => self.title = Some(value.into()),
40350            "translate" => self.translate = Some(value.into()),
40351            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
40352            #[cfg(feature = "alloc")]
40353            _ => {
40354                #[allow(clippy::useless_conversion)]
40355                self.extra.insert(name.into(), value.into());
40356            }
40357            #[cfg(not(feature = "alloc"))]
40358            _ => {}
40359        }
40360    }
40361}
40362/// The <strong><code>&lt;ins&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents a range of text that has been added to a document. You can use the <a href="/en-US/docs/Web/HTML/Element/del"><code>&lt;del&gt;</code></a> element to similarly represent a range of text that has been deleted from the document.
40363///
40364/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ins>
40365
40366#[cfg(feature = "alloc")]
40367#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
40368pub struct InsOwned {
40369    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
40370    ///   
40371    pub accesskey: core::option::Option<AttributeValueOwned>,
40372    ///
40373    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
40374    ///     <ul>
40375    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
40376    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
40377    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
40378    ///       <li><code>characters</code>, all letters should default to uppercase</li>
40379    ///     </ul>
40380    ///   
40381    pub autocapitalize: core::option::Option<AttributeValueOwned>,
40382    ///
40383    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
40384    ///   
40385    pub autofocus: core::option::Option<AttributeValueOwned>,
40386    ///
40387    ///     <p>This attribute defines the URI of a resource that explains the change, such as a link to meeting minutes or a ticket in a troubleshooting system.</p>
40388    ///   
40389    pub cite: core::option::Option<AttributeValueOwned>,
40390    ///
40391    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
40392    ///   
40393    pub class: core::option::Option<AttributeValueOwned>,
40394    ///
40395    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
40396    ///     <ul>
40397    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
40398    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
40399    ///     </ul>
40400    ///   
40401    pub contenteditable: core::option::Option<AttributeValueOwned>,
40402    ///
40403    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
40404    ///   
40405    pub contextmenu: core::option::Option<AttributeValueOwned>,
40406    ///
40407    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
40408    ///   
40409    #[cfg(feature = "alloc")]
40410    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
40411    ///
40412    ///     <p>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 <a href="/en-US/docs/Web/HTML/Date_and_time_formats#date_strings">Format of a valid date string</a>. The format of the string if it includes both date and time is covered in <a href="/en-US/docs/Web/HTML/Date_and_time_formats#local_date_and_time_strings">Format of a valid local date and time string</a>.</p>
40413    ///   
40414    pub datetime: core::option::Option<AttributeValueOwned>,
40415    ///
40416    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
40417    ///     <ul>
40418    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
40419    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
40420    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
40421    ///     </ul>
40422    ///   
40423    pub dir: core::option::Option<AttributeValueOwned>,
40424    ///
40425    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
40426    ///     <ul>
40427    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
40428    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
40429    ///     </ul>
40430    ///   
40431    pub draggable: core::option::Option<AttributeValueOwned>,
40432    ///
40433    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
40434    ///   
40435    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
40436    ///
40437    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
40438    ///   
40439    pub exportparts: core::option::Option<AttributeValueOwned>,
40440    /// /// Extra attributes of the element.
40441
40442    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
40443    #[cfg(feature = "alloc")]
40444    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
40445    ///
40446    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
40447    ///   
40448    pub hidden: core::option::Option<AttributeValueOwned>,
40449    ///
40450    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
40451    ///   
40452    pub id: core::option::Option<AttributeValueOwned>,
40453    ///
40454    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
40455    ///   
40456    pub inert: core::option::Option<AttributeValueOwned>,
40457    ///
40458    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
40459    ///   
40460    pub inputmode: core::option::Option<AttributeValueOwned>,
40461    ///
40462    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
40463    ///   
40464    pub is: core::option::Option<AttributeValueOwned>,
40465    ///
40466    ///     <p>The unique, global identifier of an item.</p>
40467    ///   
40468    pub itemid: core::option::Option<AttributeValueOwned>,
40469    ///
40470    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
40471    ///   
40472    pub itemprop: core::option::Option<AttributeValueOwned>,
40473    ///
40474    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
40475    ///   
40476    pub itemref: core::option::Option<AttributeValueOwned>,
40477    ///
40478    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
40479    ///   
40480    pub itemscope: core::option::Option<AttributeValueOwned>,
40481    ///
40482    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
40483    ///   
40484    pub itemtype: core::option::Option<AttributeValueOwned>,
40485    ///
40486    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
40487    ///   
40488    pub lang: core::option::Option<AttributeValueOwned>,
40489    ///
40490    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
40491    ///   
40492    pub nonce: core::option::Option<AttributeValueOwned>,
40493    ///
40494    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
40495    ///   
40496    pub part: core::option::Option<AttributeValueOwned>,
40497    ///
40498    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
40499    ///   
40500    pub popover: core::option::Option<AttributeValueOwned>,
40501    ///
40502    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
40503    ///   
40504    pub role: core::option::Option<AttributeValueOwned>,
40505    ///
40506    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
40507    ///   
40508    pub slot: core::option::Option<AttributeValueOwned>,
40509    ///
40510    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
40511    ///     <ul>
40512    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
40513    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
40514    ///     </ul>
40515    ///   
40516    pub spellcheck: core::option::Option<AttributeValueOwned>,
40517    ///
40518    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
40519    ///   
40520    pub style: core::option::Option<AttributeValueOwned>,
40521    ///
40522    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
40523    ///     <ul>
40524    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
40525    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
40526    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
40527    ///     </ul>
40528    ///   
40529    pub tabindex: core::option::Option<AttributeValueOwned>,
40530    ///
40531    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
40532    ///   
40533    pub title: core::option::Option<AttributeValueOwned>,
40534    ///
40535    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
40536    ///     <ul>
40537    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
40538    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
40539    ///     </ul>
40540    ///   
40541    pub translate: core::option::Option<AttributeValueOwned>,
40542    ///
40543    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
40544    ///     <ul>
40545    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
40546    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
40547    ///     </ul>
40548    ///   
40549    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
40550}
40551#[allow(deprecated)]
40552#[cfg(feature = "alloc")]
40553impl InsOwned {
40554    /// Get the tag name of the element.
40555    /// This is the same as the name of the struct, in kebab-case.
40556    pub fn tag() -> &'static str {
40557        "ins"
40558    }
40559    /// Sets an attribute of the element.
40560    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
40561    /// If the `alloc` feature is disabled, this function will silently fail.
40562    ///
40563    /// # Note
40564    /// This only works when the attribute is lowercase.
40565    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
40566        match name {
40567            "accesskey" => self.accesskey = Some(value.into()),
40568            "autocapitalize" => self.autocapitalize = Some(value.into()),
40569            "autofocus" => self.autofocus = Some(value.into()),
40570            "cite" => self.cite = Some(value.into()),
40571            "class" => self.class = Some(value.into()),
40572            "contenteditable" => self.contenteditable = Some(value.into()),
40573            "contextmenu" => self.contextmenu = Some(value.into()),
40574            "datetime" => self.datetime = Some(value.into()),
40575            "dir" => self.dir = Some(value.into()),
40576            "draggable" => self.draggable = Some(value.into()),
40577            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
40578            "exportparts" => self.exportparts = Some(value.into()),
40579            "hidden" => self.hidden = Some(value.into()),
40580            "id" => self.id = Some(value.into()),
40581            "inert" => self.inert = Some(value.into()),
40582            "inputmode" => self.inputmode = Some(value.into()),
40583            "is" => self.is = Some(value.into()),
40584            "itemid" => self.itemid = Some(value.into()),
40585            "itemprop" => self.itemprop = Some(value.into()),
40586            "itemref" => self.itemref = Some(value.into()),
40587            "itemscope" => self.itemscope = Some(value.into()),
40588            "itemtype" => self.itemtype = Some(value.into()),
40589            "lang" => self.lang = Some(value.into()),
40590            "nonce" => self.nonce = Some(value.into()),
40591            "part" => self.part = Some(value.into()),
40592            "popover" => self.popover = Some(value.into()),
40593            "role" => self.role = Some(value.into()),
40594            "slot" => self.slot = Some(value.into()),
40595            "spellcheck" => self.spellcheck = Some(value.into()),
40596            "style" => self.style = Some(value.into()),
40597            "tabindex" => self.tabindex = Some(value.into()),
40598            "title" => self.title = Some(value.into()),
40599            "translate" => self.translate = Some(value.into()),
40600            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
40601            #[cfg(feature = "alloc")]
40602            _ => {
40603                #[allow(clippy::useless_conversion)]
40604                self.extra.insert(name.into(), value.into());
40605            }
40606            #[cfg(not(feature = "alloc"))]
40607            _ => {}
40608        }
40609    }
40610}
40611/// The <strong><code>&lt;caption&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element specifies the caption (or title) of a table.
40612///
40613/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/caption>
40614
40615#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
40616pub struct Caption<'life> {
40617    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
40618    ///   
40619    pub accesskey: core::option::Option<AttributeValue<'life>>,
40620    ///
40621    ///     <p>This <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicates how the caption must be aligned with respect to the table. It may have one of the following values:</p>
40622    ///     <dl>
40623    ///       <dt id="left"><code>left</code></dt>
40624    ///       <dd>
40625    ///         <p>The caption is displayed to the left of the table.</p>
40626    ///       </dd>
40627    ///       <dt id="top"><code>top</code></dt>
40628    ///       <dd>
40629    ///         <p>The caption is displayed above the table.</p>
40630    ///       </dd>
40631    ///       <dt id="right"><code>right</code></dt>
40632    ///       <dd>
40633    ///         <p>The caption is displayed to the right of the table.</p>
40634    ///       </dd>
40635    ///       <dt id="bottom"><code>bottom</code></dt>
40636    ///       <dd>
40637    ///         <p>The caption is displayed below the table.</p>
40638    ///       </dd>
40639    ///     </dl>
40640    ///     <div id="sect1" class="notecard warning">
40641    ///       <p><strong>Warning:</strong> Do not use this attribute, as it has been deprecated. The <a aria-current="page" href="/en-US/docs/Web/HTML/Element/caption"><code>&lt;caption&gt;</code></a> element should be styled using the <a href="/en-US/docs/Web/CSS">CSS</a> properties <a href="/en-US/docs/Web/CSS/caption-side"><code>caption-side</code></a> and <a href="/en-US/docs/Web/CSS/text-align"><code>text-align</code></a>.</p>
40642    ///     </div>
40643    ///   
40644    pub align: core::option::Option<AttributeValue<'life>>,
40645    ///
40646    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
40647    ///     <ul>
40648    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
40649    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
40650    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
40651    ///       <li><code>characters</code>, all letters should default to uppercase</li>
40652    ///     </ul>
40653    ///   
40654    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
40655    ///
40656    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
40657    ///   
40658    pub autofocus: core::option::Option<AttributeValue<'life>>,
40659    ///
40660    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
40661    ///   
40662    pub class: core::option::Option<AttributeValue<'life>>,
40663    ///
40664    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
40665    ///     <ul>
40666    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
40667    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
40668    ///     </ul>
40669    ///   
40670    pub contenteditable: core::option::Option<AttributeValue<'life>>,
40671    ///
40672    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
40673    ///   
40674    pub contextmenu: core::option::Option<AttributeValue<'life>>,
40675    ///
40676    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
40677    ///   
40678    #[cfg(feature = "alloc")]
40679    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
40680    ///
40681    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
40682    ///     <ul>
40683    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
40684    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
40685    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
40686    ///     </ul>
40687    ///   
40688    pub dir: core::option::Option<AttributeValue<'life>>,
40689    ///
40690    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
40691    ///     <ul>
40692    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
40693    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
40694    ///     </ul>
40695    ///   
40696    pub draggable: core::option::Option<AttributeValue<'life>>,
40697    ///
40698    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
40699    ///   
40700    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
40701    ///
40702    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
40703    ///   
40704    pub exportparts: core::option::Option<AttributeValue<'life>>,
40705    /// /// Extra attributes of the element.
40706
40707    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
40708    #[cfg(feature = "alloc")]
40709    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
40710    ///
40711    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
40712    ///   
40713    pub hidden: core::option::Option<AttributeValue<'life>>,
40714    ///
40715    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
40716    ///   
40717    pub id: core::option::Option<AttributeValue<'life>>,
40718    ///
40719    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
40720    ///   
40721    pub inert: core::option::Option<AttributeValue<'life>>,
40722    ///
40723    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
40724    ///   
40725    pub inputmode: core::option::Option<AttributeValue<'life>>,
40726    ///
40727    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
40728    ///   
40729    pub is: core::option::Option<AttributeValue<'life>>,
40730    ///
40731    ///     <p>The unique, global identifier of an item.</p>
40732    ///   
40733    pub itemid: core::option::Option<AttributeValue<'life>>,
40734    ///
40735    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
40736    ///   
40737    pub itemprop: core::option::Option<AttributeValue<'life>>,
40738    ///
40739    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
40740    ///   
40741    pub itemref: core::option::Option<AttributeValue<'life>>,
40742    ///
40743    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
40744    ///   
40745    pub itemscope: core::option::Option<AttributeValue<'life>>,
40746    ///
40747    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
40748    ///   
40749    pub itemtype: core::option::Option<AttributeValue<'life>>,
40750    ///
40751    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
40752    ///   
40753    pub lang: core::option::Option<AttributeValue<'life>>,
40754    ///
40755    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
40756    ///   
40757    pub nonce: core::option::Option<AttributeValue<'life>>,
40758    ///
40759    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
40760    ///   
40761    pub part: core::option::Option<AttributeValue<'life>>,
40762    ///
40763    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
40764    ///   
40765    pub popover: core::option::Option<AttributeValue<'life>>,
40766    ///
40767    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
40768    ///   
40769    pub role: core::option::Option<AttributeValue<'life>>,
40770    ///
40771    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
40772    ///   
40773    pub slot: core::option::Option<AttributeValue<'life>>,
40774    ///
40775    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
40776    ///     <ul>
40777    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
40778    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
40779    ///     </ul>
40780    ///   
40781    pub spellcheck: core::option::Option<AttributeValue<'life>>,
40782    ///
40783    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
40784    ///   
40785    pub style: core::option::Option<AttributeValue<'life>>,
40786    ///
40787    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
40788    ///     <ul>
40789    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
40790    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
40791    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
40792    ///     </ul>
40793    ///   
40794    pub tabindex: core::option::Option<AttributeValue<'life>>,
40795    ///
40796    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
40797    ///   
40798    pub title: core::option::Option<AttributeValue<'life>>,
40799    ///
40800    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
40801    ///     <ul>
40802    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
40803    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
40804    ///     </ul>
40805    ///   
40806    pub translate: core::option::Option<AttributeValue<'life>>,
40807    ///
40808    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
40809    ///     <ul>
40810    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
40811    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
40812    ///     </ul>
40813    ///   
40814    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
40815}
40816#[allow(deprecated)]
40817
40818impl<'life> Caption<'life> {
40819    /// Get the tag name of the element.
40820    /// This is the same as the name of the struct, in kebab-case.
40821    pub fn tag() -> &'static str {
40822        "caption"
40823    }
40824    /// Sets an attribute of the element.
40825    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
40826    /// If the `alloc` feature is disabled, this function will silently fail.
40827    ///
40828    /// # Note
40829    /// This only works when the attribute is lowercase.
40830    pub fn set_attr(
40831        &mut self,
40832        name: &'life str,
40833        value: impl core::convert::Into<AttributeValue<'life>>,
40834    ) {
40835        match name {
40836            "accesskey" => self.accesskey = Some(value.into()),
40837            "align" => self.align = Some(value.into()),
40838            "autocapitalize" => self.autocapitalize = Some(value.into()),
40839            "autofocus" => self.autofocus = Some(value.into()),
40840            "class" => self.class = Some(value.into()),
40841            "contenteditable" => self.contenteditable = Some(value.into()),
40842            "contextmenu" => self.contextmenu = Some(value.into()),
40843            "dir" => self.dir = Some(value.into()),
40844            "draggable" => self.draggable = Some(value.into()),
40845            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
40846            "exportparts" => self.exportparts = Some(value.into()),
40847            "hidden" => self.hidden = Some(value.into()),
40848            "id" => self.id = Some(value.into()),
40849            "inert" => self.inert = Some(value.into()),
40850            "inputmode" => self.inputmode = Some(value.into()),
40851            "is" => self.is = Some(value.into()),
40852            "itemid" => self.itemid = Some(value.into()),
40853            "itemprop" => self.itemprop = Some(value.into()),
40854            "itemref" => self.itemref = Some(value.into()),
40855            "itemscope" => self.itemscope = Some(value.into()),
40856            "itemtype" => self.itemtype = Some(value.into()),
40857            "lang" => self.lang = Some(value.into()),
40858            "nonce" => self.nonce = Some(value.into()),
40859            "part" => self.part = Some(value.into()),
40860            "popover" => self.popover = Some(value.into()),
40861            "role" => self.role = Some(value.into()),
40862            "slot" => self.slot = Some(value.into()),
40863            "spellcheck" => self.spellcheck = Some(value.into()),
40864            "style" => self.style = Some(value.into()),
40865            "tabindex" => self.tabindex = Some(value.into()),
40866            "title" => self.title = Some(value.into()),
40867            "translate" => self.translate = Some(value.into()),
40868            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
40869            #[cfg(feature = "alloc")]
40870            _ => {
40871                #[allow(clippy::useless_conversion)]
40872                self.extra.insert(name.into(), value.into());
40873            }
40874            #[cfg(not(feature = "alloc"))]
40875            _ => {}
40876        }
40877    }
40878}
40879/// The <strong><code>&lt;caption&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element specifies the caption (or title) of a table.
40880///
40881/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/caption>
40882
40883#[cfg(feature = "alloc")]
40884#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
40885pub struct CaptionOwned {
40886    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
40887    ///   
40888    pub accesskey: core::option::Option<AttributeValueOwned>,
40889    ///
40890    ///     <p>This <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicates how the caption must be aligned with respect to the table. It may have one of the following values:</p>
40891    ///     <dl>
40892    ///       <dt id="left"><code>left</code></dt>
40893    ///       <dd>
40894    ///         <p>The caption is displayed to the left of the table.</p>
40895    ///       </dd>
40896    ///       <dt id="top"><code>top</code></dt>
40897    ///       <dd>
40898    ///         <p>The caption is displayed above the table.</p>
40899    ///       </dd>
40900    ///       <dt id="right"><code>right</code></dt>
40901    ///       <dd>
40902    ///         <p>The caption is displayed to the right of the table.</p>
40903    ///       </dd>
40904    ///       <dt id="bottom"><code>bottom</code></dt>
40905    ///       <dd>
40906    ///         <p>The caption is displayed below the table.</p>
40907    ///       </dd>
40908    ///     </dl>
40909    ///     <div id="sect1" class="notecard warning">
40910    ///       <p><strong>Warning:</strong> Do not use this attribute, as it has been deprecated. The <a aria-current="page" href="/en-US/docs/Web/HTML/Element/caption"><code>&lt;caption&gt;</code></a> element should be styled using the <a href="/en-US/docs/Web/CSS">CSS</a> properties <a href="/en-US/docs/Web/CSS/caption-side"><code>caption-side</code></a> and <a href="/en-US/docs/Web/CSS/text-align"><code>text-align</code></a>.</p>
40911    ///     </div>
40912    ///   
40913    pub align: core::option::Option<AttributeValueOwned>,
40914    ///
40915    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
40916    ///     <ul>
40917    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
40918    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
40919    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
40920    ///       <li><code>characters</code>, all letters should default to uppercase</li>
40921    ///     </ul>
40922    ///   
40923    pub autocapitalize: core::option::Option<AttributeValueOwned>,
40924    ///
40925    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
40926    ///   
40927    pub autofocus: core::option::Option<AttributeValueOwned>,
40928    ///
40929    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
40930    ///   
40931    pub class: core::option::Option<AttributeValueOwned>,
40932    ///
40933    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
40934    ///     <ul>
40935    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
40936    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
40937    ///     </ul>
40938    ///   
40939    pub contenteditable: core::option::Option<AttributeValueOwned>,
40940    ///
40941    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
40942    ///   
40943    pub contextmenu: core::option::Option<AttributeValueOwned>,
40944    ///
40945    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
40946    ///   
40947    #[cfg(feature = "alloc")]
40948    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
40949    ///
40950    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
40951    ///     <ul>
40952    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
40953    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
40954    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
40955    ///     </ul>
40956    ///   
40957    pub dir: core::option::Option<AttributeValueOwned>,
40958    ///
40959    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
40960    ///     <ul>
40961    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
40962    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
40963    ///     </ul>
40964    ///   
40965    pub draggable: core::option::Option<AttributeValueOwned>,
40966    ///
40967    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
40968    ///   
40969    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
40970    ///
40971    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
40972    ///   
40973    pub exportparts: core::option::Option<AttributeValueOwned>,
40974    /// /// Extra attributes of the element.
40975
40976    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
40977    #[cfg(feature = "alloc")]
40978    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
40979    ///
40980    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
40981    ///   
40982    pub hidden: core::option::Option<AttributeValueOwned>,
40983    ///
40984    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
40985    ///   
40986    pub id: core::option::Option<AttributeValueOwned>,
40987    ///
40988    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
40989    ///   
40990    pub inert: core::option::Option<AttributeValueOwned>,
40991    ///
40992    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
40993    ///   
40994    pub inputmode: core::option::Option<AttributeValueOwned>,
40995    ///
40996    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
40997    ///   
40998    pub is: core::option::Option<AttributeValueOwned>,
40999    ///
41000    ///     <p>The unique, global identifier of an item.</p>
41001    ///   
41002    pub itemid: core::option::Option<AttributeValueOwned>,
41003    ///
41004    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
41005    ///   
41006    pub itemprop: core::option::Option<AttributeValueOwned>,
41007    ///
41008    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
41009    ///   
41010    pub itemref: core::option::Option<AttributeValueOwned>,
41011    ///
41012    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
41013    ///   
41014    pub itemscope: core::option::Option<AttributeValueOwned>,
41015    ///
41016    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
41017    ///   
41018    pub itemtype: core::option::Option<AttributeValueOwned>,
41019    ///
41020    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
41021    ///   
41022    pub lang: core::option::Option<AttributeValueOwned>,
41023    ///
41024    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
41025    ///   
41026    pub nonce: core::option::Option<AttributeValueOwned>,
41027    ///
41028    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
41029    ///   
41030    pub part: core::option::Option<AttributeValueOwned>,
41031    ///
41032    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
41033    ///   
41034    pub popover: core::option::Option<AttributeValueOwned>,
41035    ///
41036    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
41037    ///   
41038    pub role: core::option::Option<AttributeValueOwned>,
41039    ///
41040    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
41041    ///   
41042    pub slot: core::option::Option<AttributeValueOwned>,
41043    ///
41044    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
41045    ///     <ul>
41046    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
41047    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
41048    ///     </ul>
41049    ///   
41050    pub spellcheck: core::option::Option<AttributeValueOwned>,
41051    ///
41052    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
41053    ///   
41054    pub style: core::option::Option<AttributeValueOwned>,
41055    ///
41056    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
41057    ///     <ul>
41058    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
41059    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
41060    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
41061    ///     </ul>
41062    ///   
41063    pub tabindex: core::option::Option<AttributeValueOwned>,
41064    ///
41065    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
41066    ///   
41067    pub title: core::option::Option<AttributeValueOwned>,
41068    ///
41069    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
41070    ///     <ul>
41071    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
41072    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
41073    ///     </ul>
41074    ///   
41075    pub translate: core::option::Option<AttributeValueOwned>,
41076    ///
41077    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
41078    ///     <ul>
41079    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
41080    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
41081    ///     </ul>
41082    ///   
41083    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
41084}
41085#[allow(deprecated)]
41086#[cfg(feature = "alloc")]
41087impl CaptionOwned {
41088    /// Get the tag name of the element.
41089    /// This is the same as the name of the struct, in kebab-case.
41090    pub fn tag() -> &'static str {
41091        "caption"
41092    }
41093    /// Sets an attribute of the element.
41094    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
41095    /// If the `alloc` feature is disabled, this function will silently fail.
41096    ///
41097    /// # Note
41098    /// This only works when the attribute is lowercase.
41099    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
41100        match name {
41101            "accesskey" => self.accesskey = Some(value.into()),
41102            "align" => self.align = Some(value.into()),
41103            "autocapitalize" => self.autocapitalize = Some(value.into()),
41104            "autofocus" => self.autofocus = Some(value.into()),
41105            "class" => self.class = Some(value.into()),
41106            "contenteditable" => self.contenteditable = Some(value.into()),
41107            "contextmenu" => self.contextmenu = Some(value.into()),
41108            "dir" => self.dir = Some(value.into()),
41109            "draggable" => self.draggable = Some(value.into()),
41110            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
41111            "exportparts" => self.exportparts = Some(value.into()),
41112            "hidden" => self.hidden = Some(value.into()),
41113            "id" => self.id = Some(value.into()),
41114            "inert" => self.inert = Some(value.into()),
41115            "inputmode" => self.inputmode = Some(value.into()),
41116            "is" => self.is = Some(value.into()),
41117            "itemid" => self.itemid = Some(value.into()),
41118            "itemprop" => self.itemprop = Some(value.into()),
41119            "itemref" => self.itemref = Some(value.into()),
41120            "itemscope" => self.itemscope = Some(value.into()),
41121            "itemtype" => self.itemtype = Some(value.into()),
41122            "lang" => self.lang = Some(value.into()),
41123            "nonce" => self.nonce = Some(value.into()),
41124            "part" => self.part = Some(value.into()),
41125            "popover" => self.popover = Some(value.into()),
41126            "role" => self.role = Some(value.into()),
41127            "slot" => self.slot = Some(value.into()),
41128            "spellcheck" => self.spellcheck = Some(value.into()),
41129            "style" => self.style = Some(value.into()),
41130            "tabindex" => self.tabindex = Some(value.into()),
41131            "title" => self.title = Some(value.into()),
41132            "translate" => self.translate = Some(value.into()),
41133            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
41134            #[cfg(feature = "alloc")]
41135            _ => {
41136                #[allow(clippy::useless_conversion)]
41137                self.extra.insert(name.into(), value.into());
41138            }
41139            #[cfg(not(feature = "alloc"))]
41140            _ => {}
41141        }
41142    }
41143}
41144/// The <strong><code>&lt;col&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element defines a column within a table and is used for defining common semantics on all common cells. It is generally found within a <a href="/en-US/docs/Web/HTML/Element/colgroup"><code>&lt;colgroup&gt;</code></a> element.
41145///
41146/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/col>
41147
41148#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
41149pub struct Col<'life> {
41150    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
41151    ///   
41152    pub accesskey: core::option::Option<AttributeValue<'life>>,
41153    ///
41154    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
41155    ///     <ul>
41156    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
41157    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
41158    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
41159    ///       <li><code>characters</code>, all letters should default to uppercase</li>
41160    ///     </ul>
41161    ///   
41162    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
41163    ///
41164    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
41165    ///   
41166    pub autofocus: core::option::Option<AttributeValue<'life>>,
41167    ///
41168    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
41169    ///   
41170    pub class: core::option::Option<AttributeValue<'life>>,
41171    ///
41172    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
41173    ///     <ul>
41174    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
41175    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
41176    ///     </ul>
41177    ///   
41178    pub contenteditable: core::option::Option<AttributeValue<'life>>,
41179    ///
41180    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
41181    ///   
41182    pub contextmenu: core::option::Option<AttributeValue<'life>>,
41183    ///
41184    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
41185    ///   
41186    #[cfg(feature = "alloc")]
41187    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
41188    ///
41189    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
41190    ///     <ul>
41191    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
41192    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
41193    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
41194    ///     </ul>
41195    ///   
41196    pub dir: core::option::Option<AttributeValue<'life>>,
41197    ///
41198    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
41199    ///     <ul>
41200    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
41201    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
41202    ///     </ul>
41203    ///   
41204    pub draggable: core::option::Option<AttributeValue<'life>>,
41205    ///
41206    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
41207    ///   
41208    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
41209    ///
41210    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
41211    ///   
41212    pub exportparts: core::option::Option<AttributeValue<'life>>,
41213    /// /// Extra attributes of the element.
41214
41215    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
41216    #[cfg(feature = "alloc")]
41217    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
41218    ///
41219    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
41220    ///   
41221    pub hidden: core::option::Option<AttributeValue<'life>>,
41222    ///
41223    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
41224    ///   
41225    pub id: core::option::Option<AttributeValue<'life>>,
41226    ///
41227    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
41228    ///   
41229    pub inert: core::option::Option<AttributeValue<'life>>,
41230    ///
41231    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
41232    ///   
41233    pub inputmode: core::option::Option<AttributeValue<'life>>,
41234    ///
41235    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
41236    ///   
41237    pub is: core::option::Option<AttributeValue<'life>>,
41238    ///
41239    ///     <p>The unique, global identifier of an item.</p>
41240    ///   
41241    pub itemid: core::option::Option<AttributeValue<'life>>,
41242    ///
41243    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
41244    ///   
41245    pub itemprop: core::option::Option<AttributeValue<'life>>,
41246    ///
41247    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
41248    ///   
41249    pub itemref: core::option::Option<AttributeValue<'life>>,
41250    ///
41251    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
41252    ///   
41253    pub itemscope: core::option::Option<AttributeValue<'life>>,
41254    ///
41255    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
41256    ///   
41257    pub itemtype: core::option::Option<AttributeValue<'life>>,
41258    ///
41259    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
41260    ///   
41261    pub lang: core::option::Option<AttributeValue<'life>>,
41262    ///
41263    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
41264    ///   
41265    pub nonce: core::option::Option<AttributeValue<'life>>,
41266    ///
41267    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
41268    ///   
41269    pub part: core::option::Option<AttributeValue<'life>>,
41270    ///
41271    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
41272    ///   
41273    pub popover: core::option::Option<AttributeValue<'life>>,
41274    ///
41275    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
41276    ///   
41277    pub role: core::option::Option<AttributeValue<'life>>,
41278    ///
41279    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
41280    ///   
41281    pub slot: core::option::Option<AttributeValue<'life>>,
41282    ///
41283    ///     <p>This attribute contains a positive integer indicating the number of consecutive columns the <code>&lt;col&gt;</code> element spans. If not present, its default value is <code>1</code>.</p>
41284    ///   
41285    pub span: core::option::Option<AttributeValue<'life>>,
41286    ///
41287    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
41288    ///     <ul>
41289    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
41290    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
41291    ///     </ul>
41292    ///   
41293    pub spellcheck: core::option::Option<AttributeValue<'life>>,
41294    ///
41295    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
41296    ///   
41297    pub style: core::option::Option<AttributeValue<'life>>,
41298    ///
41299    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
41300    ///     <ul>
41301    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
41302    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
41303    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
41304    ///     </ul>
41305    ///   
41306    pub tabindex: core::option::Option<AttributeValue<'life>>,
41307    ///
41308    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
41309    ///   
41310    pub title: core::option::Option<AttributeValue<'life>>,
41311    ///
41312    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
41313    ///     <ul>
41314    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
41315    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
41316    ///     </ul>
41317    ///   
41318    pub translate: core::option::Option<AttributeValue<'life>>,
41319    ///
41320    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
41321    ///     <ul>
41322    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
41323    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
41324    ///     </ul>
41325    ///   
41326    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
41327}
41328#[allow(deprecated)]
41329
41330impl<'life> Col<'life> {
41331    /// Get the tag name of the element.
41332    /// This is the same as the name of the struct, in kebab-case.
41333    pub fn tag() -> &'static str {
41334        "col"
41335    }
41336    /// Sets an attribute of the element.
41337    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
41338    /// If the `alloc` feature is disabled, this function will silently fail.
41339    ///
41340    /// # Note
41341    /// This only works when the attribute is lowercase.
41342    pub fn set_attr(
41343        &mut self,
41344        name: &'life str,
41345        value: impl core::convert::Into<AttributeValue<'life>>,
41346    ) {
41347        match name {
41348            "accesskey" => self.accesskey = Some(value.into()),
41349            "autocapitalize" => self.autocapitalize = Some(value.into()),
41350            "autofocus" => self.autofocus = Some(value.into()),
41351            "class" => self.class = Some(value.into()),
41352            "contenteditable" => self.contenteditable = Some(value.into()),
41353            "contextmenu" => self.contextmenu = Some(value.into()),
41354            "dir" => self.dir = Some(value.into()),
41355            "draggable" => self.draggable = Some(value.into()),
41356            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
41357            "exportparts" => self.exportparts = Some(value.into()),
41358            "hidden" => self.hidden = Some(value.into()),
41359            "id" => self.id = Some(value.into()),
41360            "inert" => self.inert = Some(value.into()),
41361            "inputmode" => self.inputmode = Some(value.into()),
41362            "is" => self.is = Some(value.into()),
41363            "itemid" => self.itemid = Some(value.into()),
41364            "itemprop" => self.itemprop = Some(value.into()),
41365            "itemref" => self.itemref = Some(value.into()),
41366            "itemscope" => self.itemscope = Some(value.into()),
41367            "itemtype" => self.itemtype = Some(value.into()),
41368            "lang" => self.lang = Some(value.into()),
41369            "nonce" => self.nonce = Some(value.into()),
41370            "part" => self.part = Some(value.into()),
41371            "popover" => self.popover = Some(value.into()),
41372            "role" => self.role = Some(value.into()),
41373            "slot" => self.slot = Some(value.into()),
41374            "span" => self.span = Some(value.into()),
41375            "spellcheck" => self.spellcheck = Some(value.into()),
41376            "style" => self.style = Some(value.into()),
41377            "tabindex" => self.tabindex = Some(value.into()),
41378            "title" => self.title = Some(value.into()),
41379            "translate" => self.translate = Some(value.into()),
41380            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
41381            #[cfg(feature = "alloc")]
41382            _ => {
41383                #[allow(clippy::useless_conversion)]
41384                self.extra.insert(name.into(), value.into());
41385            }
41386            #[cfg(not(feature = "alloc"))]
41387            _ => {}
41388        }
41389    }
41390}
41391/// The <strong><code>&lt;col&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element defines a column within a table and is used for defining common semantics on all common cells. It is generally found within a <a href="/en-US/docs/Web/HTML/Element/colgroup"><code>&lt;colgroup&gt;</code></a> element.
41392///
41393/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/col>
41394
41395#[cfg(feature = "alloc")]
41396#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
41397pub struct ColOwned {
41398    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
41399    ///   
41400    pub accesskey: core::option::Option<AttributeValueOwned>,
41401    ///
41402    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
41403    ///     <ul>
41404    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
41405    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
41406    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
41407    ///       <li><code>characters</code>, all letters should default to uppercase</li>
41408    ///     </ul>
41409    ///   
41410    pub autocapitalize: core::option::Option<AttributeValueOwned>,
41411    ///
41412    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
41413    ///   
41414    pub autofocus: core::option::Option<AttributeValueOwned>,
41415    ///
41416    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
41417    ///   
41418    pub class: core::option::Option<AttributeValueOwned>,
41419    ///
41420    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
41421    ///     <ul>
41422    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
41423    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
41424    ///     </ul>
41425    ///   
41426    pub contenteditable: core::option::Option<AttributeValueOwned>,
41427    ///
41428    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
41429    ///   
41430    pub contextmenu: core::option::Option<AttributeValueOwned>,
41431    ///
41432    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
41433    ///   
41434    #[cfg(feature = "alloc")]
41435    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
41436    ///
41437    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
41438    ///     <ul>
41439    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
41440    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
41441    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
41442    ///     </ul>
41443    ///   
41444    pub dir: core::option::Option<AttributeValueOwned>,
41445    ///
41446    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
41447    ///     <ul>
41448    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
41449    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
41450    ///     </ul>
41451    ///   
41452    pub draggable: core::option::Option<AttributeValueOwned>,
41453    ///
41454    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
41455    ///   
41456    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
41457    ///
41458    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
41459    ///   
41460    pub exportparts: core::option::Option<AttributeValueOwned>,
41461    /// /// Extra attributes of the element.
41462
41463    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
41464    #[cfg(feature = "alloc")]
41465    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
41466    ///
41467    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
41468    ///   
41469    pub hidden: core::option::Option<AttributeValueOwned>,
41470    ///
41471    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
41472    ///   
41473    pub id: core::option::Option<AttributeValueOwned>,
41474    ///
41475    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
41476    ///   
41477    pub inert: core::option::Option<AttributeValueOwned>,
41478    ///
41479    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
41480    ///   
41481    pub inputmode: core::option::Option<AttributeValueOwned>,
41482    ///
41483    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
41484    ///   
41485    pub is: core::option::Option<AttributeValueOwned>,
41486    ///
41487    ///     <p>The unique, global identifier of an item.</p>
41488    ///   
41489    pub itemid: core::option::Option<AttributeValueOwned>,
41490    ///
41491    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
41492    ///   
41493    pub itemprop: core::option::Option<AttributeValueOwned>,
41494    ///
41495    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
41496    ///   
41497    pub itemref: core::option::Option<AttributeValueOwned>,
41498    ///
41499    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
41500    ///   
41501    pub itemscope: core::option::Option<AttributeValueOwned>,
41502    ///
41503    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
41504    ///   
41505    pub itemtype: core::option::Option<AttributeValueOwned>,
41506    ///
41507    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
41508    ///   
41509    pub lang: core::option::Option<AttributeValueOwned>,
41510    ///
41511    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
41512    ///   
41513    pub nonce: core::option::Option<AttributeValueOwned>,
41514    ///
41515    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
41516    ///   
41517    pub part: core::option::Option<AttributeValueOwned>,
41518    ///
41519    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
41520    ///   
41521    pub popover: core::option::Option<AttributeValueOwned>,
41522    ///
41523    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
41524    ///   
41525    pub role: core::option::Option<AttributeValueOwned>,
41526    ///
41527    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
41528    ///   
41529    pub slot: core::option::Option<AttributeValueOwned>,
41530    ///
41531    ///     <p>This attribute contains a positive integer indicating the number of consecutive columns the <code>&lt;col&gt;</code> element spans. If not present, its default value is <code>1</code>.</p>
41532    ///   
41533    pub span: core::option::Option<AttributeValueOwned>,
41534    ///
41535    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
41536    ///     <ul>
41537    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
41538    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
41539    ///     </ul>
41540    ///   
41541    pub spellcheck: core::option::Option<AttributeValueOwned>,
41542    ///
41543    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
41544    ///   
41545    pub style: core::option::Option<AttributeValueOwned>,
41546    ///
41547    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
41548    ///     <ul>
41549    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
41550    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
41551    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
41552    ///     </ul>
41553    ///   
41554    pub tabindex: core::option::Option<AttributeValueOwned>,
41555    ///
41556    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
41557    ///   
41558    pub title: core::option::Option<AttributeValueOwned>,
41559    ///
41560    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
41561    ///     <ul>
41562    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
41563    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
41564    ///     </ul>
41565    ///   
41566    pub translate: core::option::Option<AttributeValueOwned>,
41567    ///
41568    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
41569    ///     <ul>
41570    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
41571    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
41572    ///     </ul>
41573    ///   
41574    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
41575}
41576#[allow(deprecated)]
41577#[cfg(feature = "alloc")]
41578impl ColOwned {
41579    /// Get the tag name of the element.
41580    /// This is the same as the name of the struct, in kebab-case.
41581    pub fn tag() -> &'static str {
41582        "col"
41583    }
41584    /// Sets an attribute of the element.
41585    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
41586    /// If the `alloc` feature is disabled, this function will silently fail.
41587    ///
41588    /// # Note
41589    /// This only works when the attribute is lowercase.
41590    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
41591        match name {
41592            "accesskey" => self.accesskey = Some(value.into()),
41593            "autocapitalize" => self.autocapitalize = Some(value.into()),
41594            "autofocus" => self.autofocus = Some(value.into()),
41595            "class" => self.class = Some(value.into()),
41596            "contenteditable" => self.contenteditable = Some(value.into()),
41597            "contextmenu" => self.contextmenu = Some(value.into()),
41598            "dir" => self.dir = Some(value.into()),
41599            "draggable" => self.draggable = Some(value.into()),
41600            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
41601            "exportparts" => self.exportparts = Some(value.into()),
41602            "hidden" => self.hidden = Some(value.into()),
41603            "id" => self.id = Some(value.into()),
41604            "inert" => self.inert = Some(value.into()),
41605            "inputmode" => self.inputmode = Some(value.into()),
41606            "is" => self.is = Some(value.into()),
41607            "itemid" => self.itemid = Some(value.into()),
41608            "itemprop" => self.itemprop = Some(value.into()),
41609            "itemref" => self.itemref = Some(value.into()),
41610            "itemscope" => self.itemscope = Some(value.into()),
41611            "itemtype" => self.itemtype = Some(value.into()),
41612            "lang" => self.lang = Some(value.into()),
41613            "nonce" => self.nonce = Some(value.into()),
41614            "part" => self.part = Some(value.into()),
41615            "popover" => self.popover = Some(value.into()),
41616            "role" => self.role = Some(value.into()),
41617            "slot" => self.slot = Some(value.into()),
41618            "span" => self.span = Some(value.into()),
41619            "spellcheck" => self.spellcheck = Some(value.into()),
41620            "style" => self.style = Some(value.into()),
41621            "tabindex" => self.tabindex = Some(value.into()),
41622            "title" => self.title = Some(value.into()),
41623            "translate" => self.translate = Some(value.into()),
41624            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
41625            #[cfg(feature = "alloc")]
41626            _ => {
41627                #[allow(clippy::useless_conversion)]
41628                self.extra.insert(name.into(), value.into());
41629            }
41630            #[cfg(not(feature = "alloc"))]
41631            _ => {}
41632        }
41633    }
41634}
41635/// The <strong><code>&lt;colgroup&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element defines a group of columns within a table.
41636///
41637/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/colgroup>
41638
41639#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
41640pub struct Colgroup<'life> {
41641    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
41642    ///   
41643    pub accesskey: core::option::Option<AttributeValue<'life>>,
41644    ///
41645    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
41646    ///     <ul>
41647    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
41648    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
41649    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
41650    ///       <li><code>characters</code>, all letters should default to uppercase</li>
41651    ///     </ul>
41652    ///   
41653    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
41654    ///
41655    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
41656    ///   
41657    pub autofocus: core::option::Option<AttributeValue<'life>>,
41658    ///
41659    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
41660    ///   
41661    pub class: core::option::Option<AttributeValue<'life>>,
41662    ///
41663    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
41664    ///     <ul>
41665    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
41666    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
41667    ///     </ul>
41668    ///   
41669    pub contenteditable: core::option::Option<AttributeValue<'life>>,
41670    ///
41671    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
41672    ///   
41673    pub contextmenu: core::option::Option<AttributeValue<'life>>,
41674    ///
41675    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
41676    ///   
41677    #[cfg(feature = "alloc")]
41678    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
41679    ///
41680    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
41681    ///     <ul>
41682    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
41683    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
41684    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
41685    ///     </ul>
41686    ///   
41687    pub dir: core::option::Option<AttributeValue<'life>>,
41688    ///
41689    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
41690    ///     <ul>
41691    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
41692    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
41693    ///     </ul>
41694    ///   
41695    pub draggable: core::option::Option<AttributeValue<'life>>,
41696    ///
41697    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
41698    ///   
41699    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
41700    ///
41701    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
41702    ///   
41703    pub exportparts: core::option::Option<AttributeValue<'life>>,
41704    /// /// Extra attributes of the element.
41705
41706    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
41707    #[cfg(feature = "alloc")]
41708    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
41709    ///
41710    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
41711    ///   
41712    pub hidden: core::option::Option<AttributeValue<'life>>,
41713    ///
41714    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
41715    ///   
41716    pub id: core::option::Option<AttributeValue<'life>>,
41717    ///
41718    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
41719    ///   
41720    pub inert: core::option::Option<AttributeValue<'life>>,
41721    ///
41722    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
41723    ///   
41724    pub inputmode: core::option::Option<AttributeValue<'life>>,
41725    ///
41726    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
41727    ///   
41728    pub is: core::option::Option<AttributeValue<'life>>,
41729    ///
41730    ///     <p>The unique, global identifier of an item.</p>
41731    ///   
41732    pub itemid: core::option::Option<AttributeValue<'life>>,
41733    ///
41734    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
41735    ///   
41736    pub itemprop: core::option::Option<AttributeValue<'life>>,
41737    ///
41738    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
41739    ///   
41740    pub itemref: core::option::Option<AttributeValue<'life>>,
41741    ///
41742    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
41743    ///   
41744    pub itemscope: core::option::Option<AttributeValue<'life>>,
41745    ///
41746    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
41747    ///   
41748    pub itemtype: core::option::Option<AttributeValue<'life>>,
41749    ///
41750    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
41751    ///   
41752    pub lang: core::option::Option<AttributeValue<'life>>,
41753    ///
41754    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
41755    ///   
41756    pub nonce: core::option::Option<AttributeValue<'life>>,
41757    ///
41758    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
41759    ///   
41760    pub part: core::option::Option<AttributeValue<'life>>,
41761    ///
41762    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
41763    ///   
41764    pub popover: core::option::Option<AttributeValue<'life>>,
41765    ///
41766    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
41767    ///   
41768    pub role: core::option::Option<AttributeValue<'life>>,
41769    ///
41770    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
41771    ///   
41772    pub slot: core::option::Option<AttributeValue<'life>>,
41773    ///
41774    ///     <p>This attribute contains a positive integer indicating the number of consecutive columns the <code>&lt;colgroup&gt;</code> element spans. If not present, its default value is <code>1</code>.</p>
41775    ///     <p>The <code>span</code> attribute is not permitted if there are one or more <a href="/en-US/docs/Web/HTML/Element/col"><code>&lt;col&gt;</code></a> elements within the <code>&lt;colgroup&gt;</code>.</p>
41776    ///   
41777    pub span: core::option::Option<AttributeValue<'life>>,
41778    ///
41779    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
41780    ///     <ul>
41781    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
41782    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
41783    ///     </ul>
41784    ///   
41785    pub spellcheck: core::option::Option<AttributeValue<'life>>,
41786    ///
41787    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
41788    ///   
41789    pub style: core::option::Option<AttributeValue<'life>>,
41790    ///
41791    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
41792    ///     <ul>
41793    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
41794    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
41795    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
41796    ///     </ul>
41797    ///   
41798    pub tabindex: core::option::Option<AttributeValue<'life>>,
41799    ///
41800    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
41801    ///   
41802    pub title: core::option::Option<AttributeValue<'life>>,
41803    ///
41804    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
41805    ///     <ul>
41806    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
41807    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
41808    ///     </ul>
41809    ///   
41810    pub translate: core::option::Option<AttributeValue<'life>>,
41811    ///
41812    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
41813    ///     <ul>
41814    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
41815    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
41816    ///     </ul>
41817    ///   
41818    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
41819}
41820#[allow(deprecated)]
41821
41822impl<'life> Colgroup<'life> {
41823    /// Get the tag name of the element.
41824    /// This is the same as the name of the struct, in kebab-case.
41825    pub fn tag() -> &'static str {
41826        "colgroup"
41827    }
41828    /// Sets an attribute of the element.
41829    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
41830    /// If the `alloc` feature is disabled, this function will silently fail.
41831    ///
41832    /// # Note
41833    /// This only works when the attribute is lowercase.
41834    pub fn set_attr(
41835        &mut self,
41836        name: &'life str,
41837        value: impl core::convert::Into<AttributeValue<'life>>,
41838    ) {
41839        match name {
41840            "accesskey" => self.accesskey = Some(value.into()),
41841            "autocapitalize" => self.autocapitalize = Some(value.into()),
41842            "autofocus" => self.autofocus = Some(value.into()),
41843            "class" => self.class = Some(value.into()),
41844            "contenteditable" => self.contenteditable = Some(value.into()),
41845            "contextmenu" => self.contextmenu = Some(value.into()),
41846            "dir" => self.dir = Some(value.into()),
41847            "draggable" => self.draggable = Some(value.into()),
41848            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
41849            "exportparts" => self.exportparts = Some(value.into()),
41850            "hidden" => self.hidden = Some(value.into()),
41851            "id" => self.id = Some(value.into()),
41852            "inert" => self.inert = Some(value.into()),
41853            "inputmode" => self.inputmode = Some(value.into()),
41854            "is" => self.is = Some(value.into()),
41855            "itemid" => self.itemid = Some(value.into()),
41856            "itemprop" => self.itemprop = Some(value.into()),
41857            "itemref" => self.itemref = Some(value.into()),
41858            "itemscope" => self.itemscope = Some(value.into()),
41859            "itemtype" => self.itemtype = Some(value.into()),
41860            "lang" => self.lang = Some(value.into()),
41861            "nonce" => self.nonce = Some(value.into()),
41862            "part" => self.part = Some(value.into()),
41863            "popover" => self.popover = Some(value.into()),
41864            "role" => self.role = Some(value.into()),
41865            "slot" => self.slot = Some(value.into()),
41866            "span" => self.span = Some(value.into()),
41867            "spellcheck" => self.spellcheck = Some(value.into()),
41868            "style" => self.style = Some(value.into()),
41869            "tabindex" => self.tabindex = Some(value.into()),
41870            "title" => self.title = Some(value.into()),
41871            "translate" => self.translate = Some(value.into()),
41872            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
41873            #[cfg(feature = "alloc")]
41874            _ => {
41875                #[allow(clippy::useless_conversion)]
41876                self.extra.insert(name.into(), value.into());
41877            }
41878            #[cfg(not(feature = "alloc"))]
41879            _ => {}
41880        }
41881    }
41882}
41883/// The <strong><code>&lt;colgroup&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element defines a group of columns within a table.
41884///
41885/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/colgroup>
41886
41887#[cfg(feature = "alloc")]
41888#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
41889pub struct ColgroupOwned {
41890    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
41891    ///   
41892    pub accesskey: core::option::Option<AttributeValueOwned>,
41893    ///
41894    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
41895    ///     <ul>
41896    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
41897    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
41898    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
41899    ///       <li><code>characters</code>, all letters should default to uppercase</li>
41900    ///     </ul>
41901    ///   
41902    pub autocapitalize: core::option::Option<AttributeValueOwned>,
41903    ///
41904    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
41905    ///   
41906    pub autofocus: core::option::Option<AttributeValueOwned>,
41907    ///
41908    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
41909    ///   
41910    pub class: core::option::Option<AttributeValueOwned>,
41911    ///
41912    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
41913    ///     <ul>
41914    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
41915    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
41916    ///     </ul>
41917    ///   
41918    pub contenteditable: core::option::Option<AttributeValueOwned>,
41919    ///
41920    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
41921    ///   
41922    pub contextmenu: core::option::Option<AttributeValueOwned>,
41923    ///
41924    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
41925    ///   
41926    #[cfg(feature = "alloc")]
41927    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
41928    ///
41929    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
41930    ///     <ul>
41931    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
41932    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
41933    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
41934    ///     </ul>
41935    ///   
41936    pub dir: core::option::Option<AttributeValueOwned>,
41937    ///
41938    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
41939    ///     <ul>
41940    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
41941    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
41942    ///     </ul>
41943    ///   
41944    pub draggable: core::option::Option<AttributeValueOwned>,
41945    ///
41946    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
41947    ///   
41948    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
41949    ///
41950    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
41951    ///   
41952    pub exportparts: core::option::Option<AttributeValueOwned>,
41953    /// /// Extra attributes of the element.
41954
41955    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
41956    #[cfg(feature = "alloc")]
41957    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
41958    ///
41959    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
41960    ///   
41961    pub hidden: core::option::Option<AttributeValueOwned>,
41962    ///
41963    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
41964    ///   
41965    pub id: core::option::Option<AttributeValueOwned>,
41966    ///
41967    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
41968    ///   
41969    pub inert: core::option::Option<AttributeValueOwned>,
41970    ///
41971    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
41972    ///   
41973    pub inputmode: core::option::Option<AttributeValueOwned>,
41974    ///
41975    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
41976    ///   
41977    pub is: core::option::Option<AttributeValueOwned>,
41978    ///
41979    ///     <p>The unique, global identifier of an item.</p>
41980    ///   
41981    pub itemid: core::option::Option<AttributeValueOwned>,
41982    ///
41983    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
41984    ///   
41985    pub itemprop: core::option::Option<AttributeValueOwned>,
41986    ///
41987    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
41988    ///   
41989    pub itemref: core::option::Option<AttributeValueOwned>,
41990    ///
41991    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
41992    ///   
41993    pub itemscope: core::option::Option<AttributeValueOwned>,
41994    ///
41995    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
41996    ///   
41997    pub itemtype: core::option::Option<AttributeValueOwned>,
41998    ///
41999    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
42000    ///   
42001    pub lang: core::option::Option<AttributeValueOwned>,
42002    ///
42003    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
42004    ///   
42005    pub nonce: core::option::Option<AttributeValueOwned>,
42006    ///
42007    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
42008    ///   
42009    pub part: core::option::Option<AttributeValueOwned>,
42010    ///
42011    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
42012    ///   
42013    pub popover: core::option::Option<AttributeValueOwned>,
42014    ///
42015    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
42016    ///   
42017    pub role: core::option::Option<AttributeValueOwned>,
42018    ///
42019    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
42020    ///   
42021    pub slot: core::option::Option<AttributeValueOwned>,
42022    ///
42023    ///     <p>This attribute contains a positive integer indicating the number of consecutive columns the <code>&lt;colgroup&gt;</code> element spans. If not present, its default value is <code>1</code>.</p>
42024    ///     <p>The <code>span</code> attribute is not permitted if there are one or more <a href="/en-US/docs/Web/HTML/Element/col"><code>&lt;col&gt;</code></a> elements within the <code>&lt;colgroup&gt;</code>.</p>
42025    ///   
42026    pub span: core::option::Option<AttributeValueOwned>,
42027    ///
42028    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
42029    ///     <ul>
42030    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
42031    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
42032    ///     </ul>
42033    ///   
42034    pub spellcheck: core::option::Option<AttributeValueOwned>,
42035    ///
42036    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
42037    ///   
42038    pub style: core::option::Option<AttributeValueOwned>,
42039    ///
42040    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
42041    ///     <ul>
42042    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
42043    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
42044    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
42045    ///     </ul>
42046    ///   
42047    pub tabindex: core::option::Option<AttributeValueOwned>,
42048    ///
42049    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
42050    ///   
42051    pub title: core::option::Option<AttributeValueOwned>,
42052    ///
42053    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
42054    ///     <ul>
42055    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
42056    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
42057    ///     </ul>
42058    ///   
42059    pub translate: core::option::Option<AttributeValueOwned>,
42060    ///
42061    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
42062    ///     <ul>
42063    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
42064    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
42065    ///     </ul>
42066    ///   
42067    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
42068}
42069#[allow(deprecated)]
42070#[cfg(feature = "alloc")]
42071impl ColgroupOwned {
42072    /// Get the tag name of the element.
42073    /// This is the same as the name of the struct, in kebab-case.
42074    pub fn tag() -> &'static str {
42075        "colgroup"
42076    }
42077    /// Sets an attribute of the element.
42078    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
42079    /// If the `alloc` feature is disabled, this function will silently fail.
42080    ///
42081    /// # Note
42082    /// This only works when the attribute is lowercase.
42083    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
42084        match name {
42085            "accesskey" => self.accesskey = Some(value.into()),
42086            "autocapitalize" => self.autocapitalize = Some(value.into()),
42087            "autofocus" => self.autofocus = Some(value.into()),
42088            "class" => self.class = Some(value.into()),
42089            "contenteditable" => self.contenteditable = Some(value.into()),
42090            "contextmenu" => self.contextmenu = Some(value.into()),
42091            "dir" => self.dir = Some(value.into()),
42092            "draggable" => self.draggable = Some(value.into()),
42093            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
42094            "exportparts" => self.exportparts = Some(value.into()),
42095            "hidden" => self.hidden = Some(value.into()),
42096            "id" => self.id = Some(value.into()),
42097            "inert" => self.inert = Some(value.into()),
42098            "inputmode" => self.inputmode = Some(value.into()),
42099            "is" => self.is = Some(value.into()),
42100            "itemid" => self.itemid = Some(value.into()),
42101            "itemprop" => self.itemprop = Some(value.into()),
42102            "itemref" => self.itemref = Some(value.into()),
42103            "itemscope" => self.itemscope = Some(value.into()),
42104            "itemtype" => self.itemtype = Some(value.into()),
42105            "lang" => self.lang = Some(value.into()),
42106            "nonce" => self.nonce = Some(value.into()),
42107            "part" => self.part = Some(value.into()),
42108            "popover" => self.popover = Some(value.into()),
42109            "role" => self.role = Some(value.into()),
42110            "slot" => self.slot = Some(value.into()),
42111            "span" => self.span = Some(value.into()),
42112            "spellcheck" => self.spellcheck = Some(value.into()),
42113            "style" => self.style = Some(value.into()),
42114            "tabindex" => self.tabindex = Some(value.into()),
42115            "title" => self.title = Some(value.into()),
42116            "translate" => self.translate = Some(value.into()),
42117            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
42118            #[cfg(feature = "alloc")]
42119            _ => {
42120                #[allow(clippy::useless_conversion)]
42121                self.extra.insert(name.into(), value.into());
42122            }
42123            #[cfg(not(feature = "alloc"))]
42124            _ => {}
42125        }
42126    }
42127}
42128/// The <strong><code>&lt;table&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents tabular data — that is, information presented in a two-dimensional table comprised of rows and columns of cells containing data.
42129///
42130/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/table>
42131
42132#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
42133pub struct Table<'life> {
42134    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
42135    ///   
42136    pub accesskey: core::option::Option<AttributeValue<'life>>,
42137    ///
42138    ///     <p>This <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicates how the table must be aligned inside the containing document. It may have the following values:</p>
42139    ///     <ul>
42140    ///       <li><code>left</code>: the table is displayed on the left side of the document;</li>
42141    ///       <li><code>center</code>: the table is displayed in the center of the document;</li>
42142    ///       <li><code>right</code>: the table is displayed on the right side of the document.</li>
42143    ///     </ul>
42144    ///     <p>Set <a href="/en-US/docs/Web/CSS/margin-left"><code>margin-left</code></a> and <a href="/en-US/docs/Web/CSS/margin-right"><code>margin-right</code></a> to <code>auto</code> or <a href="/en-US/docs/Web/CSS/margin"><code>margin</code></a> to <code>0 auto</code> to achieve an effect that is similar to the align attribute.</p>
42145    ///   
42146    pub align: core::option::Option<AttributeValue<'life>>,
42147    ///
42148    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
42149    ///     <ul>
42150    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
42151    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
42152    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
42153    ///       <li><code>characters</code>, all letters should default to uppercase</li>
42154    ///     </ul>
42155    ///   
42156    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
42157    ///
42158    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
42159    ///   
42160    pub autofocus: core::option::Option<AttributeValue<'life>>,
42161    ///
42162    ///     <p>The background color of the table. It is a <a href="/en-US/docs/Web/CSS/hex-color">6-digit hexadecimal RGB code</a>, prefixed by a '<code>#</code>'. One of the predefined <a href="/en-US/docs/Web/CSS/named-color">color keywords</a> can also be used.</p>
42163    ///     <p>To achieve a similar effect, use the CSS <a href="/en-US/docs/Web/CSS/background-color"><code>background-color</code></a> property.</p>
42164    ///   
42165    pub bgcolor: core::option::Option<AttributeValue<'life>>,
42166    ///
42167    ///     <p>This integer attribute defines, in pixels, the size of the frame surrounding the table. If set to 0, the <a href="#frame"><code>frame</code></a> attribute is set to void.</p>
42168    ///     <p>To achieve a similar effect, use the CSS <a href="/en-US/docs/Web/CSS/border"><code>border</code></a> shorthand property.</p>
42169    ///   
42170    pub border: core::option::Option<AttributeValue<'life>>,
42171    ///
42172    ///     <p>This attribute defines the space between the content of a cell and its border, displayed or not. If the cellpadding's length is defined in pixels, this pixel-sized space will be applied to all four sides of the cell's content. If the length is defined using a percentage value, the content will be centered and the total vertical space (top and bottom) will represent this value. The same is true for the total horizontal space (left and right).</p>
42173    ///     <p>To achieve a similar effect, apply the <a href="/en-US/docs/Web/CSS/border-collapse"><code>border-collapse</code></a> property to the <code>&lt;table&gt;</code> element, with its value set to collapse, and the <a href="/en-US/docs/Web/CSS/padding"><code>padding</code></a> property to the <a href="/en-US/docs/Web/HTML/Element/td"><code>&lt;td&gt;</code></a> elements.</p>
42174    ///   
42175    pub cellpadding: core::option::Option<AttributeValue<'life>>,
42176    ///
42177    ///     <p>This attribute defines the size of the space between two cells in a percentage value or pixels. The attribute is applied both horizontally and vertically, to the space between the top of the table and the cells of the first row, the left of the table and the first column, the right of the table and the last column and the bottom of the table and the last row.</p>
42178    ///     <p>To achieve a similar effect, apply the <a href="/en-US/docs/Web/CSS/border-spacing"><code>border-spacing</code></a> property to the <code>&lt;table&gt;</code> element. <code>border-spacing</code> does not have any effect if <a href="/en-US/docs/Web/CSS/border-collapse"><code>border-collapse</code></a> is set to collapse.</p>
42179    ///   
42180    pub cellspacing: core::option::Option<AttributeValue<'life>>,
42181    ///
42182    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
42183    ///   
42184    pub class: core::option::Option<AttributeValue<'life>>,
42185    ///
42186    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
42187    ///     <ul>
42188    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
42189    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
42190    ///     </ul>
42191    ///   
42192    pub contenteditable: core::option::Option<AttributeValue<'life>>,
42193    ///
42194    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
42195    ///   
42196    pub contextmenu: core::option::Option<AttributeValue<'life>>,
42197    ///
42198    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
42199    ///   
42200    #[cfg(feature = "alloc")]
42201    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
42202    ///
42203    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
42204    ///     <ul>
42205    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
42206    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
42207    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
42208    ///     </ul>
42209    ///   
42210    pub dir: core::option::Option<AttributeValue<'life>>,
42211    ///
42212    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
42213    ///     <ul>
42214    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
42215    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
42216    ///     </ul>
42217    ///   
42218    pub draggable: core::option::Option<AttributeValue<'life>>,
42219    ///
42220    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
42221    ///   
42222    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
42223    ///
42224    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
42225    ///   
42226    pub exportparts: core::option::Option<AttributeValue<'life>>,
42227    /// /// Extra attributes of the element.
42228
42229    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
42230    #[cfg(feature = "alloc")]
42231    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
42232    ///
42233    ///     <p>This enumerated attribute defines which side of the frame surrounding the table must be displayed.</p>
42234    ///     <p>To achieve a similar effect, use the <a href="/en-US/docs/Web/CSS/border-style"><code>border-style</code></a> and <a href="/en-US/docs/Web/CSS/border-width"><code>border-width</code></a> properties.</p>
42235    ///   
42236    pub frame: core::option::Option<AttributeValue<'life>>,
42237    ///
42238    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
42239    ///   
42240    pub hidden: core::option::Option<AttributeValue<'life>>,
42241    ///
42242    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
42243    ///   
42244    pub id: core::option::Option<AttributeValue<'life>>,
42245    ///
42246    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
42247    ///   
42248    pub inert: core::option::Option<AttributeValue<'life>>,
42249    ///
42250    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
42251    ///   
42252    pub inputmode: core::option::Option<AttributeValue<'life>>,
42253    ///
42254    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
42255    ///   
42256    pub is: core::option::Option<AttributeValue<'life>>,
42257    ///
42258    ///     <p>The unique, global identifier of an item.</p>
42259    ///   
42260    pub itemid: core::option::Option<AttributeValue<'life>>,
42261    ///
42262    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
42263    ///   
42264    pub itemprop: core::option::Option<AttributeValue<'life>>,
42265    ///
42266    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
42267    ///   
42268    pub itemref: core::option::Option<AttributeValue<'life>>,
42269    ///
42270    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
42271    ///   
42272    pub itemscope: core::option::Option<AttributeValue<'life>>,
42273    ///
42274    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
42275    ///   
42276    pub itemtype: core::option::Option<AttributeValue<'life>>,
42277    ///
42278    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
42279    ///   
42280    pub lang: core::option::Option<AttributeValue<'life>>,
42281    ///
42282    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
42283    ///   
42284    pub nonce: core::option::Option<AttributeValue<'life>>,
42285    ///
42286    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
42287    ///   
42288    pub part: core::option::Option<AttributeValue<'life>>,
42289    ///
42290    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
42291    ///   
42292    pub popover: core::option::Option<AttributeValue<'life>>,
42293    ///
42294    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
42295    ///   
42296    pub role: core::option::Option<AttributeValue<'life>>,
42297    ///
42298    ///     <p>This enumerated attribute defines where rules, i.e. lines, should appear in a table. It can have the following values:</p>
42299    ///     <ul>
42300    ///       <li><code>none</code>, which indicates that no rules will be displayed; it is the default value;</li>
42301    ///       <li><code>groups</code>, which will cause the rules to be displayed between row groups (defined by the <a href="/en-US/docs/Web/HTML/Element/thead"><code>&lt;thead&gt;</code></a>, <a href="/en-US/docs/Web/HTML/Element/tbody"><code>&lt;tbody&gt;</code></a> and <a href="/en-US/docs/Web/HTML/Element/tfoot"><code>&lt;tfoot&gt;</code></a> elements) and between column groups (defined by the <a href="/en-US/docs/Web/HTML/Element/col"><code>&lt;col&gt;</code></a> and <a href="/en-US/docs/Web/HTML/Element/colgroup"><code>&lt;colgroup&gt;</code></a> elements) only;</li>
42302    ///       <li><code>rows</code>, which will cause the rules to be displayed between rows;</li>
42303    ///       <li><code>cols</code>, which will cause the rules to be displayed between columns;</li>
42304    ///       <li><code>all</code>, which will cause the rules to be displayed between rows and columns.</li>
42305    ///     </ul>
42306    ///     <p>To achieve a similar effect, apply the <a href="/en-US/docs/Web/CSS/border"><code>border</code></a> property to the appropriate <a href="/en-US/docs/Web/HTML/Element/thead"><code>&lt;thead&gt;</code></a>, <a href="/en-US/docs/Web/HTML/Element/tbody"><code>&lt;tbody&gt;</code></a>, <a href="/en-US/docs/Web/HTML/Element/tfoot"><code>&lt;tfoot&gt;</code></a>, <a href="/en-US/docs/Web/HTML/Element/col"><code>&lt;col&gt;</code></a>, or <a href="/en-US/docs/Web/HTML/Element/colgroup"><code>&lt;colgroup&gt;</code></a> elements.</p>
42307    ///   
42308    pub rules: core::option::Option<AttributeValue<'life>>,
42309    ///
42310    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
42311    ///   
42312    pub slot: core::option::Option<AttributeValue<'life>>,
42313    ///
42314    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
42315    ///     <ul>
42316    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
42317    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
42318    ///     </ul>
42319    ///   
42320    pub spellcheck: core::option::Option<AttributeValue<'life>>,
42321    ///
42322    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
42323    ///   
42324    pub style: core::option::Option<AttributeValue<'life>>,
42325    ///
42326    ///     <p>This attribute defines an alternative text that summarizes the content of the table. Use the <a href="/en-US/docs/Web/HTML/Element/caption"><code>&lt;caption&gt;</code></a> element instead.</p>
42327    ///   
42328    pub summary: core::option::Option<AttributeValue<'life>>,
42329    ///
42330    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
42331    ///     <ul>
42332    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
42333    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
42334    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
42335    ///     </ul>
42336    ///   
42337    pub tabindex: core::option::Option<AttributeValue<'life>>,
42338    ///
42339    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
42340    ///   
42341    pub title: core::option::Option<AttributeValue<'life>>,
42342    ///
42343    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
42344    ///     <ul>
42345    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
42346    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
42347    ///     </ul>
42348    ///   
42349    pub translate: core::option::Option<AttributeValue<'life>>,
42350    ///
42351    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
42352    ///     <ul>
42353    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
42354    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
42355    ///     </ul>
42356    ///   
42357    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
42358    ///
42359    ///     <p>This attribute defines the width of the table. Use the CSS <a href="/en-US/docs/Web/CSS/width"><code>width</code></a> property instead.</p>
42360    ///   
42361    pub width: core::option::Option<AttributeValue<'life>>,
42362}
42363#[allow(deprecated)]
42364
42365impl<'life> Table<'life> {
42366    /// Get the tag name of the element.
42367    /// This is the same as the name of the struct, in kebab-case.
42368    pub fn tag() -> &'static str {
42369        "table"
42370    }
42371    /// Sets an attribute of the element.
42372    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
42373    /// If the `alloc` feature is disabled, this function will silently fail.
42374    ///
42375    /// # Note
42376    /// This only works when the attribute is lowercase.
42377    pub fn set_attr(
42378        &mut self,
42379        name: &'life str,
42380        value: impl core::convert::Into<AttributeValue<'life>>,
42381    ) {
42382        match name {
42383            "accesskey" => self.accesskey = Some(value.into()),
42384            "align" => self.align = Some(value.into()),
42385            "autocapitalize" => self.autocapitalize = Some(value.into()),
42386            "autofocus" => self.autofocus = Some(value.into()),
42387            "bgcolor" => self.bgcolor = Some(value.into()),
42388            "border" => self.border = Some(value.into()),
42389            "cellpadding" => self.cellpadding = Some(value.into()),
42390            "cellspacing" => self.cellspacing = Some(value.into()),
42391            "class" => self.class = Some(value.into()),
42392            "contenteditable" => self.contenteditable = Some(value.into()),
42393            "contextmenu" => self.contextmenu = Some(value.into()),
42394            "dir" => self.dir = Some(value.into()),
42395            "draggable" => self.draggable = Some(value.into()),
42396            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
42397            "exportparts" => self.exportparts = Some(value.into()),
42398            "frame" => self.frame = Some(value.into()),
42399            "hidden" => self.hidden = Some(value.into()),
42400            "id" => self.id = Some(value.into()),
42401            "inert" => self.inert = Some(value.into()),
42402            "inputmode" => self.inputmode = Some(value.into()),
42403            "is" => self.is = Some(value.into()),
42404            "itemid" => self.itemid = Some(value.into()),
42405            "itemprop" => self.itemprop = Some(value.into()),
42406            "itemref" => self.itemref = Some(value.into()),
42407            "itemscope" => self.itemscope = Some(value.into()),
42408            "itemtype" => self.itemtype = Some(value.into()),
42409            "lang" => self.lang = Some(value.into()),
42410            "nonce" => self.nonce = Some(value.into()),
42411            "part" => self.part = Some(value.into()),
42412            "popover" => self.popover = Some(value.into()),
42413            "role" => self.role = Some(value.into()),
42414            "rules" => self.rules = Some(value.into()),
42415            "slot" => self.slot = Some(value.into()),
42416            "spellcheck" => self.spellcheck = Some(value.into()),
42417            "style" => self.style = Some(value.into()),
42418            "summary" => self.summary = Some(value.into()),
42419            "tabindex" => self.tabindex = Some(value.into()),
42420            "title" => self.title = Some(value.into()),
42421            "translate" => self.translate = Some(value.into()),
42422            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
42423            "width" => self.width = Some(value.into()),
42424            #[cfg(feature = "alloc")]
42425            _ => {
42426                #[allow(clippy::useless_conversion)]
42427                self.extra.insert(name.into(), value.into());
42428            }
42429            #[cfg(not(feature = "alloc"))]
42430            _ => {}
42431        }
42432    }
42433}
42434/// The <strong><code>&lt;table&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents tabular data — that is, information presented in a two-dimensional table comprised of rows and columns of cells containing data.
42435///
42436/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/table>
42437
42438#[cfg(feature = "alloc")]
42439#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
42440pub struct TableOwned {
42441    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
42442    ///   
42443    pub accesskey: core::option::Option<AttributeValueOwned>,
42444    ///
42445    ///     <p>This <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicates how the table must be aligned inside the containing document. It may have the following values:</p>
42446    ///     <ul>
42447    ///       <li><code>left</code>: the table is displayed on the left side of the document;</li>
42448    ///       <li><code>center</code>: the table is displayed in the center of the document;</li>
42449    ///       <li><code>right</code>: the table is displayed on the right side of the document.</li>
42450    ///     </ul>
42451    ///     <p>Set <a href="/en-US/docs/Web/CSS/margin-left"><code>margin-left</code></a> and <a href="/en-US/docs/Web/CSS/margin-right"><code>margin-right</code></a> to <code>auto</code> or <a href="/en-US/docs/Web/CSS/margin"><code>margin</code></a> to <code>0 auto</code> to achieve an effect that is similar to the align attribute.</p>
42452    ///   
42453    pub align: core::option::Option<AttributeValueOwned>,
42454    ///
42455    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
42456    ///     <ul>
42457    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
42458    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
42459    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
42460    ///       <li><code>characters</code>, all letters should default to uppercase</li>
42461    ///     </ul>
42462    ///   
42463    pub autocapitalize: core::option::Option<AttributeValueOwned>,
42464    ///
42465    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
42466    ///   
42467    pub autofocus: core::option::Option<AttributeValueOwned>,
42468    ///
42469    ///     <p>The background color of the table. It is a <a href="/en-US/docs/Web/CSS/hex-color">6-digit hexadecimal RGB code</a>, prefixed by a '<code>#</code>'. One of the predefined <a href="/en-US/docs/Web/CSS/named-color">color keywords</a> can also be used.</p>
42470    ///     <p>To achieve a similar effect, use the CSS <a href="/en-US/docs/Web/CSS/background-color"><code>background-color</code></a> property.</p>
42471    ///   
42472    pub bgcolor: core::option::Option<AttributeValueOwned>,
42473    ///
42474    ///     <p>This integer attribute defines, in pixels, the size of the frame surrounding the table. If set to 0, the <a href="#frame"><code>frame</code></a> attribute is set to void.</p>
42475    ///     <p>To achieve a similar effect, use the CSS <a href="/en-US/docs/Web/CSS/border"><code>border</code></a> shorthand property.</p>
42476    ///   
42477    pub border: core::option::Option<AttributeValueOwned>,
42478    ///
42479    ///     <p>This attribute defines the space between the content of a cell and its border, displayed or not. If the cellpadding's length is defined in pixels, this pixel-sized space will be applied to all four sides of the cell's content. If the length is defined using a percentage value, the content will be centered and the total vertical space (top and bottom) will represent this value. The same is true for the total horizontal space (left and right).</p>
42480    ///     <p>To achieve a similar effect, apply the <a href="/en-US/docs/Web/CSS/border-collapse"><code>border-collapse</code></a> property to the <code>&lt;table&gt;</code> element, with its value set to collapse, and the <a href="/en-US/docs/Web/CSS/padding"><code>padding</code></a> property to the <a href="/en-US/docs/Web/HTML/Element/td"><code>&lt;td&gt;</code></a> elements.</p>
42481    ///   
42482    pub cellpadding: core::option::Option<AttributeValueOwned>,
42483    ///
42484    ///     <p>This attribute defines the size of the space between two cells in a percentage value or pixels. The attribute is applied both horizontally and vertically, to the space between the top of the table and the cells of the first row, the left of the table and the first column, the right of the table and the last column and the bottom of the table and the last row.</p>
42485    ///     <p>To achieve a similar effect, apply the <a href="/en-US/docs/Web/CSS/border-spacing"><code>border-spacing</code></a> property to the <code>&lt;table&gt;</code> element. <code>border-spacing</code> does not have any effect if <a href="/en-US/docs/Web/CSS/border-collapse"><code>border-collapse</code></a> is set to collapse.</p>
42486    ///   
42487    pub cellspacing: core::option::Option<AttributeValueOwned>,
42488    ///
42489    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
42490    ///   
42491    pub class: core::option::Option<AttributeValueOwned>,
42492    ///
42493    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
42494    ///     <ul>
42495    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
42496    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
42497    ///     </ul>
42498    ///   
42499    pub contenteditable: core::option::Option<AttributeValueOwned>,
42500    ///
42501    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
42502    ///   
42503    pub contextmenu: core::option::Option<AttributeValueOwned>,
42504    ///
42505    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
42506    ///   
42507    #[cfg(feature = "alloc")]
42508    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
42509    ///
42510    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
42511    ///     <ul>
42512    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
42513    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
42514    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
42515    ///     </ul>
42516    ///   
42517    pub dir: core::option::Option<AttributeValueOwned>,
42518    ///
42519    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
42520    ///     <ul>
42521    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
42522    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
42523    ///     </ul>
42524    ///   
42525    pub draggable: core::option::Option<AttributeValueOwned>,
42526    ///
42527    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
42528    ///   
42529    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
42530    ///
42531    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
42532    ///   
42533    pub exportparts: core::option::Option<AttributeValueOwned>,
42534    /// /// Extra attributes of the element.
42535
42536    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
42537    #[cfg(feature = "alloc")]
42538    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
42539    ///
42540    ///     <p>This enumerated attribute defines which side of the frame surrounding the table must be displayed.</p>
42541    ///     <p>To achieve a similar effect, use the <a href="/en-US/docs/Web/CSS/border-style"><code>border-style</code></a> and <a href="/en-US/docs/Web/CSS/border-width"><code>border-width</code></a> properties.</p>
42542    ///   
42543    pub frame: core::option::Option<AttributeValueOwned>,
42544    ///
42545    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
42546    ///   
42547    pub hidden: core::option::Option<AttributeValueOwned>,
42548    ///
42549    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
42550    ///   
42551    pub id: core::option::Option<AttributeValueOwned>,
42552    ///
42553    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
42554    ///   
42555    pub inert: core::option::Option<AttributeValueOwned>,
42556    ///
42557    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
42558    ///   
42559    pub inputmode: core::option::Option<AttributeValueOwned>,
42560    ///
42561    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
42562    ///   
42563    pub is: core::option::Option<AttributeValueOwned>,
42564    ///
42565    ///     <p>The unique, global identifier of an item.</p>
42566    ///   
42567    pub itemid: core::option::Option<AttributeValueOwned>,
42568    ///
42569    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
42570    ///   
42571    pub itemprop: core::option::Option<AttributeValueOwned>,
42572    ///
42573    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
42574    ///   
42575    pub itemref: core::option::Option<AttributeValueOwned>,
42576    ///
42577    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
42578    ///   
42579    pub itemscope: core::option::Option<AttributeValueOwned>,
42580    ///
42581    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
42582    ///   
42583    pub itemtype: core::option::Option<AttributeValueOwned>,
42584    ///
42585    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
42586    ///   
42587    pub lang: core::option::Option<AttributeValueOwned>,
42588    ///
42589    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
42590    ///   
42591    pub nonce: core::option::Option<AttributeValueOwned>,
42592    ///
42593    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
42594    ///   
42595    pub part: core::option::Option<AttributeValueOwned>,
42596    ///
42597    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
42598    ///   
42599    pub popover: core::option::Option<AttributeValueOwned>,
42600    ///
42601    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
42602    ///   
42603    pub role: core::option::Option<AttributeValueOwned>,
42604    ///
42605    ///     <p>This enumerated attribute defines where rules, i.e. lines, should appear in a table. It can have the following values:</p>
42606    ///     <ul>
42607    ///       <li><code>none</code>, which indicates that no rules will be displayed; it is the default value;</li>
42608    ///       <li><code>groups</code>, which will cause the rules to be displayed between row groups (defined by the <a href="/en-US/docs/Web/HTML/Element/thead"><code>&lt;thead&gt;</code></a>, <a href="/en-US/docs/Web/HTML/Element/tbody"><code>&lt;tbody&gt;</code></a> and <a href="/en-US/docs/Web/HTML/Element/tfoot"><code>&lt;tfoot&gt;</code></a> elements) and between column groups (defined by the <a href="/en-US/docs/Web/HTML/Element/col"><code>&lt;col&gt;</code></a> and <a href="/en-US/docs/Web/HTML/Element/colgroup"><code>&lt;colgroup&gt;</code></a> elements) only;</li>
42609    ///       <li><code>rows</code>, which will cause the rules to be displayed between rows;</li>
42610    ///       <li><code>cols</code>, which will cause the rules to be displayed between columns;</li>
42611    ///       <li><code>all</code>, which will cause the rules to be displayed between rows and columns.</li>
42612    ///     </ul>
42613    ///     <p>To achieve a similar effect, apply the <a href="/en-US/docs/Web/CSS/border"><code>border</code></a> property to the appropriate <a href="/en-US/docs/Web/HTML/Element/thead"><code>&lt;thead&gt;</code></a>, <a href="/en-US/docs/Web/HTML/Element/tbody"><code>&lt;tbody&gt;</code></a>, <a href="/en-US/docs/Web/HTML/Element/tfoot"><code>&lt;tfoot&gt;</code></a>, <a href="/en-US/docs/Web/HTML/Element/col"><code>&lt;col&gt;</code></a>, or <a href="/en-US/docs/Web/HTML/Element/colgroup"><code>&lt;colgroup&gt;</code></a> elements.</p>
42614    ///   
42615    pub rules: core::option::Option<AttributeValueOwned>,
42616    ///
42617    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
42618    ///   
42619    pub slot: core::option::Option<AttributeValueOwned>,
42620    ///
42621    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
42622    ///     <ul>
42623    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
42624    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
42625    ///     </ul>
42626    ///   
42627    pub spellcheck: core::option::Option<AttributeValueOwned>,
42628    ///
42629    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
42630    ///   
42631    pub style: core::option::Option<AttributeValueOwned>,
42632    ///
42633    ///     <p>This attribute defines an alternative text that summarizes the content of the table. Use the <a href="/en-US/docs/Web/HTML/Element/caption"><code>&lt;caption&gt;</code></a> element instead.</p>
42634    ///   
42635    pub summary: core::option::Option<AttributeValueOwned>,
42636    ///
42637    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
42638    ///     <ul>
42639    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
42640    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
42641    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
42642    ///     </ul>
42643    ///   
42644    pub tabindex: core::option::Option<AttributeValueOwned>,
42645    ///
42646    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
42647    ///   
42648    pub title: core::option::Option<AttributeValueOwned>,
42649    ///
42650    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
42651    ///     <ul>
42652    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
42653    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
42654    ///     </ul>
42655    ///   
42656    pub translate: core::option::Option<AttributeValueOwned>,
42657    ///
42658    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
42659    ///     <ul>
42660    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
42661    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
42662    ///     </ul>
42663    ///   
42664    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
42665    ///
42666    ///     <p>This attribute defines the width of the table. Use the CSS <a href="/en-US/docs/Web/CSS/width"><code>width</code></a> property instead.</p>
42667    ///   
42668    pub width: core::option::Option<AttributeValueOwned>,
42669}
42670#[allow(deprecated)]
42671#[cfg(feature = "alloc")]
42672impl TableOwned {
42673    /// Get the tag name of the element.
42674    /// This is the same as the name of the struct, in kebab-case.
42675    pub fn tag() -> &'static str {
42676        "table"
42677    }
42678    /// Sets an attribute of the element.
42679    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
42680    /// If the `alloc` feature is disabled, this function will silently fail.
42681    ///
42682    /// # Note
42683    /// This only works when the attribute is lowercase.
42684    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
42685        match name {
42686            "accesskey" => self.accesskey = Some(value.into()),
42687            "align" => self.align = Some(value.into()),
42688            "autocapitalize" => self.autocapitalize = Some(value.into()),
42689            "autofocus" => self.autofocus = Some(value.into()),
42690            "bgcolor" => self.bgcolor = Some(value.into()),
42691            "border" => self.border = Some(value.into()),
42692            "cellpadding" => self.cellpadding = Some(value.into()),
42693            "cellspacing" => self.cellspacing = Some(value.into()),
42694            "class" => self.class = Some(value.into()),
42695            "contenteditable" => self.contenteditable = Some(value.into()),
42696            "contextmenu" => self.contextmenu = Some(value.into()),
42697            "dir" => self.dir = Some(value.into()),
42698            "draggable" => self.draggable = Some(value.into()),
42699            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
42700            "exportparts" => self.exportparts = Some(value.into()),
42701            "frame" => self.frame = Some(value.into()),
42702            "hidden" => self.hidden = Some(value.into()),
42703            "id" => self.id = Some(value.into()),
42704            "inert" => self.inert = Some(value.into()),
42705            "inputmode" => self.inputmode = Some(value.into()),
42706            "is" => self.is = Some(value.into()),
42707            "itemid" => self.itemid = Some(value.into()),
42708            "itemprop" => self.itemprop = Some(value.into()),
42709            "itemref" => self.itemref = Some(value.into()),
42710            "itemscope" => self.itemscope = Some(value.into()),
42711            "itemtype" => self.itemtype = Some(value.into()),
42712            "lang" => self.lang = Some(value.into()),
42713            "nonce" => self.nonce = Some(value.into()),
42714            "part" => self.part = Some(value.into()),
42715            "popover" => self.popover = Some(value.into()),
42716            "role" => self.role = Some(value.into()),
42717            "rules" => self.rules = Some(value.into()),
42718            "slot" => self.slot = Some(value.into()),
42719            "spellcheck" => self.spellcheck = Some(value.into()),
42720            "style" => self.style = Some(value.into()),
42721            "summary" => self.summary = Some(value.into()),
42722            "tabindex" => self.tabindex = Some(value.into()),
42723            "title" => self.title = Some(value.into()),
42724            "translate" => self.translate = Some(value.into()),
42725            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
42726            "width" => self.width = Some(value.into()),
42727            #[cfg(feature = "alloc")]
42728            _ => {
42729                #[allow(clippy::useless_conversion)]
42730                self.extra.insert(name.into(), value.into());
42731            }
42732            #[cfg(not(feature = "alloc"))]
42733            _ => {}
42734        }
42735    }
42736}
42737/// The <strong><code>&lt;tbody&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element encapsulates a set of table rows (<a href="/en-US/docs/Web/HTML/Element/tr"><code>&lt;tr&gt;</code></a> elements), indicating that they comprise the body of the table (<a href="/en-US/docs/Web/HTML/Element/table"><code>&lt;table&gt;</code></a>).
42738///
42739/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tbody>
42740
42741#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
42742pub struct Tbody<'life> {
42743    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
42744    ///   
42745    pub accesskey: core::option::Option<AttributeValue<'life>>,
42746    ///
42747    ///     <p>This <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute specifies how horizontal alignment of each cell content will be handled. Possible values are:</p>
42748    ///     <ul>
42749    ///       <li><code>left</code>, aligning the content to the left of the cell</li>
42750    ///       <li><code>center</code>, centering the content in the cell</li>
42751    ///       <li><code>right</code>, aligning the content to the right of the cell</li>
42752    ///       <li><code>justify</code>, inserting spaces into the textual content so that the content is justified in the cell</li>
42753    ///       <li><code>char</code>, aligning the textual content on a special character with a minimal offset, defined by the <a href="#char"><code>char</code></a> and <a href="#charoff"><code>charoff</code></a> attributes.</li>
42754    ///     </ul>
42755    ///     <p>If this attribute is not set, the <code>left</code> value is assumed.</p>
42756    ///     <p>As this attribute is deprecated, use the CSS <a href="/en-US/docs/Web/CSS/text-align"><code>text-align</code></a> property instead.</p>
42757    ///     <div id="sect1" class="notecard note">
42758    ///       <p><strong>Note:</strong> The equivalent <code>text-align</code> property for the <code>align="char"</code> is not implemented in any browsers yet. See the <a href="/en-US/docs/Web/CSS/text-align#browser_compatibility"><code>text-align</code>'s browser compatibility section</a> for the <code>&lt;string&gt;</code> value.</p>
42759    ///     </div>
42760    ///   
42761    pub align: core::option::Option<AttributeValue<'life>>,
42762    ///
42763    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
42764    ///     <ul>
42765    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
42766    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
42767    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
42768    ///       <li><code>characters</code>, all letters should default to uppercase</li>
42769    ///     </ul>
42770    ///   
42771    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
42772    ///
42773    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
42774    ///   
42775    pub autofocus: core::option::Option<AttributeValue<'life>>,
42776    ///
42777    ///     <p>The background color of the table. It is a <a href="/en-US/docs/Web/CSS/hex-color">6-digit hexadecimal RGB code</a>, prefixed by a '<code>#</code>'. One of the predefined <a href="/en-US/docs/Web/CSS/named-color">color keywords</a> can also be used.</p>
42778    ///     <p>As this attribute is deprecated, use the CSS <a href="/en-US/docs/Web/CSS/background-color"><code>background-color</code></a> property instead.</p>
42779    ///   
42780    pub bgcolor: core::option::Option<AttributeValue<'life>>,
42781    ///
42782    ///     <p>This attribute is used to set the character to align the cells in a column on. Typical values for this include a period (<code>.</code>) when attempting to align numbers or monetary values. If <a href="#align"><code>align</code></a> is not set to <code>char</code>, this attribute is ignored.</p>
42783    ///   
42784    pub char: core::option::Option<AttributeValue<'life>>,
42785    ///
42786    ///     <p>This attribute is used to indicate the number of characters to offset the column data from the alignment characters specified by the <code>char</code> attribute.</p>
42787    ///   
42788    pub charoff: core::option::Option<AttributeValue<'life>>,
42789    ///
42790    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
42791    ///   
42792    pub class: core::option::Option<AttributeValue<'life>>,
42793    ///
42794    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
42795    ///     <ul>
42796    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
42797    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
42798    ///     </ul>
42799    ///   
42800    pub contenteditable: core::option::Option<AttributeValue<'life>>,
42801    ///
42802    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
42803    ///   
42804    pub contextmenu: core::option::Option<AttributeValue<'life>>,
42805    ///
42806    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
42807    ///   
42808    #[cfg(feature = "alloc")]
42809    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
42810    ///
42811    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
42812    ///     <ul>
42813    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
42814    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
42815    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
42816    ///     </ul>
42817    ///   
42818    pub dir: core::option::Option<AttributeValue<'life>>,
42819    ///
42820    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
42821    ///     <ul>
42822    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
42823    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
42824    ///     </ul>
42825    ///   
42826    pub draggable: core::option::Option<AttributeValue<'life>>,
42827    ///
42828    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
42829    ///   
42830    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
42831    ///
42832    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
42833    ///   
42834    pub exportparts: core::option::Option<AttributeValue<'life>>,
42835    /// /// Extra attributes of the element.
42836
42837    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
42838    #[cfg(feature = "alloc")]
42839    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
42840    ///
42841    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
42842    ///   
42843    pub hidden: core::option::Option<AttributeValue<'life>>,
42844    ///
42845    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
42846    ///   
42847    pub id: core::option::Option<AttributeValue<'life>>,
42848    ///
42849    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
42850    ///   
42851    pub inert: core::option::Option<AttributeValue<'life>>,
42852    ///
42853    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
42854    ///   
42855    pub inputmode: core::option::Option<AttributeValue<'life>>,
42856    ///
42857    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
42858    ///   
42859    pub is: core::option::Option<AttributeValue<'life>>,
42860    ///
42861    ///     <p>The unique, global identifier of an item.</p>
42862    ///   
42863    pub itemid: core::option::Option<AttributeValue<'life>>,
42864    ///
42865    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
42866    ///   
42867    pub itemprop: core::option::Option<AttributeValue<'life>>,
42868    ///
42869    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
42870    ///   
42871    pub itemref: core::option::Option<AttributeValue<'life>>,
42872    ///
42873    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
42874    ///   
42875    pub itemscope: core::option::Option<AttributeValue<'life>>,
42876    ///
42877    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
42878    ///   
42879    pub itemtype: core::option::Option<AttributeValue<'life>>,
42880    ///
42881    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
42882    ///   
42883    pub lang: core::option::Option<AttributeValue<'life>>,
42884    ///
42885    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
42886    ///   
42887    pub nonce: core::option::Option<AttributeValue<'life>>,
42888    ///
42889    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
42890    ///   
42891    pub part: core::option::Option<AttributeValue<'life>>,
42892    ///
42893    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
42894    ///   
42895    pub popover: core::option::Option<AttributeValue<'life>>,
42896    ///
42897    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
42898    ///   
42899    pub role: core::option::Option<AttributeValue<'life>>,
42900    ///
42901    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
42902    ///   
42903    pub slot: core::option::Option<AttributeValue<'life>>,
42904    ///
42905    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
42906    ///     <ul>
42907    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
42908    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
42909    ///     </ul>
42910    ///   
42911    pub spellcheck: core::option::Option<AttributeValue<'life>>,
42912    ///
42913    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
42914    ///   
42915    pub style: core::option::Option<AttributeValue<'life>>,
42916    ///
42917    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
42918    ///     <ul>
42919    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
42920    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
42921    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
42922    ///     </ul>
42923    ///   
42924    pub tabindex: core::option::Option<AttributeValue<'life>>,
42925    ///
42926    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
42927    ///   
42928    pub title: core::option::Option<AttributeValue<'life>>,
42929    ///
42930    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
42931    ///     <ul>
42932    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
42933    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
42934    ///     </ul>
42935    ///   
42936    pub translate: core::option::Option<AttributeValue<'life>>,
42937    ///
42938    ///     <p>This attribute specifies the vertical alignment of the text within each row of cells of the table header. Possible values for this attribute are:</p>
42939    ///     <ul>
42940    ///       <li><code>baseline</code>, which will put the text as close to the bottom of the cell as it is possible, but align it on the <a href="https://en.wikipedia.org/wiki/Baseline_%28typography%29" class="external" target="_blank">baseline</a> of the characters instead of the bottom of them. If characters are all of the size, this has the same effect as <code>bottom</code>.</li>
42941    ///       <li><code>bottom</code>, which will put the text as close to the bottom of the cell as it is possible;</li>
42942    ///       <li><code>middle</code>, which will center the text in the cell;</li>
42943    ///       <li>and <code>top</code>, which will put the text as close to the top of the cell as it is possible.</li>
42944    ///     </ul>
42945    ///     <p>As this attribute is deprecated, use the CSS <a href="/en-US/docs/Web/CSS/vertical-align"><code>vertical-align</code></a> property instead.</p>
42946    ///   
42947    pub valign: core::option::Option<AttributeValue<'life>>,
42948    ///
42949    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
42950    ///     <ul>
42951    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
42952    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
42953    ///     </ul>
42954    ///   
42955    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
42956}
42957#[allow(deprecated)]
42958
42959impl<'life> Tbody<'life> {
42960    /// Get the tag name of the element.
42961    /// This is the same as the name of the struct, in kebab-case.
42962    pub fn tag() -> &'static str {
42963        "tbody"
42964    }
42965    /// Sets an attribute of the element.
42966    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
42967    /// If the `alloc` feature is disabled, this function will silently fail.
42968    ///
42969    /// # Note
42970    /// This only works when the attribute is lowercase.
42971    pub fn set_attr(
42972        &mut self,
42973        name: &'life str,
42974        value: impl core::convert::Into<AttributeValue<'life>>,
42975    ) {
42976        match name {
42977            "accesskey" => self.accesskey = Some(value.into()),
42978            "align" => self.align = Some(value.into()),
42979            "autocapitalize" => self.autocapitalize = Some(value.into()),
42980            "autofocus" => self.autofocus = Some(value.into()),
42981            "bgcolor" => self.bgcolor = Some(value.into()),
42982            "char" => self.char = Some(value.into()),
42983            "charoff" => self.charoff = Some(value.into()),
42984            "class" => self.class = Some(value.into()),
42985            "contenteditable" => self.contenteditable = Some(value.into()),
42986            "contextmenu" => self.contextmenu = Some(value.into()),
42987            "dir" => self.dir = Some(value.into()),
42988            "draggable" => self.draggable = Some(value.into()),
42989            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
42990            "exportparts" => self.exportparts = Some(value.into()),
42991            "hidden" => self.hidden = Some(value.into()),
42992            "id" => self.id = Some(value.into()),
42993            "inert" => self.inert = Some(value.into()),
42994            "inputmode" => self.inputmode = Some(value.into()),
42995            "is" => self.is = Some(value.into()),
42996            "itemid" => self.itemid = Some(value.into()),
42997            "itemprop" => self.itemprop = Some(value.into()),
42998            "itemref" => self.itemref = Some(value.into()),
42999            "itemscope" => self.itemscope = Some(value.into()),
43000            "itemtype" => self.itemtype = Some(value.into()),
43001            "lang" => self.lang = Some(value.into()),
43002            "nonce" => self.nonce = Some(value.into()),
43003            "part" => self.part = Some(value.into()),
43004            "popover" => self.popover = Some(value.into()),
43005            "role" => self.role = Some(value.into()),
43006            "slot" => self.slot = Some(value.into()),
43007            "spellcheck" => self.spellcheck = Some(value.into()),
43008            "style" => self.style = Some(value.into()),
43009            "tabindex" => self.tabindex = Some(value.into()),
43010            "title" => self.title = Some(value.into()),
43011            "translate" => self.translate = Some(value.into()),
43012            "valign" => self.valign = Some(value.into()),
43013            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
43014            #[cfg(feature = "alloc")]
43015            _ => {
43016                #[allow(clippy::useless_conversion)]
43017                self.extra.insert(name.into(), value.into());
43018            }
43019            #[cfg(not(feature = "alloc"))]
43020            _ => {}
43021        }
43022    }
43023}
43024/// The <strong><code>&lt;tbody&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element encapsulates a set of table rows (<a href="/en-US/docs/Web/HTML/Element/tr"><code>&lt;tr&gt;</code></a> elements), indicating that they comprise the body of the table (<a href="/en-US/docs/Web/HTML/Element/table"><code>&lt;table&gt;</code></a>).
43025///
43026/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tbody>
43027
43028#[cfg(feature = "alloc")]
43029#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
43030pub struct TbodyOwned {
43031    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
43032    ///   
43033    pub accesskey: core::option::Option<AttributeValueOwned>,
43034    ///
43035    ///     <p>This <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute specifies how horizontal alignment of each cell content will be handled. Possible values are:</p>
43036    ///     <ul>
43037    ///       <li><code>left</code>, aligning the content to the left of the cell</li>
43038    ///       <li><code>center</code>, centering the content in the cell</li>
43039    ///       <li><code>right</code>, aligning the content to the right of the cell</li>
43040    ///       <li><code>justify</code>, inserting spaces into the textual content so that the content is justified in the cell</li>
43041    ///       <li><code>char</code>, aligning the textual content on a special character with a minimal offset, defined by the <a href="#char"><code>char</code></a> and <a href="#charoff"><code>charoff</code></a> attributes.</li>
43042    ///     </ul>
43043    ///     <p>If this attribute is not set, the <code>left</code> value is assumed.</p>
43044    ///     <p>As this attribute is deprecated, use the CSS <a href="/en-US/docs/Web/CSS/text-align"><code>text-align</code></a> property instead.</p>
43045    ///     <div id="sect1" class="notecard note">
43046    ///       <p><strong>Note:</strong> The equivalent <code>text-align</code> property for the <code>align="char"</code> is not implemented in any browsers yet. See the <a href="/en-US/docs/Web/CSS/text-align#browser_compatibility"><code>text-align</code>'s browser compatibility section</a> for the <code>&lt;string&gt;</code> value.</p>
43047    ///     </div>
43048    ///   
43049    pub align: core::option::Option<AttributeValueOwned>,
43050    ///
43051    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
43052    ///     <ul>
43053    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
43054    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
43055    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
43056    ///       <li><code>characters</code>, all letters should default to uppercase</li>
43057    ///     </ul>
43058    ///   
43059    pub autocapitalize: core::option::Option<AttributeValueOwned>,
43060    ///
43061    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
43062    ///   
43063    pub autofocus: core::option::Option<AttributeValueOwned>,
43064    ///
43065    ///     <p>The background color of the table. It is a <a href="/en-US/docs/Web/CSS/hex-color">6-digit hexadecimal RGB code</a>, prefixed by a '<code>#</code>'. One of the predefined <a href="/en-US/docs/Web/CSS/named-color">color keywords</a> can also be used.</p>
43066    ///     <p>As this attribute is deprecated, use the CSS <a href="/en-US/docs/Web/CSS/background-color"><code>background-color</code></a> property instead.</p>
43067    ///   
43068    pub bgcolor: core::option::Option<AttributeValueOwned>,
43069    ///
43070    ///     <p>This attribute is used to set the character to align the cells in a column on. Typical values for this include a period (<code>.</code>) when attempting to align numbers or monetary values. If <a href="#align"><code>align</code></a> is not set to <code>char</code>, this attribute is ignored.</p>
43071    ///   
43072    pub char: core::option::Option<AttributeValueOwned>,
43073    ///
43074    ///     <p>This attribute is used to indicate the number of characters to offset the column data from the alignment characters specified by the <code>char</code> attribute.</p>
43075    ///   
43076    pub charoff: core::option::Option<AttributeValueOwned>,
43077    ///
43078    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
43079    ///   
43080    pub class: core::option::Option<AttributeValueOwned>,
43081    ///
43082    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
43083    ///     <ul>
43084    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
43085    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
43086    ///     </ul>
43087    ///   
43088    pub contenteditable: core::option::Option<AttributeValueOwned>,
43089    ///
43090    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
43091    ///   
43092    pub contextmenu: core::option::Option<AttributeValueOwned>,
43093    ///
43094    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
43095    ///   
43096    #[cfg(feature = "alloc")]
43097    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
43098    ///
43099    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
43100    ///     <ul>
43101    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
43102    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
43103    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
43104    ///     </ul>
43105    ///   
43106    pub dir: core::option::Option<AttributeValueOwned>,
43107    ///
43108    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
43109    ///     <ul>
43110    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
43111    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
43112    ///     </ul>
43113    ///   
43114    pub draggable: core::option::Option<AttributeValueOwned>,
43115    ///
43116    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
43117    ///   
43118    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
43119    ///
43120    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
43121    ///   
43122    pub exportparts: core::option::Option<AttributeValueOwned>,
43123    /// /// Extra attributes of the element.
43124
43125    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
43126    #[cfg(feature = "alloc")]
43127    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
43128    ///
43129    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
43130    ///   
43131    pub hidden: core::option::Option<AttributeValueOwned>,
43132    ///
43133    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
43134    ///   
43135    pub id: core::option::Option<AttributeValueOwned>,
43136    ///
43137    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
43138    ///   
43139    pub inert: core::option::Option<AttributeValueOwned>,
43140    ///
43141    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
43142    ///   
43143    pub inputmode: core::option::Option<AttributeValueOwned>,
43144    ///
43145    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
43146    ///   
43147    pub is: core::option::Option<AttributeValueOwned>,
43148    ///
43149    ///     <p>The unique, global identifier of an item.</p>
43150    ///   
43151    pub itemid: core::option::Option<AttributeValueOwned>,
43152    ///
43153    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
43154    ///   
43155    pub itemprop: core::option::Option<AttributeValueOwned>,
43156    ///
43157    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
43158    ///   
43159    pub itemref: core::option::Option<AttributeValueOwned>,
43160    ///
43161    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
43162    ///   
43163    pub itemscope: core::option::Option<AttributeValueOwned>,
43164    ///
43165    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
43166    ///   
43167    pub itemtype: core::option::Option<AttributeValueOwned>,
43168    ///
43169    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
43170    ///   
43171    pub lang: core::option::Option<AttributeValueOwned>,
43172    ///
43173    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
43174    ///   
43175    pub nonce: core::option::Option<AttributeValueOwned>,
43176    ///
43177    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
43178    ///   
43179    pub part: core::option::Option<AttributeValueOwned>,
43180    ///
43181    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
43182    ///   
43183    pub popover: core::option::Option<AttributeValueOwned>,
43184    ///
43185    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
43186    ///   
43187    pub role: core::option::Option<AttributeValueOwned>,
43188    ///
43189    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
43190    ///   
43191    pub slot: core::option::Option<AttributeValueOwned>,
43192    ///
43193    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
43194    ///     <ul>
43195    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
43196    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
43197    ///     </ul>
43198    ///   
43199    pub spellcheck: core::option::Option<AttributeValueOwned>,
43200    ///
43201    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
43202    ///   
43203    pub style: core::option::Option<AttributeValueOwned>,
43204    ///
43205    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
43206    ///     <ul>
43207    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
43208    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
43209    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
43210    ///     </ul>
43211    ///   
43212    pub tabindex: core::option::Option<AttributeValueOwned>,
43213    ///
43214    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
43215    ///   
43216    pub title: core::option::Option<AttributeValueOwned>,
43217    ///
43218    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
43219    ///     <ul>
43220    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
43221    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
43222    ///     </ul>
43223    ///   
43224    pub translate: core::option::Option<AttributeValueOwned>,
43225    ///
43226    ///     <p>This attribute specifies the vertical alignment of the text within each row of cells of the table header. Possible values for this attribute are:</p>
43227    ///     <ul>
43228    ///       <li><code>baseline</code>, which will put the text as close to the bottom of the cell as it is possible, but align it on the <a href="https://en.wikipedia.org/wiki/Baseline_%28typography%29" class="external" target="_blank">baseline</a> of the characters instead of the bottom of them. If characters are all of the size, this has the same effect as <code>bottom</code>.</li>
43229    ///       <li><code>bottom</code>, which will put the text as close to the bottom of the cell as it is possible;</li>
43230    ///       <li><code>middle</code>, which will center the text in the cell;</li>
43231    ///       <li>and <code>top</code>, which will put the text as close to the top of the cell as it is possible.</li>
43232    ///     </ul>
43233    ///     <p>As this attribute is deprecated, use the CSS <a href="/en-US/docs/Web/CSS/vertical-align"><code>vertical-align</code></a> property instead.</p>
43234    ///   
43235    pub valign: core::option::Option<AttributeValueOwned>,
43236    ///
43237    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
43238    ///     <ul>
43239    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
43240    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
43241    ///     </ul>
43242    ///   
43243    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
43244}
43245#[allow(deprecated)]
43246#[cfg(feature = "alloc")]
43247impl TbodyOwned {
43248    /// Get the tag name of the element.
43249    /// This is the same as the name of the struct, in kebab-case.
43250    pub fn tag() -> &'static str {
43251        "tbody"
43252    }
43253    /// Sets an attribute of the element.
43254    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
43255    /// If the `alloc` feature is disabled, this function will silently fail.
43256    ///
43257    /// # Note
43258    /// This only works when the attribute is lowercase.
43259    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
43260        match name {
43261            "accesskey" => self.accesskey = Some(value.into()),
43262            "align" => self.align = Some(value.into()),
43263            "autocapitalize" => self.autocapitalize = Some(value.into()),
43264            "autofocus" => self.autofocus = Some(value.into()),
43265            "bgcolor" => self.bgcolor = Some(value.into()),
43266            "char" => self.char = Some(value.into()),
43267            "charoff" => self.charoff = Some(value.into()),
43268            "class" => self.class = Some(value.into()),
43269            "contenteditable" => self.contenteditable = Some(value.into()),
43270            "contextmenu" => self.contextmenu = Some(value.into()),
43271            "dir" => self.dir = Some(value.into()),
43272            "draggable" => self.draggable = Some(value.into()),
43273            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
43274            "exportparts" => self.exportparts = Some(value.into()),
43275            "hidden" => self.hidden = Some(value.into()),
43276            "id" => self.id = Some(value.into()),
43277            "inert" => self.inert = Some(value.into()),
43278            "inputmode" => self.inputmode = Some(value.into()),
43279            "is" => self.is = Some(value.into()),
43280            "itemid" => self.itemid = Some(value.into()),
43281            "itemprop" => self.itemprop = Some(value.into()),
43282            "itemref" => self.itemref = Some(value.into()),
43283            "itemscope" => self.itemscope = Some(value.into()),
43284            "itemtype" => self.itemtype = Some(value.into()),
43285            "lang" => self.lang = Some(value.into()),
43286            "nonce" => self.nonce = Some(value.into()),
43287            "part" => self.part = Some(value.into()),
43288            "popover" => self.popover = Some(value.into()),
43289            "role" => self.role = Some(value.into()),
43290            "slot" => self.slot = Some(value.into()),
43291            "spellcheck" => self.spellcheck = Some(value.into()),
43292            "style" => self.style = Some(value.into()),
43293            "tabindex" => self.tabindex = Some(value.into()),
43294            "title" => self.title = Some(value.into()),
43295            "translate" => self.translate = Some(value.into()),
43296            "valign" => self.valign = Some(value.into()),
43297            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
43298            #[cfg(feature = "alloc")]
43299            _ => {
43300                #[allow(clippy::useless_conversion)]
43301                self.extra.insert(name.into(), value.into());
43302            }
43303            #[cfg(not(feature = "alloc"))]
43304            _ => {}
43305        }
43306    }
43307}
43308/// The <strong><code>&lt;td&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element defines a cell of a table that contains data. It participates in the <em>table model</em>.
43309///
43310/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td>
43311
43312#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
43313pub struct Td<'life> {
43314    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
43315    ///   
43316    pub accesskey: core::option::Option<AttributeValue<'life>>,
43317    ///
43318    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
43319    ///     <ul>
43320    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
43321    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
43322    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
43323    ///       <li><code>characters</code>, all letters should default to uppercase</li>
43324    ///     </ul>
43325    ///   
43326    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
43327    ///
43328    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
43329    ///   
43330    pub autofocus: core::option::Option<AttributeValue<'life>>,
43331    ///
43332    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
43333    ///   
43334    pub class: core::option::Option<AttributeValue<'life>>,
43335    ///
43336    ///     <p>This attribute contains a non-negative integer value that indicates for how many columns the cell extends. Its default value is <code>1</code>. Values higher than 1000 will be considered as incorrect and will be set to the default value (1).</p>
43337    ///   
43338    pub colspan: core::option::Option<AttributeValue<'life>>,
43339    ///
43340    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
43341    ///     <ul>
43342    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
43343    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
43344    ///     </ul>
43345    ///   
43346    pub contenteditable: core::option::Option<AttributeValue<'life>>,
43347    ///
43348    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
43349    ///   
43350    pub contextmenu: core::option::Option<AttributeValue<'life>>,
43351    ///
43352    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
43353    ///   
43354    #[cfg(feature = "alloc")]
43355    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
43356    ///
43357    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
43358    ///     <ul>
43359    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
43360    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
43361    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
43362    ///     </ul>
43363    ///   
43364    pub dir: core::option::Option<AttributeValue<'life>>,
43365    ///
43366    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
43367    ///     <ul>
43368    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
43369    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
43370    ///     </ul>
43371    ///   
43372    pub draggable: core::option::Option<AttributeValue<'life>>,
43373    ///
43374    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
43375    ///   
43376    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
43377    ///
43378    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
43379    ///   
43380    pub exportparts: core::option::Option<AttributeValue<'life>>,
43381    /// /// Extra attributes of the element.
43382
43383    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
43384    #[cfg(feature = "alloc")]
43385    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
43386    ///
43387    ///     <p>This attribute contains a list of space-separated strings, each corresponding to the <strong>id</strong> attribute of the <a href="/en-US/docs/Web/HTML/Element/th"><code>&lt;th&gt;</code></a> elements that apply to this element.</p>
43388    ///   
43389    pub headers: core::option::Option<AttributeValue<'life>>,
43390    ///
43391    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
43392    ///   
43393    pub hidden: core::option::Option<AttributeValue<'life>>,
43394    ///
43395    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
43396    ///   
43397    pub id: core::option::Option<AttributeValue<'life>>,
43398    ///
43399    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
43400    ///   
43401    pub inert: core::option::Option<AttributeValue<'life>>,
43402    ///
43403    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
43404    ///   
43405    pub inputmode: core::option::Option<AttributeValue<'life>>,
43406    ///
43407    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
43408    ///   
43409    pub is: core::option::Option<AttributeValue<'life>>,
43410    ///
43411    ///     <p>The unique, global identifier of an item.</p>
43412    ///   
43413    pub itemid: core::option::Option<AttributeValue<'life>>,
43414    ///
43415    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
43416    ///   
43417    pub itemprop: core::option::Option<AttributeValue<'life>>,
43418    ///
43419    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
43420    ///   
43421    pub itemref: core::option::Option<AttributeValue<'life>>,
43422    ///
43423    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
43424    ///   
43425    pub itemscope: core::option::Option<AttributeValue<'life>>,
43426    ///
43427    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
43428    ///   
43429    pub itemtype: core::option::Option<AttributeValue<'life>>,
43430    ///
43431    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
43432    ///   
43433    pub lang: core::option::Option<AttributeValue<'life>>,
43434    ///
43435    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
43436    ///   
43437    pub nonce: core::option::Option<AttributeValue<'life>>,
43438    ///
43439    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
43440    ///   
43441    pub part: core::option::Option<AttributeValue<'life>>,
43442    ///
43443    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
43444    ///   
43445    pub popover: core::option::Option<AttributeValue<'life>>,
43446    ///
43447    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
43448    ///   
43449    pub role: core::option::Option<AttributeValue<'life>>,
43450    ///
43451    ///     <p>This attribute contains a non-negative integer value that indicates for how many rows the cell extends. Its default value is <code>1</code>; if its value is set to <code>0</code>, it extends until the end of the table section (<a href="/en-US/docs/Web/HTML/Element/thead"><code>&lt;thead&gt;</code></a>, <a href="/en-US/docs/Web/HTML/Element/tbody"><code>&lt;tbody&gt;</code></a>, <a href="/en-US/docs/Web/HTML/Element/tfoot"><code>&lt;tfoot&gt;</code></a>, even if implicitly defined), that the cell belongs to. Values higher than 65534 are clipped down to 65534.</p>
43452    ///   
43453    pub rowspan: core::option::Option<AttributeValue<'life>>,
43454    ///
43455    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
43456    ///   
43457    pub slot: core::option::Option<AttributeValue<'life>>,
43458    ///
43459    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
43460    ///     <ul>
43461    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
43462    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
43463    ///     </ul>
43464    ///   
43465    pub spellcheck: core::option::Option<AttributeValue<'life>>,
43466    ///
43467    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
43468    ///   
43469    pub style: core::option::Option<AttributeValue<'life>>,
43470    ///
43471    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
43472    ///     <ul>
43473    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
43474    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
43475    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
43476    ///     </ul>
43477    ///   
43478    pub tabindex: core::option::Option<AttributeValue<'life>>,
43479    ///
43480    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
43481    ///   
43482    pub title: core::option::Option<AttributeValue<'life>>,
43483    ///
43484    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
43485    ///     <ul>
43486    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
43487    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
43488    ///     </ul>
43489    ///   
43490    pub translate: core::option::Option<AttributeValue<'life>>,
43491    ///
43492    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
43493    ///     <ul>
43494    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
43495    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
43496    ///     </ul>
43497    ///   
43498    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
43499}
43500#[allow(deprecated)]
43501
43502impl<'life> Td<'life> {
43503    /// Get the tag name of the element.
43504    /// This is the same as the name of the struct, in kebab-case.
43505    pub fn tag() -> &'static str {
43506        "td"
43507    }
43508    /// Sets an attribute of the element.
43509    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
43510    /// If the `alloc` feature is disabled, this function will silently fail.
43511    ///
43512    /// # Note
43513    /// This only works when the attribute is lowercase.
43514    pub fn set_attr(
43515        &mut self,
43516        name: &'life str,
43517        value: impl core::convert::Into<AttributeValue<'life>>,
43518    ) {
43519        match name {
43520            "accesskey" => self.accesskey = Some(value.into()),
43521            "autocapitalize" => self.autocapitalize = Some(value.into()),
43522            "autofocus" => self.autofocus = Some(value.into()),
43523            "class" => self.class = Some(value.into()),
43524            "colspan" => self.colspan = Some(value.into()),
43525            "contenteditable" => self.contenteditable = Some(value.into()),
43526            "contextmenu" => self.contextmenu = Some(value.into()),
43527            "dir" => self.dir = Some(value.into()),
43528            "draggable" => self.draggable = Some(value.into()),
43529            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
43530            "exportparts" => self.exportparts = Some(value.into()),
43531            "headers" => self.headers = Some(value.into()),
43532            "hidden" => self.hidden = Some(value.into()),
43533            "id" => self.id = Some(value.into()),
43534            "inert" => self.inert = Some(value.into()),
43535            "inputmode" => self.inputmode = Some(value.into()),
43536            "is" => self.is = Some(value.into()),
43537            "itemid" => self.itemid = Some(value.into()),
43538            "itemprop" => self.itemprop = Some(value.into()),
43539            "itemref" => self.itemref = Some(value.into()),
43540            "itemscope" => self.itemscope = Some(value.into()),
43541            "itemtype" => self.itemtype = Some(value.into()),
43542            "lang" => self.lang = Some(value.into()),
43543            "nonce" => self.nonce = Some(value.into()),
43544            "part" => self.part = Some(value.into()),
43545            "popover" => self.popover = Some(value.into()),
43546            "role" => self.role = Some(value.into()),
43547            "rowspan" => self.rowspan = Some(value.into()),
43548            "slot" => self.slot = Some(value.into()),
43549            "spellcheck" => self.spellcheck = Some(value.into()),
43550            "style" => self.style = Some(value.into()),
43551            "tabindex" => self.tabindex = Some(value.into()),
43552            "title" => self.title = Some(value.into()),
43553            "translate" => self.translate = Some(value.into()),
43554            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
43555            #[cfg(feature = "alloc")]
43556            _ => {
43557                #[allow(clippy::useless_conversion)]
43558                self.extra.insert(name.into(), value.into());
43559            }
43560            #[cfg(not(feature = "alloc"))]
43561            _ => {}
43562        }
43563    }
43564}
43565/// The <strong><code>&lt;td&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element defines a cell of a table that contains data. It participates in the <em>table model</em>.
43566///
43567/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td>
43568
43569#[cfg(feature = "alloc")]
43570#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
43571pub struct TdOwned {
43572    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
43573    ///   
43574    pub accesskey: core::option::Option<AttributeValueOwned>,
43575    ///
43576    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
43577    ///     <ul>
43578    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
43579    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
43580    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
43581    ///       <li><code>characters</code>, all letters should default to uppercase</li>
43582    ///     </ul>
43583    ///   
43584    pub autocapitalize: core::option::Option<AttributeValueOwned>,
43585    ///
43586    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
43587    ///   
43588    pub autofocus: core::option::Option<AttributeValueOwned>,
43589    ///
43590    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
43591    ///   
43592    pub class: core::option::Option<AttributeValueOwned>,
43593    ///
43594    ///     <p>This attribute contains a non-negative integer value that indicates for how many columns the cell extends. Its default value is <code>1</code>. Values higher than 1000 will be considered as incorrect and will be set to the default value (1).</p>
43595    ///   
43596    pub colspan: core::option::Option<AttributeValueOwned>,
43597    ///
43598    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
43599    ///     <ul>
43600    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
43601    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
43602    ///     </ul>
43603    ///   
43604    pub contenteditable: core::option::Option<AttributeValueOwned>,
43605    ///
43606    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
43607    ///   
43608    pub contextmenu: core::option::Option<AttributeValueOwned>,
43609    ///
43610    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
43611    ///   
43612    #[cfg(feature = "alloc")]
43613    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
43614    ///
43615    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
43616    ///     <ul>
43617    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
43618    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
43619    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
43620    ///     </ul>
43621    ///   
43622    pub dir: core::option::Option<AttributeValueOwned>,
43623    ///
43624    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
43625    ///     <ul>
43626    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
43627    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
43628    ///     </ul>
43629    ///   
43630    pub draggable: core::option::Option<AttributeValueOwned>,
43631    ///
43632    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
43633    ///   
43634    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
43635    ///
43636    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
43637    ///   
43638    pub exportparts: core::option::Option<AttributeValueOwned>,
43639    /// /// Extra attributes of the element.
43640
43641    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
43642    #[cfg(feature = "alloc")]
43643    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
43644    ///
43645    ///     <p>This attribute contains a list of space-separated strings, each corresponding to the <strong>id</strong> attribute of the <a href="/en-US/docs/Web/HTML/Element/th"><code>&lt;th&gt;</code></a> elements that apply to this element.</p>
43646    ///   
43647    pub headers: core::option::Option<AttributeValueOwned>,
43648    ///
43649    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
43650    ///   
43651    pub hidden: core::option::Option<AttributeValueOwned>,
43652    ///
43653    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
43654    ///   
43655    pub id: core::option::Option<AttributeValueOwned>,
43656    ///
43657    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
43658    ///   
43659    pub inert: core::option::Option<AttributeValueOwned>,
43660    ///
43661    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
43662    ///   
43663    pub inputmode: core::option::Option<AttributeValueOwned>,
43664    ///
43665    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
43666    ///   
43667    pub is: core::option::Option<AttributeValueOwned>,
43668    ///
43669    ///     <p>The unique, global identifier of an item.</p>
43670    ///   
43671    pub itemid: core::option::Option<AttributeValueOwned>,
43672    ///
43673    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
43674    ///   
43675    pub itemprop: core::option::Option<AttributeValueOwned>,
43676    ///
43677    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
43678    ///   
43679    pub itemref: core::option::Option<AttributeValueOwned>,
43680    ///
43681    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
43682    ///   
43683    pub itemscope: core::option::Option<AttributeValueOwned>,
43684    ///
43685    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
43686    ///   
43687    pub itemtype: core::option::Option<AttributeValueOwned>,
43688    ///
43689    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
43690    ///   
43691    pub lang: core::option::Option<AttributeValueOwned>,
43692    ///
43693    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
43694    ///   
43695    pub nonce: core::option::Option<AttributeValueOwned>,
43696    ///
43697    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
43698    ///   
43699    pub part: core::option::Option<AttributeValueOwned>,
43700    ///
43701    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
43702    ///   
43703    pub popover: core::option::Option<AttributeValueOwned>,
43704    ///
43705    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
43706    ///   
43707    pub role: core::option::Option<AttributeValueOwned>,
43708    ///
43709    ///     <p>This attribute contains a non-negative integer value that indicates for how many rows the cell extends. Its default value is <code>1</code>; if its value is set to <code>0</code>, it extends until the end of the table section (<a href="/en-US/docs/Web/HTML/Element/thead"><code>&lt;thead&gt;</code></a>, <a href="/en-US/docs/Web/HTML/Element/tbody"><code>&lt;tbody&gt;</code></a>, <a href="/en-US/docs/Web/HTML/Element/tfoot"><code>&lt;tfoot&gt;</code></a>, even if implicitly defined), that the cell belongs to. Values higher than 65534 are clipped down to 65534.</p>
43710    ///   
43711    pub rowspan: core::option::Option<AttributeValueOwned>,
43712    ///
43713    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
43714    ///   
43715    pub slot: core::option::Option<AttributeValueOwned>,
43716    ///
43717    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
43718    ///     <ul>
43719    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
43720    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
43721    ///     </ul>
43722    ///   
43723    pub spellcheck: core::option::Option<AttributeValueOwned>,
43724    ///
43725    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
43726    ///   
43727    pub style: core::option::Option<AttributeValueOwned>,
43728    ///
43729    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
43730    ///     <ul>
43731    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
43732    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
43733    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
43734    ///     </ul>
43735    ///   
43736    pub tabindex: core::option::Option<AttributeValueOwned>,
43737    ///
43738    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
43739    ///   
43740    pub title: core::option::Option<AttributeValueOwned>,
43741    ///
43742    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
43743    ///     <ul>
43744    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
43745    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
43746    ///     </ul>
43747    ///   
43748    pub translate: core::option::Option<AttributeValueOwned>,
43749    ///
43750    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
43751    ///     <ul>
43752    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
43753    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
43754    ///     </ul>
43755    ///   
43756    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
43757}
43758#[allow(deprecated)]
43759#[cfg(feature = "alloc")]
43760impl TdOwned {
43761    /// Get the tag name of the element.
43762    /// This is the same as the name of the struct, in kebab-case.
43763    pub fn tag() -> &'static str {
43764        "td"
43765    }
43766    /// Sets an attribute of the element.
43767    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
43768    /// If the `alloc` feature is disabled, this function will silently fail.
43769    ///
43770    /// # Note
43771    /// This only works when the attribute is lowercase.
43772    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
43773        match name {
43774            "accesskey" => self.accesskey = Some(value.into()),
43775            "autocapitalize" => self.autocapitalize = Some(value.into()),
43776            "autofocus" => self.autofocus = Some(value.into()),
43777            "class" => self.class = Some(value.into()),
43778            "colspan" => self.colspan = Some(value.into()),
43779            "contenteditable" => self.contenteditable = Some(value.into()),
43780            "contextmenu" => self.contextmenu = Some(value.into()),
43781            "dir" => self.dir = Some(value.into()),
43782            "draggable" => self.draggable = Some(value.into()),
43783            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
43784            "exportparts" => self.exportparts = Some(value.into()),
43785            "headers" => self.headers = Some(value.into()),
43786            "hidden" => self.hidden = Some(value.into()),
43787            "id" => self.id = Some(value.into()),
43788            "inert" => self.inert = Some(value.into()),
43789            "inputmode" => self.inputmode = Some(value.into()),
43790            "is" => self.is = Some(value.into()),
43791            "itemid" => self.itemid = Some(value.into()),
43792            "itemprop" => self.itemprop = Some(value.into()),
43793            "itemref" => self.itemref = Some(value.into()),
43794            "itemscope" => self.itemscope = Some(value.into()),
43795            "itemtype" => self.itemtype = Some(value.into()),
43796            "lang" => self.lang = Some(value.into()),
43797            "nonce" => self.nonce = Some(value.into()),
43798            "part" => self.part = Some(value.into()),
43799            "popover" => self.popover = Some(value.into()),
43800            "role" => self.role = Some(value.into()),
43801            "rowspan" => self.rowspan = Some(value.into()),
43802            "slot" => self.slot = Some(value.into()),
43803            "spellcheck" => self.spellcheck = Some(value.into()),
43804            "style" => self.style = Some(value.into()),
43805            "tabindex" => self.tabindex = Some(value.into()),
43806            "title" => self.title = Some(value.into()),
43807            "translate" => self.translate = Some(value.into()),
43808            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
43809            #[cfg(feature = "alloc")]
43810            _ => {
43811                #[allow(clippy::useless_conversion)]
43812                self.extra.insert(name.into(), value.into());
43813            }
43814            #[cfg(not(feature = "alloc"))]
43815            _ => {}
43816        }
43817    }
43818}
43819/// The <strong><code>&lt;tfoot&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element defines a set of rows summarizing the columns of the table.
43820///
43821/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tfoot>
43822
43823#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
43824pub struct Tfoot<'life> {
43825    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
43826    ///   
43827    pub accesskey: core::option::Option<AttributeValue<'life>>,
43828    ///
43829    ///     <p>This <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute specifies how horizontal alignment of each cell content will be handled. Possible values are:</p>
43830    ///     <ul>
43831    ///       <li><code>left</code>, aligning the content to the left of the cell</li>
43832    ///       <li><code>center</code>, centering the content in the cell</li>
43833    ///       <li><code>right</code>, aligning the content to the right of the cell</li>
43834    ///       <li><code>justify</code>, inserting spaces into the textual content so that the content is justified in the cell</li>
43835    ///       <li><code>char</code>, aligning the textual content on a special character with a minimal offset, defined by the <a href="#char"><code>char</code></a> and <a href="#charoff"><code>charoff</code></a> attributes.</li>
43836    ///     </ul>
43837    ///     <p>If this attribute is not set, the <code>left</code> value is assumed.</p>
43838    ///     <div class="notecard note" id="sect1">
43839    ///       <p><strong>Note:</strong></p>
43840    ///       <ul>
43841    ///         <li>To achieve the same effect as the <code>left</code>, <code>center</code>, <code>right</code> or <code>justify</code> values, use the CSS <a href="/en-US/docs/Web/CSS/text-align"><code>text-align</code></a> property on it.</li>
43842    ///         <li>To achieve the same effect as the <code>char</code> value, in CSS, you can use the value of the <a href="#char"><code>char</code></a> as the value of the <a href="/en-US/docs/Web/CSS/text-align"><code>text-align</code></a> property.</li>
43843    ///       </ul>
43844    ///     </div>
43845    ///   
43846    pub align: core::option::Option<AttributeValue<'life>>,
43847    ///
43848    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
43849    ///     <ul>
43850    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
43851    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
43852    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
43853    ///       <li><code>characters</code>, all letters should default to uppercase</li>
43854    ///     </ul>
43855    ///   
43856    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
43857    ///
43858    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
43859    ///   
43860    pub autofocus: core::option::Option<AttributeValue<'life>>,
43861    ///
43862    ///     <p>The background color of the table. It is a <a href="/en-US/docs/Web/CSS/hex-color">6-digit hexadecimal RGB code</a>, prefixed by a '<code>#</code>'. One of the predefined <a href="/en-US/docs/Web/CSS/named-color">color keywords</a> can also be used.</p>
43863    ///     <p>To achieve a similar effect, use the CSS <a href="/en-US/docs/Web/CSS/background-color"><code>background-color</code></a> property.</p>
43864    ///   
43865    pub bgcolor: core::option::Option<AttributeValue<'life>>,
43866    ///
43867    ///     <p>This attribute specifies the alignment of the content in a column to a character. Typical values for this include a period (.) when attempting to align numbers or monetary values. If <a href="#align"><code>align</code></a> is not set to <code>char</code>, this attribute is ignored.</p>
43868    ///   
43869    pub char: core::option::Option<AttributeValue<'life>>,
43870    ///
43871    ///     <p>This attribute is used to indicate the number of characters to offset the column data from the alignment characters specified by the <code>char</code> attribute.</p>
43872    ///   
43873    pub charoff: core::option::Option<AttributeValue<'life>>,
43874    ///
43875    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
43876    ///   
43877    pub class: core::option::Option<AttributeValue<'life>>,
43878    ///
43879    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
43880    ///     <ul>
43881    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
43882    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
43883    ///     </ul>
43884    ///   
43885    pub contenteditable: core::option::Option<AttributeValue<'life>>,
43886    ///
43887    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
43888    ///   
43889    pub contextmenu: core::option::Option<AttributeValue<'life>>,
43890    ///
43891    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
43892    ///   
43893    #[cfg(feature = "alloc")]
43894    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
43895    ///
43896    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
43897    ///     <ul>
43898    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
43899    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
43900    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
43901    ///     </ul>
43902    ///   
43903    pub dir: core::option::Option<AttributeValue<'life>>,
43904    ///
43905    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
43906    ///     <ul>
43907    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
43908    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
43909    ///     </ul>
43910    ///   
43911    pub draggable: core::option::Option<AttributeValue<'life>>,
43912    ///
43913    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
43914    ///   
43915    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
43916    ///
43917    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
43918    ///   
43919    pub exportparts: core::option::Option<AttributeValue<'life>>,
43920    /// /// Extra attributes of the element.
43921
43922    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
43923    #[cfg(feature = "alloc")]
43924    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
43925    ///
43926    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
43927    ///   
43928    pub hidden: core::option::Option<AttributeValue<'life>>,
43929    ///
43930    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
43931    ///   
43932    pub id: core::option::Option<AttributeValue<'life>>,
43933    ///
43934    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
43935    ///   
43936    pub inert: core::option::Option<AttributeValue<'life>>,
43937    ///
43938    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
43939    ///   
43940    pub inputmode: core::option::Option<AttributeValue<'life>>,
43941    ///
43942    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
43943    ///   
43944    pub is: core::option::Option<AttributeValue<'life>>,
43945    ///
43946    ///     <p>The unique, global identifier of an item.</p>
43947    ///   
43948    pub itemid: core::option::Option<AttributeValue<'life>>,
43949    ///
43950    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
43951    ///   
43952    pub itemprop: core::option::Option<AttributeValue<'life>>,
43953    ///
43954    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
43955    ///   
43956    pub itemref: core::option::Option<AttributeValue<'life>>,
43957    ///
43958    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
43959    ///   
43960    pub itemscope: core::option::Option<AttributeValue<'life>>,
43961    ///
43962    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
43963    ///   
43964    pub itemtype: core::option::Option<AttributeValue<'life>>,
43965    ///
43966    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
43967    ///   
43968    pub lang: core::option::Option<AttributeValue<'life>>,
43969    ///
43970    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
43971    ///   
43972    pub nonce: core::option::Option<AttributeValue<'life>>,
43973    ///
43974    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
43975    ///   
43976    pub part: core::option::Option<AttributeValue<'life>>,
43977    ///
43978    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
43979    ///   
43980    pub popover: core::option::Option<AttributeValue<'life>>,
43981    ///
43982    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
43983    ///   
43984    pub role: core::option::Option<AttributeValue<'life>>,
43985    ///
43986    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
43987    ///   
43988    pub slot: core::option::Option<AttributeValue<'life>>,
43989    ///
43990    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
43991    ///     <ul>
43992    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
43993    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
43994    ///     </ul>
43995    ///   
43996    pub spellcheck: core::option::Option<AttributeValue<'life>>,
43997    ///
43998    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
43999    ///   
44000    pub style: core::option::Option<AttributeValue<'life>>,
44001    ///
44002    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
44003    ///     <ul>
44004    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
44005    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
44006    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
44007    ///     </ul>
44008    ///   
44009    pub tabindex: core::option::Option<AttributeValue<'life>>,
44010    ///
44011    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
44012    ///   
44013    pub title: core::option::Option<AttributeValue<'life>>,
44014    ///
44015    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
44016    ///     <ul>
44017    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
44018    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
44019    ///     </ul>
44020    ///   
44021    pub translate: core::option::Option<AttributeValue<'life>>,
44022    ///
44023    ///     <p>This attribute specifies the vertical alignment of the text within each row of cells of the table footer. Possible values for this attribute are:</p>
44024    ///     <ul>
44025    ///       <li><code>baseline</code>, which will put the text as close to the bottom of the cell as it is possible, but align it on the <a href="https://en.wikipedia.org/wiki/Baseline_%28typography%29" target="_blank" class="external">baseline</a> of the characters instead of the bottom of them. If characters are all of the size, this has the same effect as <code>bottom</code>.</li>
44026    ///       <li><code>bottom</code>, which will put the text as close to the bottom of the cell as it is possible;</li>
44027    ///       <li><code>middle</code>, which will center the text in the cell;</li>
44028    ///       <li>and <code>top</code>, which will put the text as close to the top of the cell as it is possible.</li>
44029    ///     </ul>
44030    ///     <div id="sect2" class="notecard note">
44031    ///       <p><strong>Note:</strong> Do not use this attribute as it is obsolete (and not supported) in the latest standard: instead set the CSS <a href="/en-US/docs/Web/CSS/vertical-align"><code>vertical-align</code></a> property on it.</p>
44032    ///     </div>
44033    ///   
44034    pub valign: core::option::Option<AttributeValue<'life>>,
44035    ///
44036    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
44037    ///     <ul>
44038    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
44039    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
44040    ///     </ul>
44041    ///   
44042    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
44043}
44044#[allow(deprecated)]
44045
44046impl<'life> Tfoot<'life> {
44047    /// Get the tag name of the element.
44048    /// This is the same as the name of the struct, in kebab-case.
44049    pub fn tag() -> &'static str {
44050        "tfoot"
44051    }
44052    /// Sets an attribute of the element.
44053    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
44054    /// If the `alloc` feature is disabled, this function will silently fail.
44055    ///
44056    /// # Note
44057    /// This only works when the attribute is lowercase.
44058    pub fn set_attr(
44059        &mut self,
44060        name: &'life str,
44061        value: impl core::convert::Into<AttributeValue<'life>>,
44062    ) {
44063        match name {
44064            "accesskey" => self.accesskey = Some(value.into()),
44065            "align" => self.align = Some(value.into()),
44066            "autocapitalize" => self.autocapitalize = Some(value.into()),
44067            "autofocus" => self.autofocus = Some(value.into()),
44068            "bgcolor" => self.bgcolor = Some(value.into()),
44069            "char" => self.char = Some(value.into()),
44070            "charoff" => self.charoff = Some(value.into()),
44071            "class" => self.class = Some(value.into()),
44072            "contenteditable" => self.contenteditable = Some(value.into()),
44073            "contextmenu" => self.contextmenu = Some(value.into()),
44074            "dir" => self.dir = Some(value.into()),
44075            "draggable" => self.draggable = Some(value.into()),
44076            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
44077            "exportparts" => self.exportparts = Some(value.into()),
44078            "hidden" => self.hidden = Some(value.into()),
44079            "id" => self.id = Some(value.into()),
44080            "inert" => self.inert = Some(value.into()),
44081            "inputmode" => self.inputmode = Some(value.into()),
44082            "is" => self.is = Some(value.into()),
44083            "itemid" => self.itemid = Some(value.into()),
44084            "itemprop" => self.itemprop = Some(value.into()),
44085            "itemref" => self.itemref = Some(value.into()),
44086            "itemscope" => self.itemscope = Some(value.into()),
44087            "itemtype" => self.itemtype = Some(value.into()),
44088            "lang" => self.lang = Some(value.into()),
44089            "nonce" => self.nonce = Some(value.into()),
44090            "part" => self.part = Some(value.into()),
44091            "popover" => self.popover = Some(value.into()),
44092            "role" => self.role = Some(value.into()),
44093            "slot" => self.slot = Some(value.into()),
44094            "spellcheck" => self.spellcheck = Some(value.into()),
44095            "style" => self.style = Some(value.into()),
44096            "tabindex" => self.tabindex = Some(value.into()),
44097            "title" => self.title = Some(value.into()),
44098            "translate" => self.translate = Some(value.into()),
44099            "valign" => self.valign = Some(value.into()),
44100            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
44101            #[cfg(feature = "alloc")]
44102            _ => {
44103                #[allow(clippy::useless_conversion)]
44104                self.extra.insert(name.into(), value.into());
44105            }
44106            #[cfg(not(feature = "alloc"))]
44107            _ => {}
44108        }
44109    }
44110}
44111/// The <strong><code>&lt;tfoot&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element defines a set of rows summarizing the columns of the table.
44112///
44113/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tfoot>
44114
44115#[cfg(feature = "alloc")]
44116#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
44117pub struct TfootOwned {
44118    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
44119    ///   
44120    pub accesskey: core::option::Option<AttributeValueOwned>,
44121    ///
44122    ///     <p>This <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute specifies how horizontal alignment of each cell content will be handled. Possible values are:</p>
44123    ///     <ul>
44124    ///       <li><code>left</code>, aligning the content to the left of the cell</li>
44125    ///       <li><code>center</code>, centering the content in the cell</li>
44126    ///       <li><code>right</code>, aligning the content to the right of the cell</li>
44127    ///       <li><code>justify</code>, inserting spaces into the textual content so that the content is justified in the cell</li>
44128    ///       <li><code>char</code>, aligning the textual content on a special character with a minimal offset, defined by the <a href="#char"><code>char</code></a> and <a href="#charoff"><code>charoff</code></a> attributes.</li>
44129    ///     </ul>
44130    ///     <p>If this attribute is not set, the <code>left</code> value is assumed.</p>
44131    ///     <div class="notecard note" id="sect1">
44132    ///       <p><strong>Note:</strong></p>
44133    ///       <ul>
44134    ///         <li>To achieve the same effect as the <code>left</code>, <code>center</code>, <code>right</code> or <code>justify</code> values, use the CSS <a href="/en-US/docs/Web/CSS/text-align"><code>text-align</code></a> property on it.</li>
44135    ///         <li>To achieve the same effect as the <code>char</code> value, in CSS, you can use the value of the <a href="#char"><code>char</code></a> as the value of the <a href="/en-US/docs/Web/CSS/text-align"><code>text-align</code></a> property.</li>
44136    ///       </ul>
44137    ///     </div>
44138    ///   
44139    pub align: core::option::Option<AttributeValueOwned>,
44140    ///
44141    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
44142    ///     <ul>
44143    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
44144    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
44145    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
44146    ///       <li><code>characters</code>, all letters should default to uppercase</li>
44147    ///     </ul>
44148    ///   
44149    pub autocapitalize: core::option::Option<AttributeValueOwned>,
44150    ///
44151    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
44152    ///   
44153    pub autofocus: core::option::Option<AttributeValueOwned>,
44154    ///
44155    ///     <p>The background color of the table. It is a <a href="/en-US/docs/Web/CSS/hex-color">6-digit hexadecimal RGB code</a>, prefixed by a '<code>#</code>'. One of the predefined <a href="/en-US/docs/Web/CSS/named-color">color keywords</a> can also be used.</p>
44156    ///     <p>To achieve a similar effect, use the CSS <a href="/en-US/docs/Web/CSS/background-color"><code>background-color</code></a> property.</p>
44157    ///   
44158    pub bgcolor: core::option::Option<AttributeValueOwned>,
44159    ///
44160    ///     <p>This attribute specifies the alignment of the content in a column to a character. Typical values for this include a period (.) when attempting to align numbers or monetary values. If <a href="#align"><code>align</code></a> is not set to <code>char</code>, this attribute is ignored.</p>
44161    ///   
44162    pub char: core::option::Option<AttributeValueOwned>,
44163    ///
44164    ///     <p>This attribute is used to indicate the number of characters to offset the column data from the alignment characters specified by the <code>char</code> attribute.</p>
44165    ///   
44166    pub charoff: core::option::Option<AttributeValueOwned>,
44167    ///
44168    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
44169    ///   
44170    pub class: core::option::Option<AttributeValueOwned>,
44171    ///
44172    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
44173    ///     <ul>
44174    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
44175    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
44176    ///     </ul>
44177    ///   
44178    pub contenteditable: core::option::Option<AttributeValueOwned>,
44179    ///
44180    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
44181    ///   
44182    pub contextmenu: core::option::Option<AttributeValueOwned>,
44183    ///
44184    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
44185    ///   
44186    #[cfg(feature = "alloc")]
44187    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
44188    ///
44189    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
44190    ///     <ul>
44191    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
44192    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
44193    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
44194    ///     </ul>
44195    ///   
44196    pub dir: core::option::Option<AttributeValueOwned>,
44197    ///
44198    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
44199    ///     <ul>
44200    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
44201    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
44202    ///     </ul>
44203    ///   
44204    pub draggable: core::option::Option<AttributeValueOwned>,
44205    ///
44206    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
44207    ///   
44208    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
44209    ///
44210    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
44211    ///   
44212    pub exportparts: core::option::Option<AttributeValueOwned>,
44213    /// /// Extra attributes of the element.
44214
44215    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
44216    #[cfg(feature = "alloc")]
44217    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
44218    ///
44219    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
44220    ///   
44221    pub hidden: core::option::Option<AttributeValueOwned>,
44222    ///
44223    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
44224    ///   
44225    pub id: core::option::Option<AttributeValueOwned>,
44226    ///
44227    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
44228    ///   
44229    pub inert: core::option::Option<AttributeValueOwned>,
44230    ///
44231    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
44232    ///   
44233    pub inputmode: core::option::Option<AttributeValueOwned>,
44234    ///
44235    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
44236    ///   
44237    pub is: core::option::Option<AttributeValueOwned>,
44238    ///
44239    ///     <p>The unique, global identifier of an item.</p>
44240    ///   
44241    pub itemid: core::option::Option<AttributeValueOwned>,
44242    ///
44243    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
44244    ///   
44245    pub itemprop: core::option::Option<AttributeValueOwned>,
44246    ///
44247    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
44248    ///   
44249    pub itemref: core::option::Option<AttributeValueOwned>,
44250    ///
44251    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
44252    ///   
44253    pub itemscope: core::option::Option<AttributeValueOwned>,
44254    ///
44255    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
44256    ///   
44257    pub itemtype: core::option::Option<AttributeValueOwned>,
44258    ///
44259    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
44260    ///   
44261    pub lang: core::option::Option<AttributeValueOwned>,
44262    ///
44263    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
44264    ///   
44265    pub nonce: core::option::Option<AttributeValueOwned>,
44266    ///
44267    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
44268    ///   
44269    pub part: core::option::Option<AttributeValueOwned>,
44270    ///
44271    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
44272    ///   
44273    pub popover: core::option::Option<AttributeValueOwned>,
44274    ///
44275    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
44276    ///   
44277    pub role: core::option::Option<AttributeValueOwned>,
44278    ///
44279    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
44280    ///   
44281    pub slot: core::option::Option<AttributeValueOwned>,
44282    ///
44283    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
44284    ///     <ul>
44285    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
44286    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
44287    ///     </ul>
44288    ///   
44289    pub spellcheck: core::option::Option<AttributeValueOwned>,
44290    ///
44291    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
44292    ///   
44293    pub style: core::option::Option<AttributeValueOwned>,
44294    ///
44295    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
44296    ///     <ul>
44297    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
44298    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
44299    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
44300    ///     </ul>
44301    ///   
44302    pub tabindex: core::option::Option<AttributeValueOwned>,
44303    ///
44304    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
44305    ///   
44306    pub title: core::option::Option<AttributeValueOwned>,
44307    ///
44308    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
44309    ///     <ul>
44310    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
44311    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
44312    ///     </ul>
44313    ///   
44314    pub translate: core::option::Option<AttributeValueOwned>,
44315    ///
44316    ///     <p>This attribute specifies the vertical alignment of the text within each row of cells of the table footer. Possible values for this attribute are:</p>
44317    ///     <ul>
44318    ///       <li><code>baseline</code>, which will put the text as close to the bottom of the cell as it is possible, but align it on the <a href="https://en.wikipedia.org/wiki/Baseline_%28typography%29" target="_blank" class="external">baseline</a> of the characters instead of the bottom of them. If characters are all of the size, this has the same effect as <code>bottom</code>.</li>
44319    ///       <li><code>bottom</code>, which will put the text as close to the bottom of the cell as it is possible;</li>
44320    ///       <li><code>middle</code>, which will center the text in the cell;</li>
44321    ///       <li>and <code>top</code>, which will put the text as close to the top of the cell as it is possible.</li>
44322    ///     </ul>
44323    ///     <div id="sect2" class="notecard note">
44324    ///       <p><strong>Note:</strong> Do not use this attribute as it is obsolete (and not supported) in the latest standard: instead set the CSS <a href="/en-US/docs/Web/CSS/vertical-align"><code>vertical-align</code></a> property on it.</p>
44325    ///     </div>
44326    ///   
44327    pub valign: core::option::Option<AttributeValueOwned>,
44328    ///
44329    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
44330    ///     <ul>
44331    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
44332    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
44333    ///     </ul>
44334    ///   
44335    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
44336}
44337#[allow(deprecated)]
44338#[cfg(feature = "alloc")]
44339impl TfootOwned {
44340    /// Get the tag name of the element.
44341    /// This is the same as the name of the struct, in kebab-case.
44342    pub fn tag() -> &'static str {
44343        "tfoot"
44344    }
44345    /// Sets an attribute of the element.
44346    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
44347    /// If the `alloc` feature is disabled, this function will silently fail.
44348    ///
44349    /// # Note
44350    /// This only works when the attribute is lowercase.
44351    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
44352        match name {
44353            "accesskey" => self.accesskey = Some(value.into()),
44354            "align" => self.align = Some(value.into()),
44355            "autocapitalize" => self.autocapitalize = Some(value.into()),
44356            "autofocus" => self.autofocus = Some(value.into()),
44357            "bgcolor" => self.bgcolor = Some(value.into()),
44358            "char" => self.char = Some(value.into()),
44359            "charoff" => self.charoff = Some(value.into()),
44360            "class" => self.class = Some(value.into()),
44361            "contenteditable" => self.contenteditable = Some(value.into()),
44362            "contextmenu" => self.contextmenu = Some(value.into()),
44363            "dir" => self.dir = Some(value.into()),
44364            "draggable" => self.draggable = Some(value.into()),
44365            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
44366            "exportparts" => self.exportparts = Some(value.into()),
44367            "hidden" => self.hidden = Some(value.into()),
44368            "id" => self.id = Some(value.into()),
44369            "inert" => self.inert = Some(value.into()),
44370            "inputmode" => self.inputmode = Some(value.into()),
44371            "is" => self.is = Some(value.into()),
44372            "itemid" => self.itemid = Some(value.into()),
44373            "itemprop" => self.itemprop = Some(value.into()),
44374            "itemref" => self.itemref = Some(value.into()),
44375            "itemscope" => self.itemscope = Some(value.into()),
44376            "itemtype" => self.itemtype = Some(value.into()),
44377            "lang" => self.lang = Some(value.into()),
44378            "nonce" => self.nonce = Some(value.into()),
44379            "part" => self.part = Some(value.into()),
44380            "popover" => self.popover = Some(value.into()),
44381            "role" => self.role = Some(value.into()),
44382            "slot" => self.slot = Some(value.into()),
44383            "spellcheck" => self.spellcheck = Some(value.into()),
44384            "style" => self.style = Some(value.into()),
44385            "tabindex" => self.tabindex = Some(value.into()),
44386            "title" => self.title = Some(value.into()),
44387            "translate" => self.translate = Some(value.into()),
44388            "valign" => self.valign = Some(value.into()),
44389            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
44390            #[cfg(feature = "alloc")]
44391            _ => {
44392                #[allow(clippy::useless_conversion)]
44393                self.extra.insert(name.into(), value.into());
44394            }
44395            #[cfg(not(feature = "alloc"))]
44396            _ => {}
44397        }
44398    }
44399}
44400/// The <strong><code>&lt;th&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element defines a cell as the header of a group of table cells. The exact nature of this group is defined by the <a href="#scope"><code>scope</code></a> and <a href="#headers"><code>headers</code></a> attributes.
44401///
44402/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/th>
44403
44404#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
44405pub struct Th<'life> {
44406    ///     <p>This attribute contains a short abbreviated description of the cell's content. Some user-agents, such as speech readers, may present this description before the content itself.</p>
44407    ///   
44408    pub abbr: core::option::Option<AttributeValue<'life>>,
44409    ///
44410    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
44411    ///   
44412    pub accesskey: core::option::Option<AttributeValue<'life>>,
44413    ///
44414    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
44415    ///     <ul>
44416    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
44417    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
44418    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
44419    ///       <li><code>characters</code>, all letters should default to uppercase</li>
44420    ///     </ul>
44421    ///   
44422    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
44423    ///
44424    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
44425    ///   
44426    pub autofocus: core::option::Option<AttributeValue<'life>>,
44427    ///
44428    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
44429    ///   
44430    pub class: core::option::Option<AttributeValue<'life>>,
44431    ///
44432    ///     <p>This attribute contains a non-negative integer value that indicates for how many columns the cell extends. Its default value is <code>1</code>. Values higher than 1000 will be considered as incorrect and will be set to the default value (1).</p>
44433    ///   
44434    pub colspan: core::option::Option<AttributeValue<'life>>,
44435    ///
44436    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
44437    ///     <ul>
44438    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
44439    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
44440    ///     </ul>
44441    ///   
44442    pub contenteditable: core::option::Option<AttributeValue<'life>>,
44443    ///
44444    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
44445    ///   
44446    pub contextmenu: core::option::Option<AttributeValue<'life>>,
44447    ///
44448    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
44449    ///   
44450    #[cfg(feature = "alloc")]
44451    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
44452    ///
44453    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
44454    ///     <ul>
44455    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
44456    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
44457    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
44458    ///     </ul>
44459    ///   
44460    pub dir: core::option::Option<AttributeValue<'life>>,
44461    ///
44462    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
44463    ///     <ul>
44464    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
44465    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
44466    ///     </ul>
44467    ///   
44468    pub draggable: core::option::Option<AttributeValue<'life>>,
44469    ///
44470    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
44471    ///   
44472    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
44473    ///
44474    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
44475    ///   
44476    pub exportparts: core::option::Option<AttributeValue<'life>>,
44477    /// /// Extra attributes of the element.
44478
44479    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
44480    #[cfg(feature = "alloc")]
44481    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
44482    ///
44483    ///     <p>This attribute contains a list of space-separated strings, each corresponding to the <strong>id</strong> attribute of the <a aria-current="page" href="/en-US/docs/Web/HTML/Element/th"><code>&lt;th&gt;</code></a> elements that apply to this element.</p>
44484    ///   
44485    pub headers: core::option::Option<AttributeValue<'life>>,
44486    ///
44487    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
44488    ///   
44489    pub hidden: core::option::Option<AttributeValue<'life>>,
44490    ///
44491    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
44492    ///   
44493    pub id: core::option::Option<AttributeValue<'life>>,
44494    ///
44495    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
44496    ///   
44497    pub inert: core::option::Option<AttributeValue<'life>>,
44498    ///
44499    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
44500    ///   
44501    pub inputmode: core::option::Option<AttributeValue<'life>>,
44502    ///
44503    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
44504    ///   
44505    pub is: core::option::Option<AttributeValue<'life>>,
44506    ///
44507    ///     <p>The unique, global identifier of an item.</p>
44508    ///   
44509    pub itemid: core::option::Option<AttributeValue<'life>>,
44510    ///
44511    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
44512    ///   
44513    pub itemprop: core::option::Option<AttributeValue<'life>>,
44514    ///
44515    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
44516    ///   
44517    pub itemref: core::option::Option<AttributeValue<'life>>,
44518    ///
44519    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
44520    ///   
44521    pub itemscope: core::option::Option<AttributeValue<'life>>,
44522    ///
44523    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
44524    ///   
44525    pub itemtype: core::option::Option<AttributeValue<'life>>,
44526    ///
44527    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
44528    ///   
44529    pub lang: core::option::Option<AttributeValue<'life>>,
44530    ///
44531    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
44532    ///   
44533    pub nonce: core::option::Option<AttributeValue<'life>>,
44534    ///
44535    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
44536    ///   
44537    pub part: core::option::Option<AttributeValue<'life>>,
44538    ///
44539    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
44540    ///   
44541    pub popover: core::option::Option<AttributeValue<'life>>,
44542    ///
44543    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
44544    ///   
44545    pub role: core::option::Option<AttributeValue<'life>>,
44546    ///
44547    ///     <p>This attribute contains a non-negative integer value that indicates for how many rows the cell extends. Its default value is <code>1</code>; if its value is set to <code>0</code>, it extends until the end of the table section (<a href="/en-US/docs/Web/HTML/Element/thead"><code>&lt;thead&gt;</code></a>, <a href="/en-US/docs/Web/HTML/Element/tbody"><code>&lt;tbody&gt;</code></a>, <a href="/en-US/docs/Web/HTML/Element/tfoot"><code>&lt;tfoot&gt;</code></a>, even if implicitly defined), that the cell belongs to. Values higher than 65534 are clipped down to 65534.</p>
44548    ///   
44549    pub rowspan: core::option::Option<AttributeValue<'life>>,
44550    ///
44551    ///     <p>This <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute defines the cells that the header (defined in the <a href="/en-US/docs/Web/HTML/Element/th" aria-current="page"><code>&lt;th&gt;</code></a>) element relates to. It may have the following values:</p>
44552    ///     <ul>
44553    ///       <li><code>row</code>: The header relates to all cells of the row it belongs to.</li>
44554    ///       <li><code>col</code>: The header relates to all cells of the column it belongs to.</li>
44555    ///       <li><code>rowgroup</code>: The header belongs to a rowgroup and relates to all of its cells. These cells can be placed to the right or the left of the header, depending on the value of the <a href="/en-US/docs/Web/HTML/Global_attributes/dir"><code>dir</code></a> attribute in the <a href="/en-US/docs/Web/HTML/Element/table"><code>&lt;table&gt;</code></a> element.</li>
44556    ///       <li><code>colgroup</code>: The header belongs to a colgroup and relates to all of its cells.</li>
44557    ///     </ul>
44558    ///     <p>If the <code>scope</code> attribute is not specified, or its value is not <code>row</code>, <code>col</code>, or <code>rowgroup</code>, or <code>colgroup</code>, then browsers automatically select the set of cells to which the header cell applies.</p>
44559    ///   
44560    pub scope: core::option::Option<AttributeValue<'life>>,
44561    ///
44562    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
44563    ///   
44564    pub slot: core::option::Option<AttributeValue<'life>>,
44565    ///
44566    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
44567    ///     <ul>
44568    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
44569    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
44570    ///     </ul>
44571    ///   
44572    pub spellcheck: core::option::Option<AttributeValue<'life>>,
44573    ///
44574    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
44575    ///   
44576    pub style: core::option::Option<AttributeValue<'life>>,
44577    ///
44578    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
44579    ///     <ul>
44580    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
44581    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
44582    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
44583    ///     </ul>
44584    ///   
44585    pub tabindex: core::option::Option<AttributeValue<'life>>,
44586    ///
44587    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
44588    ///   
44589    pub title: core::option::Option<AttributeValue<'life>>,
44590    ///
44591    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
44592    ///     <ul>
44593    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
44594    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
44595    ///     </ul>
44596    ///   
44597    pub translate: core::option::Option<AttributeValue<'life>>,
44598    ///
44599    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
44600    ///     <ul>
44601    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
44602    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
44603    ///     </ul>
44604    ///   
44605    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
44606}
44607#[allow(deprecated)]
44608
44609impl<'life> Th<'life> {
44610    /// Get the tag name of the element.
44611    /// This is the same as the name of the struct, in kebab-case.
44612    pub fn tag() -> &'static str {
44613        "th"
44614    }
44615    /// Sets an attribute of the element.
44616    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
44617    /// If the `alloc` feature is disabled, this function will silently fail.
44618    ///
44619    /// # Note
44620    /// This only works when the attribute is lowercase.
44621    pub fn set_attr(
44622        &mut self,
44623        name: &'life str,
44624        value: impl core::convert::Into<AttributeValue<'life>>,
44625    ) {
44626        match name {
44627            "abbr" => self.abbr = Some(value.into()),
44628            "accesskey" => self.accesskey = Some(value.into()),
44629            "autocapitalize" => self.autocapitalize = Some(value.into()),
44630            "autofocus" => self.autofocus = Some(value.into()),
44631            "class" => self.class = Some(value.into()),
44632            "colspan" => self.colspan = Some(value.into()),
44633            "contenteditable" => self.contenteditable = Some(value.into()),
44634            "contextmenu" => self.contextmenu = Some(value.into()),
44635            "dir" => self.dir = Some(value.into()),
44636            "draggable" => self.draggable = Some(value.into()),
44637            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
44638            "exportparts" => self.exportparts = Some(value.into()),
44639            "headers" => self.headers = Some(value.into()),
44640            "hidden" => self.hidden = Some(value.into()),
44641            "id" => self.id = Some(value.into()),
44642            "inert" => self.inert = Some(value.into()),
44643            "inputmode" => self.inputmode = Some(value.into()),
44644            "is" => self.is = Some(value.into()),
44645            "itemid" => self.itemid = Some(value.into()),
44646            "itemprop" => self.itemprop = Some(value.into()),
44647            "itemref" => self.itemref = Some(value.into()),
44648            "itemscope" => self.itemscope = Some(value.into()),
44649            "itemtype" => self.itemtype = Some(value.into()),
44650            "lang" => self.lang = Some(value.into()),
44651            "nonce" => self.nonce = Some(value.into()),
44652            "part" => self.part = Some(value.into()),
44653            "popover" => self.popover = Some(value.into()),
44654            "role" => self.role = Some(value.into()),
44655            "rowspan" => self.rowspan = Some(value.into()),
44656            "scope" => self.scope = Some(value.into()),
44657            "slot" => self.slot = Some(value.into()),
44658            "spellcheck" => self.spellcheck = Some(value.into()),
44659            "style" => self.style = Some(value.into()),
44660            "tabindex" => self.tabindex = Some(value.into()),
44661            "title" => self.title = Some(value.into()),
44662            "translate" => self.translate = Some(value.into()),
44663            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
44664            #[cfg(feature = "alloc")]
44665            _ => {
44666                #[allow(clippy::useless_conversion)]
44667                self.extra.insert(name.into(), value.into());
44668            }
44669            #[cfg(not(feature = "alloc"))]
44670            _ => {}
44671        }
44672    }
44673}
44674/// The <strong><code>&lt;th&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element defines a cell as the header of a group of table cells. The exact nature of this group is defined by the <a href="#scope"><code>scope</code></a> and <a href="#headers"><code>headers</code></a> attributes.
44675///
44676/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/th>
44677
44678#[cfg(feature = "alloc")]
44679#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
44680pub struct ThOwned {
44681    ///     <p>This attribute contains a short abbreviated description of the cell's content. Some user-agents, such as speech readers, may present this description before the content itself.</p>
44682    ///   
44683    pub abbr: core::option::Option<AttributeValueOwned>,
44684    ///
44685    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
44686    ///   
44687    pub accesskey: core::option::Option<AttributeValueOwned>,
44688    ///
44689    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
44690    ///     <ul>
44691    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
44692    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
44693    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
44694    ///       <li><code>characters</code>, all letters should default to uppercase</li>
44695    ///     </ul>
44696    ///   
44697    pub autocapitalize: core::option::Option<AttributeValueOwned>,
44698    ///
44699    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
44700    ///   
44701    pub autofocus: core::option::Option<AttributeValueOwned>,
44702    ///
44703    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
44704    ///   
44705    pub class: core::option::Option<AttributeValueOwned>,
44706    ///
44707    ///     <p>This attribute contains a non-negative integer value that indicates for how many columns the cell extends. Its default value is <code>1</code>. Values higher than 1000 will be considered as incorrect and will be set to the default value (1).</p>
44708    ///   
44709    pub colspan: core::option::Option<AttributeValueOwned>,
44710    ///
44711    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
44712    ///     <ul>
44713    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
44714    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
44715    ///     </ul>
44716    ///   
44717    pub contenteditable: core::option::Option<AttributeValueOwned>,
44718    ///
44719    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
44720    ///   
44721    pub contextmenu: core::option::Option<AttributeValueOwned>,
44722    ///
44723    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
44724    ///   
44725    #[cfg(feature = "alloc")]
44726    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
44727    ///
44728    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
44729    ///     <ul>
44730    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
44731    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
44732    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
44733    ///     </ul>
44734    ///   
44735    pub dir: core::option::Option<AttributeValueOwned>,
44736    ///
44737    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
44738    ///     <ul>
44739    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
44740    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
44741    ///     </ul>
44742    ///   
44743    pub draggable: core::option::Option<AttributeValueOwned>,
44744    ///
44745    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
44746    ///   
44747    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
44748    ///
44749    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
44750    ///   
44751    pub exportparts: core::option::Option<AttributeValueOwned>,
44752    /// /// Extra attributes of the element.
44753
44754    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
44755    #[cfg(feature = "alloc")]
44756    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
44757    ///
44758    ///     <p>This attribute contains a list of space-separated strings, each corresponding to the <strong>id</strong> attribute of the <a aria-current="page" href="/en-US/docs/Web/HTML/Element/th"><code>&lt;th&gt;</code></a> elements that apply to this element.</p>
44759    ///   
44760    pub headers: core::option::Option<AttributeValueOwned>,
44761    ///
44762    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
44763    ///   
44764    pub hidden: core::option::Option<AttributeValueOwned>,
44765    ///
44766    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
44767    ///   
44768    pub id: core::option::Option<AttributeValueOwned>,
44769    ///
44770    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
44771    ///   
44772    pub inert: core::option::Option<AttributeValueOwned>,
44773    ///
44774    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
44775    ///   
44776    pub inputmode: core::option::Option<AttributeValueOwned>,
44777    ///
44778    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
44779    ///   
44780    pub is: core::option::Option<AttributeValueOwned>,
44781    ///
44782    ///     <p>The unique, global identifier of an item.</p>
44783    ///   
44784    pub itemid: core::option::Option<AttributeValueOwned>,
44785    ///
44786    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
44787    ///   
44788    pub itemprop: core::option::Option<AttributeValueOwned>,
44789    ///
44790    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
44791    ///   
44792    pub itemref: core::option::Option<AttributeValueOwned>,
44793    ///
44794    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
44795    ///   
44796    pub itemscope: core::option::Option<AttributeValueOwned>,
44797    ///
44798    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
44799    ///   
44800    pub itemtype: core::option::Option<AttributeValueOwned>,
44801    ///
44802    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
44803    ///   
44804    pub lang: core::option::Option<AttributeValueOwned>,
44805    ///
44806    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
44807    ///   
44808    pub nonce: core::option::Option<AttributeValueOwned>,
44809    ///
44810    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
44811    ///   
44812    pub part: core::option::Option<AttributeValueOwned>,
44813    ///
44814    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
44815    ///   
44816    pub popover: core::option::Option<AttributeValueOwned>,
44817    ///
44818    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
44819    ///   
44820    pub role: core::option::Option<AttributeValueOwned>,
44821    ///
44822    ///     <p>This attribute contains a non-negative integer value that indicates for how many rows the cell extends. Its default value is <code>1</code>; if its value is set to <code>0</code>, it extends until the end of the table section (<a href="/en-US/docs/Web/HTML/Element/thead"><code>&lt;thead&gt;</code></a>, <a href="/en-US/docs/Web/HTML/Element/tbody"><code>&lt;tbody&gt;</code></a>, <a href="/en-US/docs/Web/HTML/Element/tfoot"><code>&lt;tfoot&gt;</code></a>, even if implicitly defined), that the cell belongs to. Values higher than 65534 are clipped down to 65534.</p>
44823    ///   
44824    pub rowspan: core::option::Option<AttributeValueOwned>,
44825    ///
44826    ///     <p>This <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute defines the cells that the header (defined in the <a href="/en-US/docs/Web/HTML/Element/th" aria-current="page"><code>&lt;th&gt;</code></a>) element relates to. It may have the following values:</p>
44827    ///     <ul>
44828    ///       <li><code>row</code>: The header relates to all cells of the row it belongs to.</li>
44829    ///       <li><code>col</code>: The header relates to all cells of the column it belongs to.</li>
44830    ///       <li><code>rowgroup</code>: The header belongs to a rowgroup and relates to all of its cells. These cells can be placed to the right or the left of the header, depending on the value of the <a href="/en-US/docs/Web/HTML/Global_attributes/dir"><code>dir</code></a> attribute in the <a href="/en-US/docs/Web/HTML/Element/table"><code>&lt;table&gt;</code></a> element.</li>
44831    ///       <li><code>colgroup</code>: The header belongs to a colgroup and relates to all of its cells.</li>
44832    ///     </ul>
44833    ///     <p>If the <code>scope</code> attribute is not specified, or its value is not <code>row</code>, <code>col</code>, or <code>rowgroup</code>, or <code>colgroup</code>, then browsers automatically select the set of cells to which the header cell applies.</p>
44834    ///   
44835    pub scope: core::option::Option<AttributeValueOwned>,
44836    ///
44837    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
44838    ///   
44839    pub slot: core::option::Option<AttributeValueOwned>,
44840    ///
44841    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
44842    ///     <ul>
44843    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
44844    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
44845    ///     </ul>
44846    ///   
44847    pub spellcheck: core::option::Option<AttributeValueOwned>,
44848    ///
44849    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
44850    ///   
44851    pub style: core::option::Option<AttributeValueOwned>,
44852    ///
44853    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
44854    ///     <ul>
44855    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
44856    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
44857    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
44858    ///     </ul>
44859    ///   
44860    pub tabindex: core::option::Option<AttributeValueOwned>,
44861    ///
44862    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
44863    ///   
44864    pub title: core::option::Option<AttributeValueOwned>,
44865    ///
44866    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
44867    ///     <ul>
44868    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
44869    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
44870    ///     </ul>
44871    ///   
44872    pub translate: core::option::Option<AttributeValueOwned>,
44873    ///
44874    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
44875    ///     <ul>
44876    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
44877    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
44878    ///     </ul>
44879    ///   
44880    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
44881}
44882#[allow(deprecated)]
44883#[cfg(feature = "alloc")]
44884impl ThOwned {
44885    /// Get the tag name of the element.
44886    /// This is the same as the name of the struct, in kebab-case.
44887    pub fn tag() -> &'static str {
44888        "th"
44889    }
44890    /// Sets an attribute of the element.
44891    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
44892    /// If the `alloc` feature is disabled, this function will silently fail.
44893    ///
44894    /// # Note
44895    /// This only works when the attribute is lowercase.
44896    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
44897        match name {
44898            "abbr" => self.abbr = Some(value.into()),
44899            "accesskey" => self.accesskey = Some(value.into()),
44900            "autocapitalize" => self.autocapitalize = Some(value.into()),
44901            "autofocus" => self.autofocus = Some(value.into()),
44902            "class" => self.class = Some(value.into()),
44903            "colspan" => self.colspan = Some(value.into()),
44904            "contenteditable" => self.contenteditable = Some(value.into()),
44905            "contextmenu" => self.contextmenu = Some(value.into()),
44906            "dir" => self.dir = Some(value.into()),
44907            "draggable" => self.draggable = Some(value.into()),
44908            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
44909            "exportparts" => self.exportparts = Some(value.into()),
44910            "headers" => self.headers = Some(value.into()),
44911            "hidden" => self.hidden = Some(value.into()),
44912            "id" => self.id = Some(value.into()),
44913            "inert" => self.inert = Some(value.into()),
44914            "inputmode" => self.inputmode = Some(value.into()),
44915            "is" => self.is = Some(value.into()),
44916            "itemid" => self.itemid = Some(value.into()),
44917            "itemprop" => self.itemprop = Some(value.into()),
44918            "itemref" => self.itemref = Some(value.into()),
44919            "itemscope" => self.itemscope = Some(value.into()),
44920            "itemtype" => self.itemtype = Some(value.into()),
44921            "lang" => self.lang = Some(value.into()),
44922            "nonce" => self.nonce = Some(value.into()),
44923            "part" => self.part = Some(value.into()),
44924            "popover" => self.popover = Some(value.into()),
44925            "role" => self.role = Some(value.into()),
44926            "rowspan" => self.rowspan = Some(value.into()),
44927            "scope" => self.scope = Some(value.into()),
44928            "slot" => self.slot = Some(value.into()),
44929            "spellcheck" => self.spellcheck = Some(value.into()),
44930            "style" => self.style = Some(value.into()),
44931            "tabindex" => self.tabindex = Some(value.into()),
44932            "title" => self.title = Some(value.into()),
44933            "translate" => self.translate = Some(value.into()),
44934            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
44935            #[cfg(feature = "alloc")]
44936            _ => {
44937                #[allow(clippy::useless_conversion)]
44938                self.extra.insert(name.into(), value.into());
44939            }
44940            #[cfg(not(feature = "alloc"))]
44941            _ => {}
44942        }
44943    }
44944}
44945/// The <strong><code>&lt;thead&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element defines a set of rows defining the head of the columns of the table.
44946///
44947/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/thead>
44948
44949#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
44950pub struct Thead<'life> {
44951    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
44952    ///   
44953    pub accesskey: core::option::Option<AttributeValue<'life>>,
44954    ///
44955    ///     <p>This <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute specifies how horizontal alignment of each cell content will be handled. Possible values are:</p>
44956    ///     <ul>
44957    ///       <li><code>left</code>, aligning the content to the left of the cell</li>
44958    ///       <li><code>center</code>, centering the content in the cell</li>
44959    ///       <li><code>right</code>, aligning the content to the right of the cell</li>
44960    ///       <li><code>justify</code>, inserting spaces into the textual content so that the content is justified in the cell</li>
44961    ///       <li><code>char</code>, aligning the textual content on a special character with a minimal offset, defined by the <a href="#char"><code>char</code></a> and <a href="#charoff"><code>charoff</code></a> attributes.</li>
44962    ///     </ul>
44963    ///     <p>If this attribute is not set, the <code>left</code> value is assumed.</p>
44964    ///     <div class="notecard warning" id="sect1">
44965    ///       <p><strong>Warning:</strong> Do not use this attribute as it is obsolete (not supported) in the latest standard.</p>
44966    ///       <ul>
44967    ///         <li>To align values, use the CSS <a href="/en-US/docs/Web/CSS/text-align"><code>text-align</code></a> property instead.</li>
44968    ///       </ul>
44969    ///     </div>
44970    ///   
44971    pub align: core::option::Option<AttributeValue<'life>>,
44972    ///
44973    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
44974    ///     <ul>
44975    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
44976    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
44977    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
44978    ///       <li><code>characters</code>, all letters should default to uppercase</li>
44979    ///     </ul>
44980    ///   
44981    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
44982    ///
44983    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
44984    ///   
44985    pub autofocus: core::option::Option<AttributeValue<'life>>,
44986    ///
44987    ///     <p>This attribute defines the background color of each column cell. It accepts a 6-digit hexadecimal color or a named color. Alpha transparency is not supported.</p>
44988    ///     <div id="sect2" class="notecard note">
44989    ///       <p><strong>Note:</strong> Do not use this attribute, as it is non-standard. The <code>thead</code> element should be styled using the CSS <a href="/en-US/docs/Web/CSS/background-color"><code>background-color</code></a> property, which can be applied to any element, including the <code>thead</code>, <a href="/en-US/docs/Web/HTML/Element/tr"><code>&lt;tr&gt;</code></a>, <a href="/en-US/docs/Web/HTML/Element/td"><code>&lt;td&gt;</code></a> and <a href="/en-US/docs/Web/HTML/Element/th"><code>&lt;th&gt;</code></a> elements.</p>
44990    ///     </div>
44991    ///   
44992    pub bgcolor: core::option::Option<AttributeValue<'life>>,
44993    ///
44994    ///     <p>This attribute is used to set the character to align the cells in a column on. Typical values for this include a period (.) when attempting to align numbers or monetary values. If <a href="#align"><code>align</code></a> is not set to <code>char</code>, this attribute is ignored.</p>
44995    ///     <div class="notecard note" id="sect3">
44996    ///       <p><strong>Note:</strong> Do not use this attribute as it is obsolete (and not supported) in the latest standard.</p>
44997    ///     </div>
44998    ///   
44999    pub char: core::option::Option<AttributeValue<'life>>,
45000    ///
45001    ///     <p>This attribute is used to indicate the number of characters to offset the column data from the alignment characters specified by the <strong>char</strong> attribute.</p>
45002    ///     <div class="notecard note" id="sect4">
45003    ///       <p><strong>Note:</strong> Do not use this attribute as it is obsolete (and not supported) in the latest standard.</p>
45004    ///     </div>
45005    ///   
45006    pub charoff: core::option::Option<AttributeValue<'life>>,
45007    ///
45008    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
45009    ///   
45010    pub class: core::option::Option<AttributeValue<'life>>,
45011    ///
45012    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
45013    ///     <ul>
45014    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
45015    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
45016    ///     </ul>
45017    ///   
45018    pub contenteditable: core::option::Option<AttributeValue<'life>>,
45019    ///
45020    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
45021    ///   
45022    pub contextmenu: core::option::Option<AttributeValue<'life>>,
45023    ///
45024    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
45025    ///   
45026    #[cfg(feature = "alloc")]
45027    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
45028    ///
45029    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
45030    ///     <ul>
45031    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
45032    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
45033    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
45034    ///     </ul>
45035    ///   
45036    pub dir: core::option::Option<AttributeValue<'life>>,
45037    ///
45038    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
45039    ///     <ul>
45040    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
45041    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
45042    ///     </ul>
45043    ///   
45044    pub draggable: core::option::Option<AttributeValue<'life>>,
45045    ///
45046    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
45047    ///   
45048    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
45049    ///
45050    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
45051    ///   
45052    pub exportparts: core::option::Option<AttributeValue<'life>>,
45053    /// /// Extra attributes of the element.
45054
45055    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
45056    #[cfg(feature = "alloc")]
45057    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
45058    ///
45059    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
45060    ///   
45061    pub hidden: core::option::Option<AttributeValue<'life>>,
45062    ///
45063    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
45064    ///   
45065    pub id: core::option::Option<AttributeValue<'life>>,
45066    ///
45067    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
45068    ///   
45069    pub inert: core::option::Option<AttributeValue<'life>>,
45070    ///
45071    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
45072    ///   
45073    pub inputmode: core::option::Option<AttributeValue<'life>>,
45074    ///
45075    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
45076    ///   
45077    pub is: core::option::Option<AttributeValue<'life>>,
45078    ///
45079    ///     <p>The unique, global identifier of an item.</p>
45080    ///   
45081    pub itemid: core::option::Option<AttributeValue<'life>>,
45082    ///
45083    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
45084    ///   
45085    pub itemprop: core::option::Option<AttributeValue<'life>>,
45086    ///
45087    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
45088    ///   
45089    pub itemref: core::option::Option<AttributeValue<'life>>,
45090    ///
45091    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
45092    ///   
45093    pub itemscope: core::option::Option<AttributeValue<'life>>,
45094    ///
45095    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
45096    ///   
45097    pub itemtype: core::option::Option<AttributeValue<'life>>,
45098    ///
45099    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
45100    ///   
45101    pub lang: core::option::Option<AttributeValue<'life>>,
45102    ///
45103    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
45104    ///   
45105    pub nonce: core::option::Option<AttributeValue<'life>>,
45106    ///
45107    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
45108    ///   
45109    pub part: core::option::Option<AttributeValue<'life>>,
45110    ///
45111    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
45112    ///   
45113    pub popover: core::option::Option<AttributeValue<'life>>,
45114    ///
45115    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
45116    ///   
45117    pub role: core::option::Option<AttributeValue<'life>>,
45118    ///
45119    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
45120    ///   
45121    pub slot: core::option::Option<AttributeValue<'life>>,
45122    ///
45123    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
45124    ///     <ul>
45125    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
45126    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
45127    ///     </ul>
45128    ///   
45129    pub spellcheck: core::option::Option<AttributeValue<'life>>,
45130    ///
45131    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
45132    ///   
45133    pub style: core::option::Option<AttributeValue<'life>>,
45134    ///
45135    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
45136    ///     <ul>
45137    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
45138    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
45139    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
45140    ///     </ul>
45141    ///   
45142    pub tabindex: core::option::Option<AttributeValue<'life>>,
45143    ///
45144    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
45145    ///   
45146    pub title: core::option::Option<AttributeValue<'life>>,
45147    ///
45148    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
45149    ///     <ul>
45150    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
45151    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
45152    ///     </ul>
45153    ///   
45154    pub translate: core::option::Option<AttributeValue<'life>>,
45155    ///
45156    ///     <p>This attribute specifies the vertical alignment of the text within each row of cells of the table header. Possible values for this attribute are:</p>
45157    ///     <ul>
45158    ///       <li><code>baseline</code>, which will put the text as close to the bottom of the cell as it is possible, but align it on the <a class="external" href="https://en.wikipedia.org/wiki/Baseline_%28typography%29" target="_blank">baseline</a> of the characters instead of the bottom of them. If characters are all of the size, this has the same effect as <code>bottom</code>.</li>
45159    ///       <li><code>bottom</code>, which will put the text as close to the bottom of the cell as it is possible;</li>
45160    ///       <li><code>middle</code>, which will center the text in the cell;</li>
45161    ///       <li><code>top</code>, which will put the text as close to the top of the cell as it is possible.</li>
45162    ///     </ul>
45163    ///     <div class="notecard note" id="sect5">
45164    ///       <p><strong>Note:</strong> Do not use this attribute as it is obsolete (and not supported) in the latest standard: instead set the CSS <a href="/en-US/docs/Web/CSS/vertical-align"><code>vertical-align</code></a> property on it.</p>
45165    ///     </div>
45166    ///   
45167    pub valign: core::option::Option<AttributeValue<'life>>,
45168    ///
45169    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
45170    ///     <ul>
45171    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
45172    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
45173    ///     </ul>
45174    ///   
45175    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
45176}
45177#[allow(deprecated)]
45178
45179impl<'life> Thead<'life> {
45180    /// Get the tag name of the element.
45181    /// This is the same as the name of the struct, in kebab-case.
45182    pub fn tag() -> &'static str {
45183        "thead"
45184    }
45185    /// Sets an attribute of the element.
45186    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
45187    /// If the `alloc` feature is disabled, this function will silently fail.
45188    ///
45189    /// # Note
45190    /// This only works when the attribute is lowercase.
45191    pub fn set_attr(
45192        &mut self,
45193        name: &'life str,
45194        value: impl core::convert::Into<AttributeValue<'life>>,
45195    ) {
45196        match name {
45197            "accesskey" => self.accesskey = Some(value.into()),
45198            "align" => self.align = Some(value.into()),
45199            "autocapitalize" => self.autocapitalize = Some(value.into()),
45200            "autofocus" => self.autofocus = Some(value.into()),
45201            "bgcolor" => self.bgcolor = Some(value.into()),
45202            "char" => self.char = Some(value.into()),
45203            "charoff" => self.charoff = Some(value.into()),
45204            "class" => self.class = Some(value.into()),
45205            "contenteditable" => self.contenteditable = Some(value.into()),
45206            "contextmenu" => self.contextmenu = Some(value.into()),
45207            "dir" => self.dir = Some(value.into()),
45208            "draggable" => self.draggable = Some(value.into()),
45209            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
45210            "exportparts" => self.exportparts = Some(value.into()),
45211            "hidden" => self.hidden = Some(value.into()),
45212            "id" => self.id = Some(value.into()),
45213            "inert" => self.inert = Some(value.into()),
45214            "inputmode" => self.inputmode = Some(value.into()),
45215            "is" => self.is = Some(value.into()),
45216            "itemid" => self.itemid = Some(value.into()),
45217            "itemprop" => self.itemprop = Some(value.into()),
45218            "itemref" => self.itemref = Some(value.into()),
45219            "itemscope" => self.itemscope = Some(value.into()),
45220            "itemtype" => self.itemtype = Some(value.into()),
45221            "lang" => self.lang = Some(value.into()),
45222            "nonce" => self.nonce = Some(value.into()),
45223            "part" => self.part = Some(value.into()),
45224            "popover" => self.popover = Some(value.into()),
45225            "role" => self.role = Some(value.into()),
45226            "slot" => self.slot = Some(value.into()),
45227            "spellcheck" => self.spellcheck = Some(value.into()),
45228            "style" => self.style = Some(value.into()),
45229            "tabindex" => self.tabindex = Some(value.into()),
45230            "title" => self.title = Some(value.into()),
45231            "translate" => self.translate = Some(value.into()),
45232            "valign" => self.valign = Some(value.into()),
45233            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
45234            #[cfg(feature = "alloc")]
45235            _ => {
45236                #[allow(clippy::useless_conversion)]
45237                self.extra.insert(name.into(), value.into());
45238            }
45239            #[cfg(not(feature = "alloc"))]
45240            _ => {}
45241        }
45242    }
45243}
45244/// The <strong><code>&lt;thead&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element defines a set of rows defining the head of the columns of the table.
45245///
45246/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/thead>
45247
45248#[cfg(feature = "alloc")]
45249#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
45250pub struct TheadOwned {
45251    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
45252    ///   
45253    pub accesskey: core::option::Option<AttributeValueOwned>,
45254    ///
45255    ///     <p>This <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute specifies how horizontal alignment of each cell content will be handled. Possible values are:</p>
45256    ///     <ul>
45257    ///       <li><code>left</code>, aligning the content to the left of the cell</li>
45258    ///       <li><code>center</code>, centering the content in the cell</li>
45259    ///       <li><code>right</code>, aligning the content to the right of the cell</li>
45260    ///       <li><code>justify</code>, inserting spaces into the textual content so that the content is justified in the cell</li>
45261    ///       <li><code>char</code>, aligning the textual content on a special character with a minimal offset, defined by the <a href="#char"><code>char</code></a> and <a href="#charoff"><code>charoff</code></a> attributes.</li>
45262    ///     </ul>
45263    ///     <p>If this attribute is not set, the <code>left</code> value is assumed.</p>
45264    ///     <div class="notecard warning" id="sect1">
45265    ///       <p><strong>Warning:</strong> Do not use this attribute as it is obsolete (not supported) in the latest standard.</p>
45266    ///       <ul>
45267    ///         <li>To align values, use the CSS <a href="/en-US/docs/Web/CSS/text-align"><code>text-align</code></a> property instead.</li>
45268    ///       </ul>
45269    ///     </div>
45270    ///   
45271    pub align: core::option::Option<AttributeValueOwned>,
45272    ///
45273    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
45274    ///     <ul>
45275    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
45276    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
45277    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
45278    ///       <li><code>characters</code>, all letters should default to uppercase</li>
45279    ///     </ul>
45280    ///   
45281    pub autocapitalize: core::option::Option<AttributeValueOwned>,
45282    ///
45283    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
45284    ///   
45285    pub autofocus: core::option::Option<AttributeValueOwned>,
45286    ///
45287    ///     <p>This attribute defines the background color of each column cell. It accepts a 6-digit hexadecimal color or a named color. Alpha transparency is not supported.</p>
45288    ///     <div id="sect2" class="notecard note">
45289    ///       <p><strong>Note:</strong> Do not use this attribute, as it is non-standard. The <code>thead</code> element should be styled using the CSS <a href="/en-US/docs/Web/CSS/background-color"><code>background-color</code></a> property, which can be applied to any element, including the <code>thead</code>, <a href="/en-US/docs/Web/HTML/Element/tr"><code>&lt;tr&gt;</code></a>, <a href="/en-US/docs/Web/HTML/Element/td"><code>&lt;td&gt;</code></a> and <a href="/en-US/docs/Web/HTML/Element/th"><code>&lt;th&gt;</code></a> elements.</p>
45290    ///     </div>
45291    ///   
45292    pub bgcolor: core::option::Option<AttributeValueOwned>,
45293    ///
45294    ///     <p>This attribute is used to set the character to align the cells in a column on. Typical values for this include a period (.) when attempting to align numbers or monetary values. If <a href="#align"><code>align</code></a> is not set to <code>char</code>, this attribute is ignored.</p>
45295    ///     <div class="notecard note" id="sect3">
45296    ///       <p><strong>Note:</strong> Do not use this attribute as it is obsolete (and not supported) in the latest standard.</p>
45297    ///     </div>
45298    ///   
45299    pub char: core::option::Option<AttributeValueOwned>,
45300    ///
45301    ///     <p>This attribute is used to indicate the number of characters to offset the column data from the alignment characters specified by the <strong>char</strong> attribute.</p>
45302    ///     <div class="notecard note" id="sect4">
45303    ///       <p><strong>Note:</strong> Do not use this attribute as it is obsolete (and not supported) in the latest standard.</p>
45304    ///     </div>
45305    ///   
45306    pub charoff: core::option::Option<AttributeValueOwned>,
45307    ///
45308    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
45309    ///   
45310    pub class: core::option::Option<AttributeValueOwned>,
45311    ///
45312    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
45313    ///     <ul>
45314    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
45315    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
45316    ///     </ul>
45317    ///   
45318    pub contenteditable: core::option::Option<AttributeValueOwned>,
45319    ///
45320    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
45321    ///   
45322    pub contextmenu: core::option::Option<AttributeValueOwned>,
45323    ///
45324    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
45325    ///   
45326    #[cfg(feature = "alloc")]
45327    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
45328    ///
45329    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
45330    ///     <ul>
45331    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
45332    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
45333    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
45334    ///     </ul>
45335    ///   
45336    pub dir: core::option::Option<AttributeValueOwned>,
45337    ///
45338    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
45339    ///     <ul>
45340    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
45341    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
45342    ///     </ul>
45343    ///   
45344    pub draggable: core::option::Option<AttributeValueOwned>,
45345    ///
45346    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
45347    ///   
45348    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
45349    ///
45350    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
45351    ///   
45352    pub exportparts: core::option::Option<AttributeValueOwned>,
45353    /// /// Extra attributes of the element.
45354
45355    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
45356    #[cfg(feature = "alloc")]
45357    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
45358    ///
45359    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
45360    ///   
45361    pub hidden: core::option::Option<AttributeValueOwned>,
45362    ///
45363    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
45364    ///   
45365    pub id: core::option::Option<AttributeValueOwned>,
45366    ///
45367    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
45368    ///   
45369    pub inert: core::option::Option<AttributeValueOwned>,
45370    ///
45371    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
45372    ///   
45373    pub inputmode: core::option::Option<AttributeValueOwned>,
45374    ///
45375    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
45376    ///   
45377    pub is: core::option::Option<AttributeValueOwned>,
45378    ///
45379    ///     <p>The unique, global identifier of an item.</p>
45380    ///   
45381    pub itemid: core::option::Option<AttributeValueOwned>,
45382    ///
45383    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
45384    ///   
45385    pub itemprop: core::option::Option<AttributeValueOwned>,
45386    ///
45387    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
45388    ///   
45389    pub itemref: core::option::Option<AttributeValueOwned>,
45390    ///
45391    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
45392    ///   
45393    pub itemscope: core::option::Option<AttributeValueOwned>,
45394    ///
45395    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
45396    ///   
45397    pub itemtype: core::option::Option<AttributeValueOwned>,
45398    ///
45399    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
45400    ///   
45401    pub lang: core::option::Option<AttributeValueOwned>,
45402    ///
45403    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
45404    ///   
45405    pub nonce: core::option::Option<AttributeValueOwned>,
45406    ///
45407    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
45408    ///   
45409    pub part: core::option::Option<AttributeValueOwned>,
45410    ///
45411    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
45412    ///   
45413    pub popover: core::option::Option<AttributeValueOwned>,
45414    ///
45415    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
45416    ///   
45417    pub role: core::option::Option<AttributeValueOwned>,
45418    ///
45419    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
45420    ///   
45421    pub slot: core::option::Option<AttributeValueOwned>,
45422    ///
45423    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
45424    ///     <ul>
45425    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
45426    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
45427    ///     </ul>
45428    ///   
45429    pub spellcheck: core::option::Option<AttributeValueOwned>,
45430    ///
45431    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
45432    ///   
45433    pub style: core::option::Option<AttributeValueOwned>,
45434    ///
45435    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
45436    ///     <ul>
45437    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
45438    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
45439    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
45440    ///     </ul>
45441    ///   
45442    pub tabindex: core::option::Option<AttributeValueOwned>,
45443    ///
45444    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
45445    ///   
45446    pub title: core::option::Option<AttributeValueOwned>,
45447    ///
45448    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
45449    ///     <ul>
45450    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
45451    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
45452    ///     </ul>
45453    ///   
45454    pub translate: core::option::Option<AttributeValueOwned>,
45455    ///
45456    ///     <p>This attribute specifies the vertical alignment of the text within each row of cells of the table header. Possible values for this attribute are:</p>
45457    ///     <ul>
45458    ///       <li><code>baseline</code>, which will put the text as close to the bottom of the cell as it is possible, but align it on the <a class="external" href="https://en.wikipedia.org/wiki/Baseline_%28typography%29" target="_blank">baseline</a> of the characters instead of the bottom of them. If characters are all of the size, this has the same effect as <code>bottom</code>.</li>
45459    ///       <li><code>bottom</code>, which will put the text as close to the bottom of the cell as it is possible;</li>
45460    ///       <li><code>middle</code>, which will center the text in the cell;</li>
45461    ///       <li><code>top</code>, which will put the text as close to the top of the cell as it is possible.</li>
45462    ///     </ul>
45463    ///     <div class="notecard note" id="sect5">
45464    ///       <p><strong>Note:</strong> Do not use this attribute as it is obsolete (and not supported) in the latest standard: instead set the CSS <a href="/en-US/docs/Web/CSS/vertical-align"><code>vertical-align</code></a> property on it.</p>
45465    ///     </div>
45466    ///   
45467    pub valign: core::option::Option<AttributeValueOwned>,
45468    ///
45469    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
45470    ///     <ul>
45471    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
45472    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
45473    ///     </ul>
45474    ///   
45475    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
45476}
45477#[allow(deprecated)]
45478#[cfg(feature = "alloc")]
45479impl TheadOwned {
45480    /// Get the tag name of the element.
45481    /// This is the same as the name of the struct, in kebab-case.
45482    pub fn tag() -> &'static str {
45483        "thead"
45484    }
45485    /// Sets an attribute of the element.
45486    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
45487    /// If the `alloc` feature is disabled, this function will silently fail.
45488    ///
45489    /// # Note
45490    /// This only works when the attribute is lowercase.
45491    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
45492        match name {
45493            "accesskey" => self.accesskey = Some(value.into()),
45494            "align" => self.align = Some(value.into()),
45495            "autocapitalize" => self.autocapitalize = Some(value.into()),
45496            "autofocus" => self.autofocus = Some(value.into()),
45497            "bgcolor" => self.bgcolor = Some(value.into()),
45498            "char" => self.char = Some(value.into()),
45499            "charoff" => self.charoff = Some(value.into()),
45500            "class" => self.class = Some(value.into()),
45501            "contenteditable" => self.contenteditable = Some(value.into()),
45502            "contextmenu" => self.contextmenu = Some(value.into()),
45503            "dir" => self.dir = Some(value.into()),
45504            "draggable" => self.draggable = Some(value.into()),
45505            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
45506            "exportparts" => self.exportparts = Some(value.into()),
45507            "hidden" => self.hidden = Some(value.into()),
45508            "id" => self.id = Some(value.into()),
45509            "inert" => self.inert = Some(value.into()),
45510            "inputmode" => self.inputmode = Some(value.into()),
45511            "is" => self.is = Some(value.into()),
45512            "itemid" => self.itemid = Some(value.into()),
45513            "itemprop" => self.itemprop = Some(value.into()),
45514            "itemref" => self.itemref = Some(value.into()),
45515            "itemscope" => self.itemscope = Some(value.into()),
45516            "itemtype" => self.itemtype = Some(value.into()),
45517            "lang" => self.lang = Some(value.into()),
45518            "nonce" => self.nonce = Some(value.into()),
45519            "part" => self.part = Some(value.into()),
45520            "popover" => self.popover = Some(value.into()),
45521            "role" => self.role = Some(value.into()),
45522            "slot" => self.slot = Some(value.into()),
45523            "spellcheck" => self.spellcheck = Some(value.into()),
45524            "style" => self.style = Some(value.into()),
45525            "tabindex" => self.tabindex = Some(value.into()),
45526            "title" => self.title = Some(value.into()),
45527            "translate" => self.translate = Some(value.into()),
45528            "valign" => self.valign = Some(value.into()),
45529            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
45530            #[cfg(feature = "alloc")]
45531            _ => {
45532                #[allow(clippy::useless_conversion)]
45533                self.extra.insert(name.into(), value.into());
45534            }
45535            #[cfg(not(feature = "alloc"))]
45536            _ => {}
45537        }
45538    }
45539}
45540/// The <strong><code>&lt;tr&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element defines a row of cells in a table. The row's cells can then be established using a mix of <a href="/en-US/docs/Web/HTML/Element/td"><code>&lt;td&gt;</code></a> (data cell) and <a href="/en-US/docs/Web/HTML/Element/th"><code>&lt;th&gt;</code></a> (header cell) elements.
45541///
45542/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tr>
45543
45544#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
45545pub struct Tr<'life> {
45546    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
45547    ///   
45548    pub accesskey: core::option::Option<AttributeValue<'life>>,
45549    ///
45550    ///     <p>A string which specifies how the cell's context should be aligned horizontally within the cells in the row; this is shorthand for using <code>align</code> on every cell in the row individually. Possible values are:</p>
45551    ///     <dl>
45552    ///       <dt id="left"><code>left</code></dt>
45553    ///       <dd>
45554    ///         <p>Align the content of each cell at its left edge.</p>
45555    ///       </dd>
45556    ///       <dt id="center"><code>center</code></dt>
45557    ///       <dd>
45558    ///         <p>Center the contents of each cell between their left and right edges.</p>
45559    ///       </dd>
45560    ///       <dt id="right"><code>right</code></dt>
45561    ///       <dd>
45562    ///         <p>Align the content of each cell at its right edge.</p>
45563    ///       </dd>
45564    ///       <dt id="justify"><code>justify</code></dt>
45565    ///       <dd>
45566    ///         <p>Widen whitespaces within the text of each cell so that the text fills the full width of each cell (full justification).</p>
45567    ///       </dd>
45568    ///       <dt id="char"><code>char</code></dt>
45569    ///       <dd>
45570    ///         <p>Align each cell in the row on a specific character (such that each row in the column that is configured this way will horizontally align its cells on that character). This uses the <a href="#char"><code>char</code></a> and <a href="#charoff"><code>charoff</code></a> to establish the alignment character (typically "." or "," when aligning numerical data) and the number of characters that should follow the alignment character. This alignment type was never widely supported.</p>
45571    ///       </dd>
45572    ///     </dl>
45573    ///     <p>If no value is expressly set for <code>align</code>, the parent node's value is inherited.</p>
45574    ///     <div id="sect1" class="notecard note">
45575    ///       <p><strong>Note:</strong> Instead of using the obsolete <code>align</code> attribute, you should instead use the CSS <a href="/en-US/docs/Web/CSS/text-align"><code>text-align</code></a> property to establish <code>left</code>, <code>center</code>, <code>right</code>, or <code>justify</code> alignment for the row's cells. To apply character-based alignment, set the CSS <a href="/en-US/docs/Web/CSS/text-align"><code>text-align</code></a> property to the alignment character (such as <code>"."</code> or <code>","</code>).</p>
45576    ///     </div>
45577    ///   
45578    pub align: core::option::Option<AttributeValue<'life>>,
45579    ///
45580    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
45581    ///     <ul>
45582    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
45583    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
45584    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
45585    ///       <li><code>characters</code>, all letters should default to uppercase</li>
45586    ///     </ul>
45587    ///   
45588    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
45589    ///
45590    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
45591    ///   
45592    pub autofocus: core::option::Option<AttributeValue<'life>>,
45593    ///
45594    ///     <p>A string specifying a color to apply to the backgrounds of each of the row's cells. This can be either a <a href="/en-US/docs/Web/CSS/color_value/rgb">hexadecimal <code>#RRGGBB</code> or <code>#RGB</code> value</a> or a <a href="/en-US/docs/Web/CSS/named-color">color keyword</a>. Omitting the attribute or setting it to <code>null</code> in JavaScript causes the row's cells to inherit the row's parent element's background color.</p>
45595    ///     <div id="sect2" class="notecard note">
45596    ///       <p><strong>Note:</strong> The <a aria-current="page" href="/en-US/docs/Web/HTML/Element/tr"><code>&lt;tr&gt;</code></a> element should be styled using <a href="/en-US/docs/Web/CSS">CSS</a>. To give a similar effect as the <code>bgcolor</code> attribute, use the CSS property <a href="/en-US/docs/Web/CSS/background-color"><code>background-color</code></a>.</p>
45597    ///     </div>
45598    ///   
45599    pub bgcolor: core::option::Option<AttributeValue<'life>>,
45600    ///
45601    ///     <p>A string that sets the character to align the cells in each row's columns (each row's centering that uses the same character gets aligned with others using the same character. Typical values for this include a period (<code>"."</code>) or comma (<code>","</code>) when attempting to align numbers or monetary values. If <a href="#align"><code>align</code></a> is not set to <code>char</code>, this attribute is ignored.</p>
45602    ///     <div class="notecard note" id="sect3">
45603    ///       <p><strong>Note:</strong> This attribute is obsolete and rarely implemented anyway. To achieve the same effect as the <a href="#char"><code>char</code></a> attribute, set the CSS <a href="/en-US/docs/Web/CSS/text-align"><code>text-align</code></a> property to the same string you would specify for the <code>char</code> property, such as <code>text-align: "."</code>.</p>
45604    ///     </div>
45605    ///   
45606    pub char: core::option::Option<AttributeValue<'life>>,
45607    ///
45608    ///     <p>A string indicating the number of characters on the tail end of the column's data should be displayed after the alignment character specified by the <code>char</code> attribute. For example, when displaying money values for currencies that use hundredths of a unit (such as the dollar, which is divided into 100 cents), you would typically specify a value of 2, so that in tandem with <code>char</code> being set to <code>"."</code>, the values in a column would be cleanly aligned on the decimal points, with the number of cents properly displayed to the right of the decimal point.</p>
45609    ///     <div class="notecard note" id="sect4">
45610    ///       <p><strong>Note:</strong> This attribute is obsolete, and was never widely supported anyway.</p>
45611    ///     </div>
45612    ///   
45613    pub charoff: core::option::Option<AttributeValue<'life>>,
45614    ///
45615    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
45616    ///   
45617    pub class: core::option::Option<AttributeValue<'life>>,
45618    ///
45619    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
45620    ///     <ul>
45621    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
45622    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
45623    ///     </ul>
45624    ///   
45625    pub contenteditable: core::option::Option<AttributeValue<'life>>,
45626    ///
45627    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
45628    ///   
45629    pub contextmenu: core::option::Option<AttributeValue<'life>>,
45630    ///
45631    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
45632    ///   
45633    #[cfg(feature = "alloc")]
45634    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
45635    ///
45636    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
45637    ///     <ul>
45638    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
45639    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
45640    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
45641    ///     </ul>
45642    ///   
45643    pub dir: core::option::Option<AttributeValue<'life>>,
45644    ///
45645    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
45646    ///     <ul>
45647    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
45648    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
45649    ///     </ul>
45650    ///   
45651    pub draggable: core::option::Option<AttributeValue<'life>>,
45652    ///
45653    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
45654    ///   
45655    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
45656    ///
45657    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
45658    ///   
45659    pub exportparts: core::option::Option<AttributeValue<'life>>,
45660    /// /// Extra attributes of the element.
45661
45662    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
45663    #[cfg(feature = "alloc")]
45664    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
45665    ///
45666    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
45667    ///   
45668    pub hidden: core::option::Option<AttributeValue<'life>>,
45669    ///
45670    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
45671    ///   
45672    pub id: core::option::Option<AttributeValue<'life>>,
45673    ///
45674    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
45675    ///   
45676    pub inert: core::option::Option<AttributeValue<'life>>,
45677    ///
45678    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
45679    ///   
45680    pub inputmode: core::option::Option<AttributeValue<'life>>,
45681    ///
45682    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
45683    ///   
45684    pub is: core::option::Option<AttributeValue<'life>>,
45685    ///
45686    ///     <p>The unique, global identifier of an item.</p>
45687    ///   
45688    pub itemid: core::option::Option<AttributeValue<'life>>,
45689    ///
45690    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
45691    ///   
45692    pub itemprop: core::option::Option<AttributeValue<'life>>,
45693    ///
45694    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
45695    ///   
45696    pub itemref: core::option::Option<AttributeValue<'life>>,
45697    ///
45698    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
45699    ///   
45700    pub itemscope: core::option::Option<AttributeValue<'life>>,
45701    ///
45702    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
45703    ///   
45704    pub itemtype: core::option::Option<AttributeValue<'life>>,
45705    ///
45706    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
45707    ///   
45708    pub lang: core::option::Option<AttributeValue<'life>>,
45709    ///
45710    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
45711    ///   
45712    pub nonce: core::option::Option<AttributeValue<'life>>,
45713    ///
45714    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
45715    ///   
45716    pub part: core::option::Option<AttributeValue<'life>>,
45717    ///
45718    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
45719    ///   
45720    pub popover: core::option::Option<AttributeValue<'life>>,
45721    ///
45722    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
45723    ///   
45724    pub role: core::option::Option<AttributeValue<'life>>,
45725    ///
45726    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
45727    ///   
45728    pub slot: core::option::Option<AttributeValue<'life>>,
45729    ///
45730    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
45731    ///     <ul>
45732    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
45733    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
45734    ///     </ul>
45735    ///   
45736    pub spellcheck: core::option::Option<AttributeValue<'life>>,
45737    ///
45738    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
45739    ///   
45740    pub style: core::option::Option<AttributeValue<'life>>,
45741    ///
45742    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
45743    ///     <ul>
45744    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
45745    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
45746    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
45747    ///     </ul>
45748    ///   
45749    pub tabindex: core::option::Option<AttributeValue<'life>>,
45750    ///
45751    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
45752    ///   
45753    pub title: core::option::Option<AttributeValue<'life>>,
45754    ///
45755    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
45756    ///     <ul>
45757    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
45758    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
45759    ///     </ul>
45760    ///   
45761    pub translate: core::option::Option<AttributeValue<'life>>,
45762    ///
45763    ///     <p>A string specifying the vertical alignment of the text within each cell in the row. Possible values for this attribute are:</p>
45764    ///     <dl>
45765    ///       <dt id="baseline"><code>baseline</code></dt>
45766    ///       <dd>
45767    ///         <p>Aligns each cell's content text as closely as possible to the bottom of the cell, handling alignment of different fonts and font sizes by aligning the characters along the <a href="https://en.wikipedia.org/wiki/Baseline" class="external" target="_blank">baseline</a> of the font(s) used in the row. If all the characters in the row are the same size, the effect is the same as <code>bottom</code>.</p>
45768    ///       </dd>
45769    ///       <dt id="bottom"><code>bottom</code>,</dt>
45770    ///       <dd>
45771    ///         <p>Draws the text in each of the row's cells as closely as possible to the bottom edge of those cells.</p>
45772    ///       </dd>
45773    ///       <dt id="middle"><code>middle</code></dt>
45774    ///       <dd>
45775    ///         <p>Each cell's text is vertically centered.</p>
45776    ///       </dd>
45777    ///       <dt id="top"><code>top</code></dt>
45778    ///       <dd>
45779    ///         <p>Each cell's text is drawn as closely as possible to the top edge of the containing cell.</p>
45780    ///       </dd>
45781    ///     </dl>
45782    ///     <div class="notecard note" id="sect5">
45783    ///       <p><strong>Note:</strong> Don't use the obsolete <code>valign</code> attribute. Instead, add the CSS <a href="/en-US/docs/Web/CSS/vertical-align"><code>vertical-align</code></a> property to the row.</p>
45784    ///     </div>
45785    ///   
45786    pub valign: core::option::Option<AttributeValue<'life>>,
45787    ///
45788    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
45789    ///     <ul>
45790    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
45791    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
45792    ///     </ul>
45793    ///   
45794    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
45795}
45796#[allow(deprecated)]
45797
45798impl<'life> Tr<'life> {
45799    /// Get the tag name of the element.
45800    /// This is the same as the name of the struct, in kebab-case.
45801    pub fn tag() -> &'static str {
45802        "tr"
45803    }
45804    /// Sets an attribute of the element.
45805    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
45806    /// If the `alloc` feature is disabled, this function will silently fail.
45807    ///
45808    /// # Note
45809    /// This only works when the attribute is lowercase.
45810    pub fn set_attr(
45811        &mut self,
45812        name: &'life str,
45813        value: impl core::convert::Into<AttributeValue<'life>>,
45814    ) {
45815        match name {
45816            "accesskey" => self.accesskey = Some(value.into()),
45817            "align" => self.align = Some(value.into()),
45818            "autocapitalize" => self.autocapitalize = Some(value.into()),
45819            "autofocus" => self.autofocus = Some(value.into()),
45820            "bgcolor" => self.bgcolor = Some(value.into()),
45821            "char" => self.char = Some(value.into()),
45822            "charoff" => self.charoff = Some(value.into()),
45823            "class" => self.class = Some(value.into()),
45824            "contenteditable" => self.contenteditable = Some(value.into()),
45825            "contextmenu" => self.contextmenu = Some(value.into()),
45826            "dir" => self.dir = Some(value.into()),
45827            "draggable" => self.draggable = Some(value.into()),
45828            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
45829            "exportparts" => self.exportparts = Some(value.into()),
45830            "hidden" => self.hidden = Some(value.into()),
45831            "id" => self.id = Some(value.into()),
45832            "inert" => self.inert = Some(value.into()),
45833            "inputmode" => self.inputmode = Some(value.into()),
45834            "is" => self.is = Some(value.into()),
45835            "itemid" => self.itemid = Some(value.into()),
45836            "itemprop" => self.itemprop = Some(value.into()),
45837            "itemref" => self.itemref = Some(value.into()),
45838            "itemscope" => self.itemscope = Some(value.into()),
45839            "itemtype" => self.itemtype = Some(value.into()),
45840            "lang" => self.lang = Some(value.into()),
45841            "nonce" => self.nonce = Some(value.into()),
45842            "part" => self.part = Some(value.into()),
45843            "popover" => self.popover = Some(value.into()),
45844            "role" => self.role = Some(value.into()),
45845            "slot" => self.slot = Some(value.into()),
45846            "spellcheck" => self.spellcheck = Some(value.into()),
45847            "style" => self.style = Some(value.into()),
45848            "tabindex" => self.tabindex = Some(value.into()),
45849            "title" => self.title = Some(value.into()),
45850            "translate" => self.translate = Some(value.into()),
45851            "valign" => self.valign = Some(value.into()),
45852            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
45853            #[cfg(feature = "alloc")]
45854            _ => {
45855                #[allow(clippy::useless_conversion)]
45856                self.extra.insert(name.into(), value.into());
45857            }
45858            #[cfg(not(feature = "alloc"))]
45859            _ => {}
45860        }
45861    }
45862}
45863/// The <strong><code>&lt;tr&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element defines a row of cells in a table. The row's cells can then be established using a mix of <a href="/en-US/docs/Web/HTML/Element/td"><code>&lt;td&gt;</code></a> (data cell) and <a href="/en-US/docs/Web/HTML/Element/th"><code>&lt;th&gt;</code></a> (header cell) elements.
45864///
45865/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tr>
45866
45867#[cfg(feature = "alloc")]
45868#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
45869pub struct TrOwned {
45870    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
45871    ///   
45872    pub accesskey: core::option::Option<AttributeValueOwned>,
45873    ///
45874    ///     <p>A string which specifies how the cell's context should be aligned horizontally within the cells in the row; this is shorthand for using <code>align</code> on every cell in the row individually. Possible values are:</p>
45875    ///     <dl>
45876    ///       <dt id="left"><code>left</code></dt>
45877    ///       <dd>
45878    ///         <p>Align the content of each cell at its left edge.</p>
45879    ///       </dd>
45880    ///       <dt id="center"><code>center</code></dt>
45881    ///       <dd>
45882    ///         <p>Center the contents of each cell between their left and right edges.</p>
45883    ///       </dd>
45884    ///       <dt id="right"><code>right</code></dt>
45885    ///       <dd>
45886    ///         <p>Align the content of each cell at its right edge.</p>
45887    ///       </dd>
45888    ///       <dt id="justify"><code>justify</code></dt>
45889    ///       <dd>
45890    ///         <p>Widen whitespaces within the text of each cell so that the text fills the full width of each cell (full justification).</p>
45891    ///       </dd>
45892    ///       <dt id="char"><code>char</code></dt>
45893    ///       <dd>
45894    ///         <p>Align each cell in the row on a specific character (such that each row in the column that is configured this way will horizontally align its cells on that character). This uses the <a href="#char"><code>char</code></a> and <a href="#charoff"><code>charoff</code></a> to establish the alignment character (typically "." or "," when aligning numerical data) and the number of characters that should follow the alignment character. This alignment type was never widely supported.</p>
45895    ///       </dd>
45896    ///     </dl>
45897    ///     <p>If no value is expressly set for <code>align</code>, the parent node's value is inherited.</p>
45898    ///     <div id="sect1" class="notecard note">
45899    ///       <p><strong>Note:</strong> Instead of using the obsolete <code>align</code> attribute, you should instead use the CSS <a href="/en-US/docs/Web/CSS/text-align"><code>text-align</code></a> property to establish <code>left</code>, <code>center</code>, <code>right</code>, or <code>justify</code> alignment for the row's cells. To apply character-based alignment, set the CSS <a href="/en-US/docs/Web/CSS/text-align"><code>text-align</code></a> property to the alignment character (such as <code>"."</code> or <code>","</code>).</p>
45900    ///     </div>
45901    ///   
45902    pub align: core::option::Option<AttributeValueOwned>,
45903    ///
45904    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
45905    ///     <ul>
45906    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
45907    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
45908    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
45909    ///       <li><code>characters</code>, all letters should default to uppercase</li>
45910    ///     </ul>
45911    ///   
45912    pub autocapitalize: core::option::Option<AttributeValueOwned>,
45913    ///
45914    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
45915    ///   
45916    pub autofocus: core::option::Option<AttributeValueOwned>,
45917    ///
45918    ///     <p>A string specifying a color to apply to the backgrounds of each of the row's cells. This can be either a <a href="/en-US/docs/Web/CSS/color_value/rgb">hexadecimal <code>#RRGGBB</code> or <code>#RGB</code> value</a> or a <a href="/en-US/docs/Web/CSS/named-color">color keyword</a>. Omitting the attribute or setting it to <code>null</code> in JavaScript causes the row's cells to inherit the row's parent element's background color.</p>
45919    ///     <div id="sect2" class="notecard note">
45920    ///       <p><strong>Note:</strong> The <a aria-current="page" href="/en-US/docs/Web/HTML/Element/tr"><code>&lt;tr&gt;</code></a> element should be styled using <a href="/en-US/docs/Web/CSS">CSS</a>. To give a similar effect as the <code>bgcolor</code> attribute, use the CSS property <a href="/en-US/docs/Web/CSS/background-color"><code>background-color</code></a>.</p>
45921    ///     </div>
45922    ///   
45923    pub bgcolor: core::option::Option<AttributeValueOwned>,
45924    ///
45925    ///     <p>A string that sets the character to align the cells in each row's columns (each row's centering that uses the same character gets aligned with others using the same character. Typical values for this include a period (<code>"."</code>) or comma (<code>","</code>) when attempting to align numbers or monetary values. If <a href="#align"><code>align</code></a> is not set to <code>char</code>, this attribute is ignored.</p>
45926    ///     <div class="notecard note" id="sect3">
45927    ///       <p><strong>Note:</strong> This attribute is obsolete and rarely implemented anyway. To achieve the same effect as the <a href="#char"><code>char</code></a> attribute, set the CSS <a href="/en-US/docs/Web/CSS/text-align"><code>text-align</code></a> property to the same string you would specify for the <code>char</code> property, such as <code>text-align: "."</code>.</p>
45928    ///     </div>
45929    ///   
45930    pub char: core::option::Option<AttributeValueOwned>,
45931    ///
45932    ///     <p>A string indicating the number of characters on the tail end of the column's data should be displayed after the alignment character specified by the <code>char</code> attribute. For example, when displaying money values for currencies that use hundredths of a unit (such as the dollar, which is divided into 100 cents), you would typically specify a value of 2, so that in tandem with <code>char</code> being set to <code>"."</code>, the values in a column would be cleanly aligned on the decimal points, with the number of cents properly displayed to the right of the decimal point.</p>
45933    ///     <div class="notecard note" id="sect4">
45934    ///       <p><strong>Note:</strong> This attribute is obsolete, and was never widely supported anyway.</p>
45935    ///     </div>
45936    ///   
45937    pub charoff: core::option::Option<AttributeValueOwned>,
45938    ///
45939    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
45940    ///   
45941    pub class: core::option::Option<AttributeValueOwned>,
45942    ///
45943    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
45944    ///     <ul>
45945    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
45946    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
45947    ///     </ul>
45948    ///   
45949    pub contenteditable: core::option::Option<AttributeValueOwned>,
45950    ///
45951    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
45952    ///   
45953    pub contextmenu: core::option::Option<AttributeValueOwned>,
45954    ///
45955    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
45956    ///   
45957    #[cfg(feature = "alloc")]
45958    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
45959    ///
45960    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
45961    ///     <ul>
45962    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
45963    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
45964    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
45965    ///     </ul>
45966    ///   
45967    pub dir: core::option::Option<AttributeValueOwned>,
45968    ///
45969    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
45970    ///     <ul>
45971    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
45972    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
45973    ///     </ul>
45974    ///   
45975    pub draggable: core::option::Option<AttributeValueOwned>,
45976    ///
45977    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
45978    ///   
45979    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
45980    ///
45981    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
45982    ///   
45983    pub exportparts: core::option::Option<AttributeValueOwned>,
45984    /// /// Extra attributes of the element.
45985
45986    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
45987    #[cfg(feature = "alloc")]
45988    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
45989    ///
45990    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
45991    ///   
45992    pub hidden: core::option::Option<AttributeValueOwned>,
45993    ///
45994    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
45995    ///   
45996    pub id: core::option::Option<AttributeValueOwned>,
45997    ///
45998    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
45999    ///   
46000    pub inert: core::option::Option<AttributeValueOwned>,
46001    ///
46002    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
46003    ///   
46004    pub inputmode: core::option::Option<AttributeValueOwned>,
46005    ///
46006    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
46007    ///   
46008    pub is: core::option::Option<AttributeValueOwned>,
46009    ///
46010    ///     <p>The unique, global identifier of an item.</p>
46011    ///   
46012    pub itemid: core::option::Option<AttributeValueOwned>,
46013    ///
46014    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
46015    ///   
46016    pub itemprop: core::option::Option<AttributeValueOwned>,
46017    ///
46018    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
46019    ///   
46020    pub itemref: core::option::Option<AttributeValueOwned>,
46021    ///
46022    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
46023    ///   
46024    pub itemscope: core::option::Option<AttributeValueOwned>,
46025    ///
46026    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
46027    ///   
46028    pub itemtype: core::option::Option<AttributeValueOwned>,
46029    ///
46030    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
46031    ///   
46032    pub lang: core::option::Option<AttributeValueOwned>,
46033    ///
46034    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
46035    ///   
46036    pub nonce: core::option::Option<AttributeValueOwned>,
46037    ///
46038    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
46039    ///   
46040    pub part: core::option::Option<AttributeValueOwned>,
46041    ///
46042    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
46043    ///   
46044    pub popover: core::option::Option<AttributeValueOwned>,
46045    ///
46046    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
46047    ///   
46048    pub role: core::option::Option<AttributeValueOwned>,
46049    ///
46050    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
46051    ///   
46052    pub slot: core::option::Option<AttributeValueOwned>,
46053    ///
46054    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
46055    ///     <ul>
46056    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
46057    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
46058    ///     </ul>
46059    ///   
46060    pub spellcheck: core::option::Option<AttributeValueOwned>,
46061    ///
46062    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
46063    ///   
46064    pub style: core::option::Option<AttributeValueOwned>,
46065    ///
46066    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
46067    ///     <ul>
46068    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
46069    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
46070    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
46071    ///     </ul>
46072    ///   
46073    pub tabindex: core::option::Option<AttributeValueOwned>,
46074    ///
46075    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
46076    ///   
46077    pub title: core::option::Option<AttributeValueOwned>,
46078    ///
46079    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
46080    ///     <ul>
46081    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
46082    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
46083    ///     </ul>
46084    ///   
46085    pub translate: core::option::Option<AttributeValueOwned>,
46086    ///
46087    ///     <p>A string specifying the vertical alignment of the text within each cell in the row. Possible values for this attribute are:</p>
46088    ///     <dl>
46089    ///       <dt id="baseline"><code>baseline</code></dt>
46090    ///       <dd>
46091    ///         <p>Aligns each cell's content text as closely as possible to the bottom of the cell, handling alignment of different fonts and font sizes by aligning the characters along the <a href="https://en.wikipedia.org/wiki/Baseline" class="external" target="_blank">baseline</a> of the font(s) used in the row. If all the characters in the row are the same size, the effect is the same as <code>bottom</code>.</p>
46092    ///       </dd>
46093    ///       <dt id="bottom"><code>bottom</code>,</dt>
46094    ///       <dd>
46095    ///         <p>Draws the text in each of the row's cells as closely as possible to the bottom edge of those cells.</p>
46096    ///       </dd>
46097    ///       <dt id="middle"><code>middle</code></dt>
46098    ///       <dd>
46099    ///         <p>Each cell's text is vertically centered.</p>
46100    ///       </dd>
46101    ///       <dt id="top"><code>top</code></dt>
46102    ///       <dd>
46103    ///         <p>Each cell's text is drawn as closely as possible to the top edge of the containing cell.</p>
46104    ///       </dd>
46105    ///     </dl>
46106    ///     <div class="notecard note" id="sect5">
46107    ///       <p><strong>Note:</strong> Don't use the obsolete <code>valign</code> attribute. Instead, add the CSS <a href="/en-US/docs/Web/CSS/vertical-align"><code>vertical-align</code></a> property to the row.</p>
46108    ///     </div>
46109    ///   
46110    pub valign: core::option::Option<AttributeValueOwned>,
46111    ///
46112    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
46113    ///     <ul>
46114    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
46115    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
46116    ///     </ul>
46117    ///   
46118    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
46119}
46120#[allow(deprecated)]
46121#[cfg(feature = "alloc")]
46122impl TrOwned {
46123    /// Get the tag name of the element.
46124    /// This is the same as the name of the struct, in kebab-case.
46125    pub fn tag() -> &'static str {
46126        "tr"
46127    }
46128    /// Sets an attribute of the element.
46129    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
46130    /// If the `alloc` feature is disabled, this function will silently fail.
46131    ///
46132    /// # Note
46133    /// This only works when the attribute is lowercase.
46134    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
46135        match name {
46136            "accesskey" => self.accesskey = Some(value.into()),
46137            "align" => self.align = Some(value.into()),
46138            "autocapitalize" => self.autocapitalize = Some(value.into()),
46139            "autofocus" => self.autofocus = Some(value.into()),
46140            "bgcolor" => self.bgcolor = Some(value.into()),
46141            "char" => self.char = Some(value.into()),
46142            "charoff" => self.charoff = Some(value.into()),
46143            "class" => self.class = Some(value.into()),
46144            "contenteditable" => self.contenteditable = Some(value.into()),
46145            "contextmenu" => self.contextmenu = Some(value.into()),
46146            "dir" => self.dir = Some(value.into()),
46147            "draggable" => self.draggable = Some(value.into()),
46148            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
46149            "exportparts" => self.exportparts = Some(value.into()),
46150            "hidden" => self.hidden = Some(value.into()),
46151            "id" => self.id = Some(value.into()),
46152            "inert" => self.inert = Some(value.into()),
46153            "inputmode" => self.inputmode = Some(value.into()),
46154            "is" => self.is = Some(value.into()),
46155            "itemid" => self.itemid = Some(value.into()),
46156            "itemprop" => self.itemprop = Some(value.into()),
46157            "itemref" => self.itemref = Some(value.into()),
46158            "itemscope" => self.itemscope = Some(value.into()),
46159            "itemtype" => self.itemtype = Some(value.into()),
46160            "lang" => self.lang = Some(value.into()),
46161            "nonce" => self.nonce = Some(value.into()),
46162            "part" => self.part = Some(value.into()),
46163            "popover" => self.popover = Some(value.into()),
46164            "role" => self.role = Some(value.into()),
46165            "slot" => self.slot = Some(value.into()),
46166            "spellcheck" => self.spellcheck = Some(value.into()),
46167            "style" => self.style = Some(value.into()),
46168            "tabindex" => self.tabindex = Some(value.into()),
46169            "title" => self.title = Some(value.into()),
46170            "translate" => self.translate = Some(value.into()),
46171            "valign" => self.valign = Some(value.into()),
46172            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
46173            #[cfg(feature = "alloc")]
46174            _ => {
46175                #[allow(clippy::useless_conversion)]
46176                self.extra.insert(name.into(), value.into());
46177            }
46178            #[cfg(not(feature = "alloc"))]
46179            _ => {}
46180        }
46181    }
46182}
46183/// The <strong><code>&lt;button&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element is an interactive element activated by a user with a mouse, keyboard, finger, voice command, or other assistive technology. Once activated, it then performs an action, such as submitting a <a href="/en-US/docs/Learn/Forms">form</a> or opening a dialog.
46184///
46185/// By default, HTML buttons are presented in a style resembling the platform the <a href="/en-US/docs/Glossary/User_agent">user agent</a> runs on, but you can change buttons' appearance with <a href="/en-US/docs/Web/CSS">CSS</a>.
46186///
46187/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button>
46188
46189#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
46190pub struct Button<'life> {
46191    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
46192    ///   
46193    pub accesskey: core::option::Option<AttributeValue<'life>>,
46194    ///
46195    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
46196    ///     <ul>
46197    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
46198    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
46199    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
46200    ///       <li><code>characters</code>, all letters should default to uppercase</li>
46201    ///     </ul>
46202    ///   
46203    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
46204    ///
46205    ///     <p>This attribute on a <a href="/en-US/docs/Web/HTML/Element/button" aria-current="page"><code>&lt;button&gt;</code></a> is nonstandard and Firefox-specific. Unlike other browsers, <a target="_blank" href="https://stackoverflow.com/questions/5985839/bug-with-firefox-disabled-attribute-of-input-not-resetting-when-refreshing" class="external">Firefox persists the dynamic disabled state</a> of a <a aria-current="page" href="/en-US/docs/Web/HTML/Element/button"><code>&lt;button&gt;</code></a> across page loads. Setting <code>autocomplete="off"</code> on the button disables this feature; see <a target="_blank" href="https://bugzil.la/654072" class="external">Firefox bug 654072</a>.</p>
46206    ///   
46207    pub autocomplete: core::option::Option<AttributeValue<'life>>,
46208    ///
46209    ///     <p>This Boolean attribute specifies that the button should have input <a href="/en-US/docs/Web/API/HTMLElement/focus">focus</a> when the page loads. <strong>Only one element in a document can have this attribute.</strong></p>
46210    ///   
46211    pub autofocus: core::option::Option<AttributeValue<'life>>,
46212    ///
46213    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
46214    ///   
46215    pub class: core::option::Option<AttributeValue<'life>>,
46216    ///
46217    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
46218    ///     <ul>
46219    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
46220    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
46221    ///     </ul>
46222    ///   
46223    pub contenteditable: core::option::Option<AttributeValue<'life>>,
46224    ///
46225    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
46226    ///   
46227    pub contextmenu: core::option::Option<AttributeValue<'life>>,
46228    ///
46229    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
46230    ///   
46231    #[cfg(feature = "alloc")]
46232    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
46233    ///
46234    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
46235    ///     <ul>
46236    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
46237    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
46238    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
46239    ///     </ul>
46240    ///   
46241    pub dir: core::option::Option<AttributeValue<'life>>,
46242    ///
46243    ///     <p>This Boolean attribute prevents the user from interacting with the button: it cannot be pressed or focused.</p>
46244    ///     <p>Firefox, unlike other browsers, <a class="external" href="https://stackoverflow.com/questions/5985839/bug-with-firefox-disabled-attribute-of-input-not-resetting-when-refreshing" target="_blank">persists the dynamic disabled state</a> of a <a aria-current="page" href="/en-US/docs/Web/HTML/Element/button"><code>&lt;button&gt;</code></a> across page loads. To control this feature, use the [<code>autocomplete</code>]] (#autocomplete) attribute.</p>
46245    ///   
46246    pub disabled: core::option::Option<AttributeValue<'life>>,
46247    ///
46248    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
46249    ///     <ul>
46250    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
46251    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
46252    ///     </ul>
46253    ///   
46254    pub draggable: core::option::Option<AttributeValue<'life>>,
46255    ///
46256    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
46257    ///   
46258    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
46259    ///
46260    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
46261    ///   
46262    pub exportparts: core::option::Option<AttributeValue<'life>>,
46263    /// /// Extra attributes of the element.
46264
46265    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
46266    #[cfg(feature = "alloc")]
46267    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
46268    ///
46269    ///     <p>The <a href="/en-US/docs/Web/HTML/Element/form"><code>&lt;form&gt;</code></a> element to associate the button with (its <em>form owner</em>). The value of this attribute must be the <code>id</code> of a <code>&lt;form&gt;</code> in the same document. (If this attribute is not set, the <code>&lt;button&gt;</code> is associated with its ancestor <code>&lt;form&gt;</code> element, if any.)</p>
46270    ///     <p>This attribute lets you associate <code>&lt;button&gt;</code> elements to <code>&lt;form&gt;</code>s anywhere in the document, not just inside a <code>&lt;form&gt;</code>. It can also override an ancestor <code>&lt;form&gt;</code> element.</p>
46271    ///   
46272    pub form: core::option::Option<AttributeValue<'life>>,
46273    ///
46274    ///     <p>The URL that processes the information submitted by the button. Overrides the <a href="/en-US/docs/Web/HTML/Element/form#action"><code>action</code></a> attribute of the button's form owner. Does nothing if there is no form owner.</p>
46275    ///   
46276    pub formaction: core::option::Option<AttributeValue<'life>>,
46277    ///
46278    ///     <p>If the button is a submit button (it's inside/associated with a <code>&lt;form&gt;</code> and doesn't have <code>type="button"</code>), specifies how to encode the form data that is submitted. Possible values:</p>
46279    ///     <ul>
46280    ///       <li><code>application/x-www-form-urlencoded</code>: The default if the attribute is not used.</li>
46281    ///       <li><code>multipart/form-data</code>: Used to submit <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements with their <a href="/en-US/docs/Web/HTML/Element/input#type"><code>type</code></a> attributes set to <code>file</code>.</li>
46282    ///       <li><code>text/plain</code>: Specified as a debugging aid; shouldn't be used for real form submission.</li>
46283    ///     </ul>
46284    ///     <p>If this attribute is specified, it overrides the <a href="/en-US/docs/Web/HTML/Element/form#enctype"><code>enctype</code></a> attribute of the button's form owner.</p>
46285    ///   
46286    pub formenctype: core::option::Option<AttributeValue<'life>>,
46287    ///
46288    ///     <p>If the button is a submit button (it's inside/associated with a <code>&lt;form&gt;</code> and doesn't have <code>type="button"</code>), this attribute specifies the <a href="/en-US/docs/Web/HTTP/Methods">HTTP method</a> used to submit the form. Possible values:</p>
46289    ///     <ul>
46290    ///       <li><code>post</code>: The data from the form are included in the body of the HTTP request when sent to the server. Use when the form contains information that shouldn't be public, like login credentials.</li>
46291    ///       <li><code>get</code>: The form data are appended to the form's <code>action</code> URL, with a <code>?</code> as a separator, and the resulting URL is sent to the server. Use this method when the form <a href="/en-US/docs/Glossary/Idempotent">has no side effects</a>, like search forms.</li>
46292    ///     </ul>
46293    ///     <p>If specified, this attribute overrides the <a href="/en-US/docs/Web/HTML/Element/form#method"><code>method</code></a> attribute of the button's form owner.</p>
46294    ///   
46295    pub formmethod: core::option::Option<AttributeValue<'life>>,
46296    ///
46297    ///     <p>If the button is a submit button, this Boolean attribute specifies that the form is not to be <a href="/en-US/docs/Learn/Forms/Form_validation">validated</a> when it is submitted. If this attribute is specified, it overrides the <a href="/en-US/docs/Web/HTML/Element/form#novalidate"><code>novalidate</code></a> attribute of the button's form owner.</p>
46298    ///     <p>This attribute is also available on <a href="/en-US/docs/Web/HTML/Element/input/image"><code>&lt;input type="image"&gt;</code></a> and <a href="/en-US/docs/Web/HTML/Element/input/submit"><code>&lt;input type="submit"&gt;</code></a> elements.</p>
46299    ///   
46300    pub formnovalidate: core::option::Option<AttributeValue<'life>>,
46301    ///
46302    ///     <p>If the button is a submit button, this attribute is an author-defined name or standardized, underscore-prefixed keyword indicating where to display the response from submitting the form. This is the <code>name</code> of, or keyword for, a <em>browsing context</em> (a tab, window, or <a href="/en-US/docs/Web/HTML/Element/iframe"><code>&lt;iframe&gt;</code></a>). If this attribute is specified, it overrides the <a href="/en-US/docs/Web/HTML/Element/form#target"><code>target</code></a> attribute of the button's form owner. The following keywords have special meanings:</p>
46303    ///     <ul>
46304    ///       <li><code>_self</code>: Load the response into the same browsing context as the current one. This is the default if the attribute is not specified.</li>
46305    ///       <li><code>_blank</code>: Load the response into a new unnamed browsing context — usually a new tab or window, depending on the user's browser settings.</li>
46306    ///       <li><code>_parent</code>: Load the response into the parent browsing context of the current one. If there is no parent, this option behaves the same way as <code>_self</code>.</li>
46307    ///       <li><code>_top</code>: Load the response into the top-level browsing context (that is, the browsing context that is an ancestor of the current one, and has no parent). If there is no parent, this option behaves the same way as <code>_self</code>.</li>
46308    ///     </ul>
46309    ///   
46310    pub formtarget: core::option::Option<AttributeValue<'life>>,
46311    ///
46312    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
46313    ///   
46314    pub hidden: core::option::Option<AttributeValue<'life>>,
46315    ///
46316    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
46317    ///   
46318    pub id: core::option::Option<AttributeValue<'life>>,
46319    ///
46320    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
46321    ///   
46322    pub inert: core::option::Option<AttributeValue<'life>>,
46323    ///
46324    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
46325    ///   
46326    pub inputmode: core::option::Option<AttributeValue<'life>>,
46327    ///
46328    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
46329    ///   
46330    pub is: core::option::Option<AttributeValue<'life>>,
46331    ///
46332    ///     <p>The unique, global identifier of an item.</p>
46333    ///   
46334    pub itemid: core::option::Option<AttributeValue<'life>>,
46335    ///
46336    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
46337    ///   
46338    pub itemprop: core::option::Option<AttributeValue<'life>>,
46339    ///
46340    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
46341    ///   
46342    pub itemref: core::option::Option<AttributeValue<'life>>,
46343    ///
46344    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
46345    ///   
46346    pub itemscope: core::option::Option<AttributeValue<'life>>,
46347    ///
46348    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
46349    ///   
46350    pub itemtype: core::option::Option<AttributeValue<'life>>,
46351    ///
46352    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
46353    ///   
46354    pub lang: core::option::Option<AttributeValue<'life>>,
46355    ///
46356    ///     <p>The name of the button, submitted as a pair with the button's <code>value</code> as part of the form data, when that button is used to submit the form.</p>
46357    ///   
46358    pub name: core::option::Option<AttributeValue<'life>>,
46359    ///
46360    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
46361    ///   
46362    pub nonce: core::option::Option<AttributeValue<'life>>,
46363    ///
46364    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
46365    ///   
46366    pub part: core::option::Option<AttributeValue<'life>>,
46367    ///
46368    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
46369    ///   
46370    pub popover: core::option::Option<AttributeValue<'life>>,
46371    ///
46372    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
46373    ///   
46374    pub role: core::option::Option<AttributeValue<'life>>,
46375    ///
46376    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
46377    ///   
46378    pub slot: core::option::Option<AttributeValue<'life>>,
46379    ///
46380    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
46381    ///     <ul>
46382    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
46383    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
46384    ///     </ul>
46385    ///   
46386    pub spellcheck: core::option::Option<AttributeValue<'life>>,
46387    ///
46388    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
46389    ///   
46390    pub style: core::option::Option<AttributeValue<'life>>,
46391    ///
46392    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
46393    ///     <ul>
46394    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
46395    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
46396    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
46397    ///     </ul>
46398    ///   
46399    pub tabindex: core::option::Option<AttributeValue<'life>>,
46400    ///
46401    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
46402    ///   
46403    pub title: core::option::Option<AttributeValue<'life>>,
46404    ///
46405    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
46406    ///     <ul>
46407    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
46408    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
46409    ///     </ul>
46410    ///   
46411    pub translate: core::option::Option<AttributeValue<'life>>,
46412    ///
46413    ///     <p>The default behavior of the button. Possible values are:</p>
46414    ///     <ul>
46415    ///       <li><code>submit</code>: The button submits the form data to the server. This is the default if the attribute is not specified for buttons associated with a <code>&lt;form&gt;</code>, or if the attribute is an empty or invalid value.</li>
46416    ///       <li><code>reset</code>: The button resets all the controls to their initial values, like <a href="/en-US/docs/Web/HTML/Element/input/reset">&lt;input type="reset"&gt;</a>. (This behavior tends to annoy users.)</li>
46417    ///       <li><code>button</code>: The button has no default behavior, and does nothing when pressed by default. It can have client-side scripts listen to the element's events, which are triggered when the events occur.</li>
46418    ///     </ul>
46419    ///   
46420    pub type_: core::option::Option<AttributeValue<'life>>,
46421    ///
46422    ///     <p>Defines the value associated with the button's <code>name</code> when it's submitted with the form data. This value is passed to the server in params when the form is submitted using this button.</p>
46423    ///   
46424    pub value: core::option::Option<AttributeValue<'life>>,
46425    ///
46426    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
46427    ///     <ul>
46428    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
46429    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
46430    ///     </ul>
46431    ///   
46432    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
46433}
46434#[allow(deprecated)]
46435
46436impl<'life> Button<'life> {
46437    /// Get the tag name of the element.
46438    /// This is the same as the name of the struct, in kebab-case.
46439    pub fn tag() -> &'static str {
46440        "button"
46441    }
46442    /// Sets an attribute of the element.
46443    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
46444    /// If the `alloc` feature is disabled, this function will silently fail.
46445    ///
46446    /// # Note
46447    /// This only works when the attribute is lowercase.
46448    pub fn set_attr(
46449        &mut self,
46450        name: &'life str,
46451        value: impl core::convert::Into<AttributeValue<'life>>,
46452    ) {
46453        match name {
46454            "accesskey" => self.accesskey = Some(value.into()),
46455            "autocapitalize" => self.autocapitalize = Some(value.into()),
46456            "autocomplete" => self.autocomplete = Some(value.into()),
46457            "autofocus" => self.autofocus = Some(value.into()),
46458            "class" => self.class = Some(value.into()),
46459            "contenteditable" => self.contenteditable = Some(value.into()),
46460            "contextmenu" => self.contextmenu = Some(value.into()),
46461            "dir" => self.dir = Some(value.into()),
46462            "disabled" => self.disabled = Some(value.into()),
46463            "draggable" => self.draggable = Some(value.into()),
46464            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
46465            "exportparts" => self.exportparts = Some(value.into()),
46466            "form" => self.form = Some(value.into()),
46467            "formaction" => self.formaction = Some(value.into()),
46468            "formenctype" => self.formenctype = Some(value.into()),
46469            "formmethod" => self.formmethod = Some(value.into()),
46470            "formnovalidate" => self.formnovalidate = Some(value.into()),
46471            "formtarget" => self.formtarget = Some(value.into()),
46472            "hidden" => self.hidden = Some(value.into()),
46473            "id" => self.id = Some(value.into()),
46474            "inert" => self.inert = Some(value.into()),
46475            "inputmode" => self.inputmode = Some(value.into()),
46476            "is" => self.is = Some(value.into()),
46477            "itemid" => self.itemid = Some(value.into()),
46478            "itemprop" => self.itemprop = Some(value.into()),
46479            "itemref" => self.itemref = Some(value.into()),
46480            "itemscope" => self.itemscope = Some(value.into()),
46481            "itemtype" => self.itemtype = Some(value.into()),
46482            "lang" => self.lang = Some(value.into()),
46483            "name" => self.name = Some(value.into()),
46484            "nonce" => self.nonce = Some(value.into()),
46485            "part" => self.part = Some(value.into()),
46486            "popover" => self.popover = Some(value.into()),
46487            "role" => self.role = Some(value.into()),
46488            "slot" => self.slot = Some(value.into()),
46489            "spellcheck" => self.spellcheck = Some(value.into()),
46490            "style" => self.style = Some(value.into()),
46491            "tabindex" => self.tabindex = Some(value.into()),
46492            "title" => self.title = Some(value.into()),
46493            "translate" => self.translate = Some(value.into()),
46494            "type_" => self.type_ = Some(value.into()),
46495            "value" => self.value = Some(value.into()),
46496            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
46497            #[cfg(feature = "alloc")]
46498            _ => {
46499                #[allow(clippy::useless_conversion)]
46500                self.extra.insert(name.into(), value.into());
46501            }
46502            #[cfg(not(feature = "alloc"))]
46503            _ => {}
46504        }
46505    }
46506}
46507/// The <strong><code>&lt;button&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element is an interactive element activated by a user with a mouse, keyboard, finger, voice command, or other assistive technology. Once activated, it then performs an action, such as submitting a <a href="/en-US/docs/Learn/Forms">form</a> or opening a dialog.
46508///
46509/// By default, HTML buttons are presented in a style resembling the platform the <a href="/en-US/docs/Glossary/User_agent">user agent</a> runs on, but you can change buttons' appearance with <a href="/en-US/docs/Web/CSS">CSS</a>.
46510///
46511/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button>
46512
46513#[cfg(feature = "alloc")]
46514#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
46515pub struct ButtonOwned {
46516    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
46517    ///   
46518    pub accesskey: core::option::Option<AttributeValueOwned>,
46519    ///
46520    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
46521    ///     <ul>
46522    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
46523    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
46524    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
46525    ///       <li><code>characters</code>, all letters should default to uppercase</li>
46526    ///     </ul>
46527    ///   
46528    pub autocapitalize: core::option::Option<AttributeValueOwned>,
46529    ///
46530    ///     <p>This attribute on a <a href="/en-US/docs/Web/HTML/Element/button" aria-current="page"><code>&lt;button&gt;</code></a> is nonstandard and Firefox-specific. Unlike other browsers, <a target="_blank" href="https://stackoverflow.com/questions/5985839/bug-with-firefox-disabled-attribute-of-input-not-resetting-when-refreshing" class="external">Firefox persists the dynamic disabled state</a> of a <a aria-current="page" href="/en-US/docs/Web/HTML/Element/button"><code>&lt;button&gt;</code></a> across page loads. Setting <code>autocomplete="off"</code> on the button disables this feature; see <a target="_blank" href="https://bugzil.la/654072" class="external">Firefox bug 654072</a>.</p>
46531    ///   
46532    pub autocomplete: core::option::Option<AttributeValueOwned>,
46533    ///
46534    ///     <p>This Boolean attribute specifies that the button should have input <a href="/en-US/docs/Web/API/HTMLElement/focus">focus</a> when the page loads. <strong>Only one element in a document can have this attribute.</strong></p>
46535    ///   
46536    pub autofocus: core::option::Option<AttributeValueOwned>,
46537    ///
46538    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
46539    ///   
46540    pub class: core::option::Option<AttributeValueOwned>,
46541    ///
46542    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
46543    ///     <ul>
46544    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
46545    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
46546    ///     </ul>
46547    ///   
46548    pub contenteditable: core::option::Option<AttributeValueOwned>,
46549    ///
46550    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
46551    ///   
46552    pub contextmenu: core::option::Option<AttributeValueOwned>,
46553    ///
46554    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
46555    ///   
46556    #[cfg(feature = "alloc")]
46557    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
46558    ///
46559    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
46560    ///     <ul>
46561    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
46562    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
46563    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
46564    ///     </ul>
46565    ///   
46566    pub dir: core::option::Option<AttributeValueOwned>,
46567    ///
46568    ///     <p>This Boolean attribute prevents the user from interacting with the button: it cannot be pressed or focused.</p>
46569    ///     <p>Firefox, unlike other browsers, <a class="external" href="https://stackoverflow.com/questions/5985839/bug-with-firefox-disabled-attribute-of-input-not-resetting-when-refreshing" target="_blank">persists the dynamic disabled state</a> of a <a aria-current="page" href="/en-US/docs/Web/HTML/Element/button"><code>&lt;button&gt;</code></a> across page loads. To control this feature, use the [<code>autocomplete</code>]] (#autocomplete) attribute.</p>
46570    ///   
46571    pub disabled: core::option::Option<AttributeValueOwned>,
46572    ///
46573    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
46574    ///     <ul>
46575    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
46576    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
46577    ///     </ul>
46578    ///   
46579    pub draggable: core::option::Option<AttributeValueOwned>,
46580    ///
46581    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
46582    ///   
46583    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
46584    ///
46585    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
46586    ///   
46587    pub exportparts: core::option::Option<AttributeValueOwned>,
46588    /// /// Extra attributes of the element.
46589
46590    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
46591    #[cfg(feature = "alloc")]
46592    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
46593    ///
46594    ///     <p>The <a href="/en-US/docs/Web/HTML/Element/form"><code>&lt;form&gt;</code></a> element to associate the button with (its <em>form owner</em>). The value of this attribute must be the <code>id</code> of a <code>&lt;form&gt;</code> in the same document. (If this attribute is not set, the <code>&lt;button&gt;</code> is associated with its ancestor <code>&lt;form&gt;</code> element, if any.)</p>
46595    ///     <p>This attribute lets you associate <code>&lt;button&gt;</code> elements to <code>&lt;form&gt;</code>s anywhere in the document, not just inside a <code>&lt;form&gt;</code>. It can also override an ancestor <code>&lt;form&gt;</code> element.</p>
46596    ///   
46597    pub form: core::option::Option<AttributeValueOwned>,
46598    ///
46599    ///     <p>The URL that processes the information submitted by the button. Overrides the <a href="/en-US/docs/Web/HTML/Element/form#action"><code>action</code></a> attribute of the button's form owner. Does nothing if there is no form owner.</p>
46600    ///   
46601    pub formaction: core::option::Option<AttributeValueOwned>,
46602    ///
46603    ///     <p>If the button is a submit button (it's inside/associated with a <code>&lt;form&gt;</code> and doesn't have <code>type="button"</code>), specifies how to encode the form data that is submitted. Possible values:</p>
46604    ///     <ul>
46605    ///       <li><code>application/x-www-form-urlencoded</code>: The default if the attribute is not used.</li>
46606    ///       <li><code>multipart/form-data</code>: Used to submit <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements with their <a href="/en-US/docs/Web/HTML/Element/input#type"><code>type</code></a> attributes set to <code>file</code>.</li>
46607    ///       <li><code>text/plain</code>: Specified as a debugging aid; shouldn't be used for real form submission.</li>
46608    ///     </ul>
46609    ///     <p>If this attribute is specified, it overrides the <a href="/en-US/docs/Web/HTML/Element/form#enctype"><code>enctype</code></a> attribute of the button's form owner.</p>
46610    ///   
46611    pub formenctype: core::option::Option<AttributeValueOwned>,
46612    ///
46613    ///     <p>If the button is a submit button (it's inside/associated with a <code>&lt;form&gt;</code> and doesn't have <code>type="button"</code>), this attribute specifies the <a href="/en-US/docs/Web/HTTP/Methods">HTTP method</a> used to submit the form. Possible values:</p>
46614    ///     <ul>
46615    ///       <li><code>post</code>: The data from the form are included in the body of the HTTP request when sent to the server. Use when the form contains information that shouldn't be public, like login credentials.</li>
46616    ///       <li><code>get</code>: The form data are appended to the form's <code>action</code> URL, with a <code>?</code> as a separator, and the resulting URL is sent to the server. Use this method when the form <a href="/en-US/docs/Glossary/Idempotent">has no side effects</a>, like search forms.</li>
46617    ///     </ul>
46618    ///     <p>If specified, this attribute overrides the <a href="/en-US/docs/Web/HTML/Element/form#method"><code>method</code></a> attribute of the button's form owner.</p>
46619    ///   
46620    pub formmethod: core::option::Option<AttributeValueOwned>,
46621    ///
46622    ///     <p>If the button is a submit button, this Boolean attribute specifies that the form is not to be <a href="/en-US/docs/Learn/Forms/Form_validation">validated</a> when it is submitted. If this attribute is specified, it overrides the <a href="/en-US/docs/Web/HTML/Element/form#novalidate"><code>novalidate</code></a> attribute of the button's form owner.</p>
46623    ///     <p>This attribute is also available on <a href="/en-US/docs/Web/HTML/Element/input/image"><code>&lt;input type="image"&gt;</code></a> and <a href="/en-US/docs/Web/HTML/Element/input/submit"><code>&lt;input type="submit"&gt;</code></a> elements.</p>
46624    ///   
46625    pub formnovalidate: core::option::Option<AttributeValueOwned>,
46626    ///
46627    ///     <p>If the button is a submit button, this attribute is an author-defined name or standardized, underscore-prefixed keyword indicating where to display the response from submitting the form. This is the <code>name</code> of, or keyword for, a <em>browsing context</em> (a tab, window, or <a href="/en-US/docs/Web/HTML/Element/iframe"><code>&lt;iframe&gt;</code></a>). If this attribute is specified, it overrides the <a href="/en-US/docs/Web/HTML/Element/form#target"><code>target</code></a> attribute of the button's form owner. The following keywords have special meanings:</p>
46628    ///     <ul>
46629    ///       <li><code>_self</code>: Load the response into the same browsing context as the current one. This is the default if the attribute is not specified.</li>
46630    ///       <li><code>_blank</code>: Load the response into a new unnamed browsing context — usually a new tab or window, depending on the user's browser settings.</li>
46631    ///       <li><code>_parent</code>: Load the response into the parent browsing context of the current one. If there is no parent, this option behaves the same way as <code>_self</code>.</li>
46632    ///       <li><code>_top</code>: Load the response into the top-level browsing context (that is, the browsing context that is an ancestor of the current one, and has no parent). If there is no parent, this option behaves the same way as <code>_self</code>.</li>
46633    ///     </ul>
46634    ///   
46635    pub formtarget: core::option::Option<AttributeValueOwned>,
46636    ///
46637    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
46638    ///   
46639    pub hidden: core::option::Option<AttributeValueOwned>,
46640    ///
46641    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
46642    ///   
46643    pub id: core::option::Option<AttributeValueOwned>,
46644    ///
46645    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
46646    ///   
46647    pub inert: core::option::Option<AttributeValueOwned>,
46648    ///
46649    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
46650    ///   
46651    pub inputmode: core::option::Option<AttributeValueOwned>,
46652    ///
46653    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
46654    ///   
46655    pub is: core::option::Option<AttributeValueOwned>,
46656    ///
46657    ///     <p>The unique, global identifier of an item.</p>
46658    ///   
46659    pub itemid: core::option::Option<AttributeValueOwned>,
46660    ///
46661    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
46662    ///   
46663    pub itemprop: core::option::Option<AttributeValueOwned>,
46664    ///
46665    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
46666    ///   
46667    pub itemref: core::option::Option<AttributeValueOwned>,
46668    ///
46669    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
46670    ///   
46671    pub itemscope: core::option::Option<AttributeValueOwned>,
46672    ///
46673    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
46674    ///   
46675    pub itemtype: core::option::Option<AttributeValueOwned>,
46676    ///
46677    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
46678    ///   
46679    pub lang: core::option::Option<AttributeValueOwned>,
46680    ///
46681    ///     <p>The name of the button, submitted as a pair with the button's <code>value</code> as part of the form data, when that button is used to submit the form.</p>
46682    ///   
46683    pub name: core::option::Option<AttributeValueOwned>,
46684    ///
46685    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
46686    ///   
46687    pub nonce: core::option::Option<AttributeValueOwned>,
46688    ///
46689    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
46690    ///   
46691    pub part: core::option::Option<AttributeValueOwned>,
46692    ///
46693    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
46694    ///   
46695    pub popover: core::option::Option<AttributeValueOwned>,
46696    ///
46697    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
46698    ///   
46699    pub role: core::option::Option<AttributeValueOwned>,
46700    ///
46701    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
46702    ///   
46703    pub slot: core::option::Option<AttributeValueOwned>,
46704    ///
46705    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
46706    ///     <ul>
46707    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
46708    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
46709    ///     </ul>
46710    ///   
46711    pub spellcheck: core::option::Option<AttributeValueOwned>,
46712    ///
46713    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
46714    ///   
46715    pub style: core::option::Option<AttributeValueOwned>,
46716    ///
46717    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
46718    ///     <ul>
46719    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
46720    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
46721    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
46722    ///     </ul>
46723    ///   
46724    pub tabindex: core::option::Option<AttributeValueOwned>,
46725    ///
46726    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
46727    ///   
46728    pub title: core::option::Option<AttributeValueOwned>,
46729    ///
46730    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
46731    ///     <ul>
46732    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
46733    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
46734    ///     </ul>
46735    ///   
46736    pub translate: core::option::Option<AttributeValueOwned>,
46737    ///
46738    ///     <p>The default behavior of the button. Possible values are:</p>
46739    ///     <ul>
46740    ///       <li><code>submit</code>: The button submits the form data to the server. This is the default if the attribute is not specified for buttons associated with a <code>&lt;form&gt;</code>, or if the attribute is an empty or invalid value.</li>
46741    ///       <li><code>reset</code>: The button resets all the controls to their initial values, like <a href="/en-US/docs/Web/HTML/Element/input/reset">&lt;input type="reset"&gt;</a>. (This behavior tends to annoy users.)</li>
46742    ///       <li><code>button</code>: The button has no default behavior, and does nothing when pressed by default. It can have client-side scripts listen to the element's events, which are triggered when the events occur.</li>
46743    ///     </ul>
46744    ///   
46745    pub type_: core::option::Option<AttributeValueOwned>,
46746    ///
46747    ///     <p>Defines the value associated with the button's <code>name</code> when it's submitted with the form data. This value is passed to the server in params when the form is submitted using this button.</p>
46748    ///   
46749    pub value: core::option::Option<AttributeValueOwned>,
46750    ///
46751    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
46752    ///     <ul>
46753    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
46754    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
46755    ///     </ul>
46756    ///   
46757    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
46758}
46759#[allow(deprecated)]
46760#[cfg(feature = "alloc")]
46761impl ButtonOwned {
46762    /// Get the tag name of the element.
46763    /// This is the same as the name of the struct, in kebab-case.
46764    pub fn tag() -> &'static str {
46765        "button"
46766    }
46767    /// Sets an attribute of the element.
46768    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
46769    /// If the `alloc` feature is disabled, this function will silently fail.
46770    ///
46771    /// # Note
46772    /// This only works when the attribute is lowercase.
46773    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
46774        match name {
46775            "accesskey" => self.accesskey = Some(value.into()),
46776            "autocapitalize" => self.autocapitalize = Some(value.into()),
46777            "autocomplete" => self.autocomplete = Some(value.into()),
46778            "autofocus" => self.autofocus = Some(value.into()),
46779            "class" => self.class = Some(value.into()),
46780            "contenteditable" => self.contenteditable = Some(value.into()),
46781            "contextmenu" => self.contextmenu = Some(value.into()),
46782            "dir" => self.dir = Some(value.into()),
46783            "disabled" => self.disabled = Some(value.into()),
46784            "draggable" => self.draggable = Some(value.into()),
46785            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
46786            "exportparts" => self.exportparts = Some(value.into()),
46787            "form" => self.form = Some(value.into()),
46788            "formaction" => self.formaction = Some(value.into()),
46789            "formenctype" => self.formenctype = Some(value.into()),
46790            "formmethod" => self.formmethod = Some(value.into()),
46791            "formnovalidate" => self.formnovalidate = Some(value.into()),
46792            "formtarget" => self.formtarget = Some(value.into()),
46793            "hidden" => self.hidden = Some(value.into()),
46794            "id" => self.id = Some(value.into()),
46795            "inert" => self.inert = Some(value.into()),
46796            "inputmode" => self.inputmode = Some(value.into()),
46797            "is" => self.is = Some(value.into()),
46798            "itemid" => self.itemid = Some(value.into()),
46799            "itemprop" => self.itemprop = Some(value.into()),
46800            "itemref" => self.itemref = Some(value.into()),
46801            "itemscope" => self.itemscope = Some(value.into()),
46802            "itemtype" => self.itemtype = Some(value.into()),
46803            "lang" => self.lang = Some(value.into()),
46804            "name" => self.name = Some(value.into()),
46805            "nonce" => self.nonce = Some(value.into()),
46806            "part" => self.part = Some(value.into()),
46807            "popover" => self.popover = Some(value.into()),
46808            "role" => self.role = Some(value.into()),
46809            "slot" => self.slot = Some(value.into()),
46810            "spellcheck" => self.spellcheck = Some(value.into()),
46811            "style" => self.style = Some(value.into()),
46812            "tabindex" => self.tabindex = Some(value.into()),
46813            "title" => self.title = Some(value.into()),
46814            "translate" => self.translate = Some(value.into()),
46815            "type_" => self.type_ = Some(value.into()),
46816            "value" => self.value = Some(value.into()),
46817            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
46818            #[cfg(feature = "alloc")]
46819            _ => {
46820                #[allow(clippy::useless_conversion)]
46821                self.extra.insert(name.into(), value.into());
46822            }
46823            #[cfg(not(feature = "alloc"))]
46824            _ => {}
46825        }
46826    }
46827}
46828/// The <strong><code>&lt;datalist&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element contains a set of <a href="/en-US/docs/Web/HTML/Element/option"><code>&lt;option&gt;</code></a> elements that represent the permissible or recommended options available to choose from within other controls.
46829///
46830/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/datalist>
46831
46832#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
46833pub struct Datalist<'life> {
46834    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
46835    ///   
46836    pub accesskey: core::option::Option<AttributeValue<'life>>,
46837    ///
46838    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
46839    ///     <ul>
46840    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
46841    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
46842    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
46843    ///       <li><code>characters</code>, all letters should default to uppercase</li>
46844    ///     </ul>
46845    ///   
46846    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
46847    ///
46848    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
46849    ///   
46850    pub autofocus: core::option::Option<AttributeValue<'life>>,
46851    ///
46852    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
46853    ///   
46854    pub class: core::option::Option<AttributeValue<'life>>,
46855    ///
46856    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
46857    ///     <ul>
46858    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
46859    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
46860    ///     </ul>
46861    ///   
46862    pub contenteditable: core::option::Option<AttributeValue<'life>>,
46863    ///
46864    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
46865    ///   
46866    pub contextmenu: core::option::Option<AttributeValue<'life>>,
46867    ///
46868    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
46869    ///   
46870    #[cfg(feature = "alloc")]
46871    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
46872    ///
46873    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
46874    ///     <ul>
46875    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
46876    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
46877    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
46878    ///     </ul>
46879    ///   
46880    pub dir: core::option::Option<AttributeValue<'life>>,
46881    ///
46882    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
46883    ///     <ul>
46884    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
46885    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
46886    ///     </ul>
46887    ///   
46888    pub draggable: core::option::Option<AttributeValue<'life>>,
46889    ///
46890    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
46891    ///   
46892    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
46893    ///
46894    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
46895    ///   
46896    pub exportparts: core::option::Option<AttributeValue<'life>>,
46897    /// /// Extra attributes of the element.
46898
46899    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
46900    #[cfg(feature = "alloc")]
46901    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
46902    ///
46903    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
46904    ///   
46905    pub hidden: core::option::Option<AttributeValue<'life>>,
46906    ///
46907    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
46908    ///   
46909    pub id: core::option::Option<AttributeValue<'life>>,
46910    ///
46911    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
46912    ///   
46913    pub inert: core::option::Option<AttributeValue<'life>>,
46914    ///
46915    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
46916    ///   
46917    pub inputmode: core::option::Option<AttributeValue<'life>>,
46918    ///
46919    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
46920    ///   
46921    pub is: core::option::Option<AttributeValue<'life>>,
46922    ///
46923    ///     <p>The unique, global identifier of an item.</p>
46924    ///   
46925    pub itemid: core::option::Option<AttributeValue<'life>>,
46926    ///
46927    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
46928    ///   
46929    pub itemprop: core::option::Option<AttributeValue<'life>>,
46930    ///
46931    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
46932    ///   
46933    pub itemref: core::option::Option<AttributeValue<'life>>,
46934    ///
46935    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
46936    ///   
46937    pub itemscope: core::option::Option<AttributeValue<'life>>,
46938    ///
46939    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
46940    ///   
46941    pub itemtype: core::option::Option<AttributeValue<'life>>,
46942    ///
46943    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
46944    ///   
46945    pub lang: core::option::Option<AttributeValue<'life>>,
46946    ///
46947    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
46948    ///   
46949    pub nonce: core::option::Option<AttributeValue<'life>>,
46950    ///
46951    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
46952    ///   
46953    pub part: core::option::Option<AttributeValue<'life>>,
46954    ///
46955    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
46956    ///   
46957    pub popover: core::option::Option<AttributeValue<'life>>,
46958    ///
46959    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
46960    ///   
46961    pub role: core::option::Option<AttributeValue<'life>>,
46962    ///
46963    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
46964    ///   
46965    pub slot: core::option::Option<AttributeValue<'life>>,
46966    ///
46967    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
46968    ///     <ul>
46969    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
46970    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
46971    ///     </ul>
46972    ///   
46973    pub spellcheck: core::option::Option<AttributeValue<'life>>,
46974    ///
46975    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
46976    ///   
46977    pub style: core::option::Option<AttributeValue<'life>>,
46978    ///
46979    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
46980    ///     <ul>
46981    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
46982    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
46983    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
46984    ///     </ul>
46985    ///   
46986    pub tabindex: core::option::Option<AttributeValue<'life>>,
46987    ///
46988    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
46989    ///   
46990    pub title: core::option::Option<AttributeValue<'life>>,
46991    ///
46992    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
46993    ///     <ul>
46994    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
46995    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
46996    ///     </ul>
46997    ///   
46998    pub translate: core::option::Option<AttributeValue<'life>>,
46999    ///
47000    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
47001    ///     <ul>
47002    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
47003    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
47004    ///     </ul>
47005    ///   
47006    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
47007}
47008#[allow(deprecated)]
47009
47010impl<'life> Datalist<'life> {
47011    /// Get the tag name of the element.
47012    /// This is the same as the name of the struct, in kebab-case.
47013    pub fn tag() -> &'static str {
47014        "datalist"
47015    }
47016    /// Sets an attribute of the element.
47017    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
47018    /// If the `alloc` feature is disabled, this function will silently fail.
47019    ///
47020    /// # Note
47021    /// This only works when the attribute is lowercase.
47022    pub fn set_attr(
47023        &mut self,
47024        name: &'life str,
47025        value: impl core::convert::Into<AttributeValue<'life>>,
47026    ) {
47027        match name {
47028            "accesskey" => self.accesskey = Some(value.into()),
47029            "autocapitalize" => self.autocapitalize = Some(value.into()),
47030            "autofocus" => self.autofocus = Some(value.into()),
47031            "class" => self.class = Some(value.into()),
47032            "contenteditable" => self.contenteditable = Some(value.into()),
47033            "contextmenu" => self.contextmenu = Some(value.into()),
47034            "dir" => self.dir = Some(value.into()),
47035            "draggable" => self.draggable = Some(value.into()),
47036            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
47037            "exportparts" => self.exportparts = Some(value.into()),
47038            "hidden" => self.hidden = Some(value.into()),
47039            "id" => self.id = Some(value.into()),
47040            "inert" => self.inert = Some(value.into()),
47041            "inputmode" => self.inputmode = Some(value.into()),
47042            "is" => self.is = Some(value.into()),
47043            "itemid" => self.itemid = Some(value.into()),
47044            "itemprop" => self.itemprop = Some(value.into()),
47045            "itemref" => self.itemref = Some(value.into()),
47046            "itemscope" => self.itemscope = Some(value.into()),
47047            "itemtype" => self.itemtype = Some(value.into()),
47048            "lang" => self.lang = Some(value.into()),
47049            "nonce" => self.nonce = Some(value.into()),
47050            "part" => self.part = Some(value.into()),
47051            "popover" => self.popover = Some(value.into()),
47052            "role" => self.role = Some(value.into()),
47053            "slot" => self.slot = Some(value.into()),
47054            "spellcheck" => self.spellcheck = Some(value.into()),
47055            "style" => self.style = Some(value.into()),
47056            "tabindex" => self.tabindex = Some(value.into()),
47057            "title" => self.title = Some(value.into()),
47058            "translate" => self.translate = Some(value.into()),
47059            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
47060            #[cfg(feature = "alloc")]
47061            _ => {
47062                #[allow(clippy::useless_conversion)]
47063                self.extra.insert(name.into(), value.into());
47064            }
47065            #[cfg(not(feature = "alloc"))]
47066            _ => {}
47067        }
47068    }
47069}
47070/// The <strong><code>&lt;datalist&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element contains a set of <a href="/en-US/docs/Web/HTML/Element/option"><code>&lt;option&gt;</code></a> elements that represent the permissible or recommended options available to choose from within other controls.
47071///
47072/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/datalist>
47073
47074#[cfg(feature = "alloc")]
47075#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
47076pub struct DatalistOwned {
47077    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
47078    ///   
47079    pub accesskey: core::option::Option<AttributeValueOwned>,
47080    ///
47081    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
47082    ///     <ul>
47083    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
47084    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
47085    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
47086    ///       <li><code>characters</code>, all letters should default to uppercase</li>
47087    ///     </ul>
47088    ///   
47089    pub autocapitalize: core::option::Option<AttributeValueOwned>,
47090    ///
47091    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
47092    ///   
47093    pub autofocus: core::option::Option<AttributeValueOwned>,
47094    ///
47095    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
47096    ///   
47097    pub class: core::option::Option<AttributeValueOwned>,
47098    ///
47099    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
47100    ///     <ul>
47101    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
47102    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
47103    ///     </ul>
47104    ///   
47105    pub contenteditable: core::option::Option<AttributeValueOwned>,
47106    ///
47107    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
47108    ///   
47109    pub contextmenu: core::option::Option<AttributeValueOwned>,
47110    ///
47111    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
47112    ///   
47113    #[cfg(feature = "alloc")]
47114    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
47115    ///
47116    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
47117    ///     <ul>
47118    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
47119    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
47120    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
47121    ///     </ul>
47122    ///   
47123    pub dir: core::option::Option<AttributeValueOwned>,
47124    ///
47125    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
47126    ///     <ul>
47127    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
47128    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
47129    ///     </ul>
47130    ///   
47131    pub draggable: core::option::Option<AttributeValueOwned>,
47132    ///
47133    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
47134    ///   
47135    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
47136    ///
47137    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
47138    ///   
47139    pub exportparts: core::option::Option<AttributeValueOwned>,
47140    /// /// Extra attributes of the element.
47141
47142    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
47143    #[cfg(feature = "alloc")]
47144    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
47145    ///
47146    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
47147    ///   
47148    pub hidden: core::option::Option<AttributeValueOwned>,
47149    ///
47150    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
47151    ///   
47152    pub id: core::option::Option<AttributeValueOwned>,
47153    ///
47154    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
47155    ///   
47156    pub inert: core::option::Option<AttributeValueOwned>,
47157    ///
47158    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
47159    ///   
47160    pub inputmode: core::option::Option<AttributeValueOwned>,
47161    ///
47162    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
47163    ///   
47164    pub is: core::option::Option<AttributeValueOwned>,
47165    ///
47166    ///     <p>The unique, global identifier of an item.</p>
47167    ///   
47168    pub itemid: core::option::Option<AttributeValueOwned>,
47169    ///
47170    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
47171    ///   
47172    pub itemprop: core::option::Option<AttributeValueOwned>,
47173    ///
47174    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
47175    ///   
47176    pub itemref: core::option::Option<AttributeValueOwned>,
47177    ///
47178    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
47179    ///   
47180    pub itemscope: core::option::Option<AttributeValueOwned>,
47181    ///
47182    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
47183    ///   
47184    pub itemtype: core::option::Option<AttributeValueOwned>,
47185    ///
47186    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
47187    ///   
47188    pub lang: core::option::Option<AttributeValueOwned>,
47189    ///
47190    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
47191    ///   
47192    pub nonce: core::option::Option<AttributeValueOwned>,
47193    ///
47194    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
47195    ///   
47196    pub part: core::option::Option<AttributeValueOwned>,
47197    ///
47198    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
47199    ///   
47200    pub popover: core::option::Option<AttributeValueOwned>,
47201    ///
47202    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
47203    ///   
47204    pub role: core::option::Option<AttributeValueOwned>,
47205    ///
47206    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
47207    ///   
47208    pub slot: core::option::Option<AttributeValueOwned>,
47209    ///
47210    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
47211    ///     <ul>
47212    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
47213    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
47214    ///     </ul>
47215    ///   
47216    pub spellcheck: core::option::Option<AttributeValueOwned>,
47217    ///
47218    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
47219    ///   
47220    pub style: core::option::Option<AttributeValueOwned>,
47221    ///
47222    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
47223    ///     <ul>
47224    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
47225    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
47226    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
47227    ///     </ul>
47228    ///   
47229    pub tabindex: core::option::Option<AttributeValueOwned>,
47230    ///
47231    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
47232    ///   
47233    pub title: core::option::Option<AttributeValueOwned>,
47234    ///
47235    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
47236    ///     <ul>
47237    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
47238    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
47239    ///     </ul>
47240    ///   
47241    pub translate: core::option::Option<AttributeValueOwned>,
47242    ///
47243    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
47244    ///     <ul>
47245    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
47246    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
47247    ///     </ul>
47248    ///   
47249    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
47250}
47251#[allow(deprecated)]
47252#[cfg(feature = "alloc")]
47253impl DatalistOwned {
47254    /// Get the tag name of the element.
47255    /// This is the same as the name of the struct, in kebab-case.
47256    pub fn tag() -> &'static str {
47257        "datalist"
47258    }
47259    /// Sets an attribute of the element.
47260    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
47261    /// If the `alloc` feature is disabled, this function will silently fail.
47262    ///
47263    /// # Note
47264    /// This only works when the attribute is lowercase.
47265    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
47266        match name {
47267            "accesskey" => self.accesskey = Some(value.into()),
47268            "autocapitalize" => self.autocapitalize = Some(value.into()),
47269            "autofocus" => self.autofocus = Some(value.into()),
47270            "class" => self.class = Some(value.into()),
47271            "contenteditable" => self.contenteditable = Some(value.into()),
47272            "contextmenu" => self.contextmenu = Some(value.into()),
47273            "dir" => self.dir = Some(value.into()),
47274            "draggable" => self.draggable = Some(value.into()),
47275            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
47276            "exportparts" => self.exportparts = Some(value.into()),
47277            "hidden" => self.hidden = Some(value.into()),
47278            "id" => self.id = Some(value.into()),
47279            "inert" => self.inert = Some(value.into()),
47280            "inputmode" => self.inputmode = Some(value.into()),
47281            "is" => self.is = Some(value.into()),
47282            "itemid" => self.itemid = Some(value.into()),
47283            "itemprop" => self.itemprop = Some(value.into()),
47284            "itemref" => self.itemref = Some(value.into()),
47285            "itemscope" => self.itemscope = Some(value.into()),
47286            "itemtype" => self.itemtype = Some(value.into()),
47287            "lang" => self.lang = Some(value.into()),
47288            "nonce" => self.nonce = Some(value.into()),
47289            "part" => self.part = Some(value.into()),
47290            "popover" => self.popover = Some(value.into()),
47291            "role" => self.role = Some(value.into()),
47292            "slot" => self.slot = Some(value.into()),
47293            "spellcheck" => self.spellcheck = Some(value.into()),
47294            "style" => self.style = Some(value.into()),
47295            "tabindex" => self.tabindex = Some(value.into()),
47296            "title" => self.title = Some(value.into()),
47297            "translate" => self.translate = Some(value.into()),
47298            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
47299            #[cfg(feature = "alloc")]
47300            _ => {
47301                #[allow(clippy::useless_conversion)]
47302                self.extra.insert(name.into(), value.into());
47303            }
47304            #[cfg(not(feature = "alloc"))]
47305            _ => {}
47306        }
47307    }
47308}
47309/// The <strong><code>&lt;fieldset&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element is used to group several controls as well as labels (<a href="/en-US/docs/Web/HTML/Element/label"><code>&lt;label&gt;</code></a>) within a web form.
47310///
47311/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/fieldset>
47312
47313#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
47314pub struct Fieldset<'life> {
47315    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
47316    ///   
47317    pub accesskey: core::option::Option<AttributeValue<'life>>,
47318    ///
47319    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
47320    ///     <ul>
47321    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
47322    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
47323    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
47324    ///       <li><code>characters</code>, all letters should default to uppercase</li>
47325    ///     </ul>
47326    ///   
47327    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
47328    ///
47329    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
47330    ///   
47331    pub autofocus: core::option::Option<AttributeValue<'life>>,
47332    ///
47333    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
47334    ///   
47335    pub class: core::option::Option<AttributeValue<'life>>,
47336    ///
47337    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
47338    ///     <ul>
47339    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
47340    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
47341    ///     </ul>
47342    ///   
47343    pub contenteditable: core::option::Option<AttributeValue<'life>>,
47344    ///
47345    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
47346    ///   
47347    pub contextmenu: core::option::Option<AttributeValue<'life>>,
47348    ///
47349    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
47350    ///   
47351    #[cfg(feature = "alloc")]
47352    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
47353    ///
47354    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
47355    ///     <ul>
47356    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
47357    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
47358    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
47359    ///     </ul>
47360    ///   
47361    pub dir: core::option::Option<AttributeValue<'life>>,
47362    ///
47363    ///     <p>If this Boolean attribute is set, all form controls that are descendants of the <code>&lt;fieldset&gt;</code>, are disabled, meaning they are not editable and won't be submitted along with the <a href="/en-US/docs/Web/HTML/Element/form"><code>&lt;form&gt;</code></a>. They won't receive any browsing events, like mouse clicks or focus-related events. By default browsers display such controls grayed out. Note that form elements inside the <a href="/en-US/docs/Web/HTML/Element/legend"><code>&lt;legend&gt;</code></a> element won't be disabled.</p>
47364    ///   
47365    pub disabled: core::option::Option<AttributeValue<'life>>,
47366    ///
47367    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
47368    ///     <ul>
47369    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
47370    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
47371    ///     </ul>
47372    ///   
47373    pub draggable: core::option::Option<AttributeValue<'life>>,
47374    ///
47375    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
47376    ///   
47377    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
47378    ///
47379    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
47380    ///   
47381    pub exportparts: core::option::Option<AttributeValue<'life>>,
47382    /// /// Extra attributes of the element.
47383
47384    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
47385    #[cfg(feature = "alloc")]
47386    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
47387    ///
47388    ///     <p>This attribute takes the value of the <a href="/en-US/docs/Web/HTML/Global_attributes#id"><code>id</code></a> attribute of a <a href="/en-US/docs/Web/HTML/Element/form"><code>&lt;form&gt;</code></a> element you want the <code>&lt;fieldset&gt;</code> to be part of, even if it is not inside the form. Please note that usage of this is confusing — if you want the <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements inside the <code>&lt;fieldset&gt;</code> to be associated with the form, you need to use the <code>form</code> attribute directly on those elements. You can check which elements are associated with a form via JavaScript, using <a href="/en-US/docs/Web/API/HTMLFormElement/elements"><code>HTMLFormElement.elements</code></a>.</p>
47389    ///   
47390    pub form: core::option::Option<AttributeValue<'life>>,
47391    ///
47392    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
47393    ///   
47394    pub hidden: core::option::Option<AttributeValue<'life>>,
47395    ///
47396    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
47397    ///   
47398    pub id: core::option::Option<AttributeValue<'life>>,
47399    ///
47400    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
47401    ///   
47402    pub inert: core::option::Option<AttributeValue<'life>>,
47403    ///
47404    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
47405    ///   
47406    pub inputmode: core::option::Option<AttributeValue<'life>>,
47407    ///
47408    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
47409    ///   
47410    pub is: core::option::Option<AttributeValue<'life>>,
47411    ///
47412    ///     <p>The unique, global identifier of an item.</p>
47413    ///   
47414    pub itemid: core::option::Option<AttributeValue<'life>>,
47415    ///
47416    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
47417    ///   
47418    pub itemprop: core::option::Option<AttributeValue<'life>>,
47419    ///
47420    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
47421    ///   
47422    pub itemref: core::option::Option<AttributeValue<'life>>,
47423    ///
47424    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
47425    ///   
47426    pub itemscope: core::option::Option<AttributeValue<'life>>,
47427    ///
47428    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
47429    ///   
47430    pub itemtype: core::option::Option<AttributeValue<'life>>,
47431    ///
47432    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
47433    ///   
47434    pub lang: core::option::Option<AttributeValue<'life>>,
47435    ///
47436    ///     <p>The name associated with the group.</p>
47437    ///     <div id="sect1" class="notecard note">
47438    ///       <p><strong>Note:</strong> The caption for the fieldset is given by the first <a href="/en-US/docs/Web/HTML/Element/legend"><code>&lt;legend&gt;</code></a> element nested inside it.</p>
47439    ///     </div>
47440    ///   
47441    pub name: core::option::Option<AttributeValue<'life>>,
47442    ///
47443    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
47444    ///   
47445    pub nonce: core::option::Option<AttributeValue<'life>>,
47446    ///
47447    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
47448    ///   
47449    pub part: core::option::Option<AttributeValue<'life>>,
47450    ///
47451    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
47452    ///   
47453    pub popover: core::option::Option<AttributeValue<'life>>,
47454    ///
47455    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
47456    ///   
47457    pub role: core::option::Option<AttributeValue<'life>>,
47458    ///
47459    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
47460    ///   
47461    pub slot: core::option::Option<AttributeValue<'life>>,
47462    ///
47463    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
47464    ///     <ul>
47465    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
47466    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
47467    ///     </ul>
47468    ///   
47469    pub spellcheck: core::option::Option<AttributeValue<'life>>,
47470    ///
47471    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
47472    ///   
47473    pub style: core::option::Option<AttributeValue<'life>>,
47474    ///
47475    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
47476    ///     <ul>
47477    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
47478    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
47479    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
47480    ///     </ul>
47481    ///   
47482    pub tabindex: core::option::Option<AttributeValue<'life>>,
47483    ///
47484    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
47485    ///   
47486    pub title: core::option::Option<AttributeValue<'life>>,
47487    ///
47488    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
47489    ///     <ul>
47490    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
47491    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
47492    ///     </ul>
47493    ///   
47494    pub translate: core::option::Option<AttributeValue<'life>>,
47495    ///
47496    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
47497    ///     <ul>
47498    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
47499    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
47500    ///     </ul>
47501    ///   
47502    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
47503}
47504#[allow(deprecated)]
47505
47506impl<'life> Fieldset<'life> {
47507    /// Get the tag name of the element.
47508    /// This is the same as the name of the struct, in kebab-case.
47509    pub fn tag() -> &'static str {
47510        "fieldset"
47511    }
47512    /// Sets an attribute of the element.
47513    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
47514    /// If the `alloc` feature is disabled, this function will silently fail.
47515    ///
47516    /// # Note
47517    /// This only works when the attribute is lowercase.
47518    pub fn set_attr(
47519        &mut self,
47520        name: &'life str,
47521        value: impl core::convert::Into<AttributeValue<'life>>,
47522    ) {
47523        match name {
47524            "accesskey" => self.accesskey = Some(value.into()),
47525            "autocapitalize" => self.autocapitalize = Some(value.into()),
47526            "autofocus" => self.autofocus = Some(value.into()),
47527            "class" => self.class = Some(value.into()),
47528            "contenteditable" => self.contenteditable = Some(value.into()),
47529            "contextmenu" => self.contextmenu = Some(value.into()),
47530            "dir" => self.dir = Some(value.into()),
47531            "disabled" => self.disabled = Some(value.into()),
47532            "draggable" => self.draggable = Some(value.into()),
47533            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
47534            "exportparts" => self.exportparts = Some(value.into()),
47535            "form" => self.form = Some(value.into()),
47536            "hidden" => self.hidden = Some(value.into()),
47537            "id" => self.id = Some(value.into()),
47538            "inert" => self.inert = Some(value.into()),
47539            "inputmode" => self.inputmode = Some(value.into()),
47540            "is" => self.is = Some(value.into()),
47541            "itemid" => self.itemid = Some(value.into()),
47542            "itemprop" => self.itemprop = Some(value.into()),
47543            "itemref" => self.itemref = Some(value.into()),
47544            "itemscope" => self.itemscope = Some(value.into()),
47545            "itemtype" => self.itemtype = Some(value.into()),
47546            "lang" => self.lang = Some(value.into()),
47547            "name" => self.name = Some(value.into()),
47548            "nonce" => self.nonce = Some(value.into()),
47549            "part" => self.part = Some(value.into()),
47550            "popover" => self.popover = Some(value.into()),
47551            "role" => self.role = Some(value.into()),
47552            "slot" => self.slot = Some(value.into()),
47553            "spellcheck" => self.spellcheck = Some(value.into()),
47554            "style" => self.style = Some(value.into()),
47555            "tabindex" => self.tabindex = Some(value.into()),
47556            "title" => self.title = Some(value.into()),
47557            "translate" => self.translate = Some(value.into()),
47558            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
47559            #[cfg(feature = "alloc")]
47560            _ => {
47561                #[allow(clippy::useless_conversion)]
47562                self.extra.insert(name.into(), value.into());
47563            }
47564            #[cfg(not(feature = "alloc"))]
47565            _ => {}
47566        }
47567    }
47568}
47569/// The <strong><code>&lt;fieldset&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element is used to group several controls as well as labels (<a href="/en-US/docs/Web/HTML/Element/label"><code>&lt;label&gt;</code></a>) within a web form.
47570///
47571/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/fieldset>
47572
47573#[cfg(feature = "alloc")]
47574#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
47575pub struct FieldsetOwned {
47576    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
47577    ///   
47578    pub accesskey: core::option::Option<AttributeValueOwned>,
47579    ///
47580    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
47581    ///     <ul>
47582    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
47583    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
47584    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
47585    ///       <li><code>characters</code>, all letters should default to uppercase</li>
47586    ///     </ul>
47587    ///   
47588    pub autocapitalize: core::option::Option<AttributeValueOwned>,
47589    ///
47590    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
47591    ///   
47592    pub autofocus: core::option::Option<AttributeValueOwned>,
47593    ///
47594    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
47595    ///   
47596    pub class: core::option::Option<AttributeValueOwned>,
47597    ///
47598    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
47599    ///     <ul>
47600    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
47601    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
47602    ///     </ul>
47603    ///   
47604    pub contenteditable: core::option::Option<AttributeValueOwned>,
47605    ///
47606    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
47607    ///   
47608    pub contextmenu: core::option::Option<AttributeValueOwned>,
47609    ///
47610    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
47611    ///   
47612    #[cfg(feature = "alloc")]
47613    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
47614    ///
47615    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
47616    ///     <ul>
47617    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
47618    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
47619    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
47620    ///     </ul>
47621    ///   
47622    pub dir: core::option::Option<AttributeValueOwned>,
47623    ///
47624    ///     <p>If this Boolean attribute is set, all form controls that are descendants of the <code>&lt;fieldset&gt;</code>, are disabled, meaning they are not editable and won't be submitted along with the <a href="/en-US/docs/Web/HTML/Element/form"><code>&lt;form&gt;</code></a>. They won't receive any browsing events, like mouse clicks or focus-related events. By default browsers display such controls grayed out. Note that form elements inside the <a href="/en-US/docs/Web/HTML/Element/legend"><code>&lt;legend&gt;</code></a> element won't be disabled.</p>
47625    ///   
47626    pub disabled: core::option::Option<AttributeValueOwned>,
47627    ///
47628    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
47629    ///     <ul>
47630    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
47631    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
47632    ///     </ul>
47633    ///   
47634    pub draggable: core::option::Option<AttributeValueOwned>,
47635    ///
47636    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
47637    ///   
47638    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
47639    ///
47640    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
47641    ///   
47642    pub exportparts: core::option::Option<AttributeValueOwned>,
47643    /// /// Extra attributes of the element.
47644
47645    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
47646    #[cfg(feature = "alloc")]
47647    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
47648    ///
47649    ///     <p>This attribute takes the value of the <a href="/en-US/docs/Web/HTML/Global_attributes#id"><code>id</code></a> attribute of a <a href="/en-US/docs/Web/HTML/Element/form"><code>&lt;form&gt;</code></a> element you want the <code>&lt;fieldset&gt;</code> to be part of, even if it is not inside the form. Please note that usage of this is confusing — if you want the <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements inside the <code>&lt;fieldset&gt;</code> to be associated with the form, you need to use the <code>form</code> attribute directly on those elements. You can check which elements are associated with a form via JavaScript, using <a href="/en-US/docs/Web/API/HTMLFormElement/elements"><code>HTMLFormElement.elements</code></a>.</p>
47650    ///   
47651    pub form: core::option::Option<AttributeValueOwned>,
47652    ///
47653    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
47654    ///   
47655    pub hidden: core::option::Option<AttributeValueOwned>,
47656    ///
47657    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
47658    ///   
47659    pub id: core::option::Option<AttributeValueOwned>,
47660    ///
47661    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
47662    ///   
47663    pub inert: core::option::Option<AttributeValueOwned>,
47664    ///
47665    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
47666    ///   
47667    pub inputmode: core::option::Option<AttributeValueOwned>,
47668    ///
47669    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
47670    ///   
47671    pub is: core::option::Option<AttributeValueOwned>,
47672    ///
47673    ///     <p>The unique, global identifier of an item.</p>
47674    ///   
47675    pub itemid: core::option::Option<AttributeValueOwned>,
47676    ///
47677    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
47678    ///   
47679    pub itemprop: core::option::Option<AttributeValueOwned>,
47680    ///
47681    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
47682    ///   
47683    pub itemref: core::option::Option<AttributeValueOwned>,
47684    ///
47685    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
47686    ///   
47687    pub itemscope: core::option::Option<AttributeValueOwned>,
47688    ///
47689    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
47690    ///   
47691    pub itemtype: core::option::Option<AttributeValueOwned>,
47692    ///
47693    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
47694    ///   
47695    pub lang: core::option::Option<AttributeValueOwned>,
47696    ///
47697    ///     <p>The name associated with the group.</p>
47698    ///     <div id="sect1" class="notecard note">
47699    ///       <p><strong>Note:</strong> The caption for the fieldset is given by the first <a href="/en-US/docs/Web/HTML/Element/legend"><code>&lt;legend&gt;</code></a> element nested inside it.</p>
47700    ///     </div>
47701    ///   
47702    pub name: core::option::Option<AttributeValueOwned>,
47703    ///
47704    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
47705    ///   
47706    pub nonce: core::option::Option<AttributeValueOwned>,
47707    ///
47708    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
47709    ///   
47710    pub part: core::option::Option<AttributeValueOwned>,
47711    ///
47712    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
47713    ///   
47714    pub popover: core::option::Option<AttributeValueOwned>,
47715    ///
47716    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
47717    ///   
47718    pub role: core::option::Option<AttributeValueOwned>,
47719    ///
47720    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
47721    ///   
47722    pub slot: core::option::Option<AttributeValueOwned>,
47723    ///
47724    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
47725    ///     <ul>
47726    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
47727    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
47728    ///     </ul>
47729    ///   
47730    pub spellcheck: core::option::Option<AttributeValueOwned>,
47731    ///
47732    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
47733    ///   
47734    pub style: core::option::Option<AttributeValueOwned>,
47735    ///
47736    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
47737    ///     <ul>
47738    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
47739    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
47740    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
47741    ///     </ul>
47742    ///   
47743    pub tabindex: core::option::Option<AttributeValueOwned>,
47744    ///
47745    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
47746    ///   
47747    pub title: core::option::Option<AttributeValueOwned>,
47748    ///
47749    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
47750    ///     <ul>
47751    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
47752    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
47753    ///     </ul>
47754    ///   
47755    pub translate: core::option::Option<AttributeValueOwned>,
47756    ///
47757    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
47758    ///     <ul>
47759    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
47760    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
47761    ///     </ul>
47762    ///   
47763    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
47764}
47765#[allow(deprecated)]
47766#[cfg(feature = "alloc")]
47767impl FieldsetOwned {
47768    /// Get the tag name of the element.
47769    /// This is the same as the name of the struct, in kebab-case.
47770    pub fn tag() -> &'static str {
47771        "fieldset"
47772    }
47773    /// Sets an attribute of the element.
47774    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
47775    /// If the `alloc` feature is disabled, this function will silently fail.
47776    ///
47777    /// # Note
47778    /// This only works when the attribute is lowercase.
47779    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
47780        match name {
47781            "accesskey" => self.accesskey = Some(value.into()),
47782            "autocapitalize" => self.autocapitalize = Some(value.into()),
47783            "autofocus" => self.autofocus = Some(value.into()),
47784            "class" => self.class = Some(value.into()),
47785            "contenteditable" => self.contenteditable = Some(value.into()),
47786            "contextmenu" => self.contextmenu = Some(value.into()),
47787            "dir" => self.dir = Some(value.into()),
47788            "disabled" => self.disabled = Some(value.into()),
47789            "draggable" => self.draggable = Some(value.into()),
47790            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
47791            "exportparts" => self.exportparts = Some(value.into()),
47792            "form" => self.form = Some(value.into()),
47793            "hidden" => self.hidden = Some(value.into()),
47794            "id" => self.id = Some(value.into()),
47795            "inert" => self.inert = Some(value.into()),
47796            "inputmode" => self.inputmode = Some(value.into()),
47797            "is" => self.is = Some(value.into()),
47798            "itemid" => self.itemid = Some(value.into()),
47799            "itemprop" => self.itemprop = Some(value.into()),
47800            "itemref" => self.itemref = Some(value.into()),
47801            "itemscope" => self.itemscope = Some(value.into()),
47802            "itemtype" => self.itemtype = Some(value.into()),
47803            "lang" => self.lang = Some(value.into()),
47804            "name" => self.name = Some(value.into()),
47805            "nonce" => self.nonce = Some(value.into()),
47806            "part" => self.part = Some(value.into()),
47807            "popover" => self.popover = Some(value.into()),
47808            "role" => self.role = Some(value.into()),
47809            "slot" => self.slot = Some(value.into()),
47810            "spellcheck" => self.spellcheck = Some(value.into()),
47811            "style" => self.style = Some(value.into()),
47812            "tabindex" => self.tabindex = Some(value.into()),
47813            "title" => self.title = Some(value.into()),
47814            "translate" => self.translate = Some(value.into()),
47815            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
47816            #[cfg(feature = "alloc")]
47817            _ => {
47818                #[allow(clippy::useless_conversion)]
47819                self.extra.insert(name.into(), value.into());
47820            }
47821            #[cfg(not(feature = "alloc"))]
47822            _ => {}
47823        }
47824    }
47825}
47826/// The <strong><code>&lt;form&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents a document section containing interactive controls for submitting information.
47827///
47828/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form>
47829
47830#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
47831pub struct Form<'life> {
47832    ///     <p>Comma-separated <a href="/en-US/docs/Web/SVG/Content_type">content types</a> the server accepts.</p>
47833    ///     <div id="sect1" class="notecard note">
47834    ///       <p><strong>Note:</strong> <strong>This attribute has been deprecated and should not be used.</strong> Instead, use the <a href="/en-US/docs/Web/HTML/Element/input#accept"><code>accept</code></a> attribute on <code>&lt;input type=file&gt;</code> elements.</p>
47835    ///     </div>
47836    ///   
47837    pub accept: core::option::Option<AttributeValue<'life>>,
47838    ///
47839    ///     <p>
47840    ///       Space-separated <a href="/en-US/docs/Glossary/Character_encoding">character encodings</a> the server accepts. The browser uses them in the order in which they are listed. The default value means <a href="/en-US/docs/Web/HTTP/Headers/Content-Encoding">the same encoding as the page</a>.
47841    ///       (In previous versions of HTML, character encodings could also be delimited by commas.)
47842    ///     </p>
47843    ///   
47844    pub accept_charset: core::option::Option<AttributeValue<'life>>,
47845    ///
47846    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
47847    ///   
47848    pub accesskey: core::option::Option<AttributeValue<'life>>,
47849    ///
47850    ///     <p>A nonstandard attribute used by iOS Safari that controls how textual form elements should be automatically capitalized. <code>autocapitalize</code> attributes on a form elements override it on <code>&lt;form&gt;</code>. Possible values:</p>
47851    ///     <ul>
47852    ///       <li><code>none</code>: No automatic capitalization.</li>
47853    ///       <li><code>sentences</code> (default): Capitalize the first letter of each sentence.</li>
47854    ///       <li><code>words</code>: Capitalize the first letter of each word.</li>
47855    ///       <li><code>characters</code>: Capitalize all characters — that is, uppercase.</li>
47856    ///     </ul>
47857    ///   
47858    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
47859    ///
47860    ///     <p>Indicates whether input elements can by default have their values automatically completed by the browser. <code>autocomplete</code> attributes on form elements override it on <code>&lt;form&gt;</code>. Possible values:</p>
47861    ///     <ul>
47862    ///       <li><code>off</code>: The browser may not automatically complete entries. (Browsers tend to ignore this for suspected login forms; see <a href="/en-US/docs/Web/Security/Securing_your_site/Turning_off_form_autocompletion#the_autocomplete_attribute_and_login_fields">The autocomplete attribute and login fields</a>.)</li>
47863    ///       <li><code>on</code>: The browser may automatically complete entries.</li>
47864    ///     </ul>
47865    ///   
47866    pub autocomplete: core::option::Option<AttributeValue<'life>>,
47867    ///
47868    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
47869    ///   
47870    pub autofocus: core::option::Option<AttributeValue<'life>>,
47871    ///
47872    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
47873    ///   
47874    pub class: core::option::Option<AttributeValue<'life>>,
47875    ///
47876    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
47877    ///     <ul>
47878    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
47879    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
47880    ///     </ul>
47881    ///   
47882    pub contenteditable: core::option::Option<AttributeValue<'life>>,
47883    ///
47884    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
47885    ///   
47886    pub contextmenu: core::option::Option<AttributeValue<'life>>,
47887    ///
47888    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
47889    ///   
47890    #[cfg(feature = "alloc")]
47891    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
47892    ///
47893    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
47894    ///     <ul>
47895    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
47896    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
47897    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
47898    ///     </ul>
47899    ///   
47900    pub dir: core::option::Option<AttributeValue<'life>>,
47901    ///
47902    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
47903    ///     <ul>
47904    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
47905    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
47906    ///     </ul>
47907    ///   
47908    pub draggable: core::option::Option<AttributeValue<'life>>,
47909    ///
47910    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
47911    ///   
47912    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
47913    ///
47914    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
47915    ///   
47916    pub exportparts: core::option::Option<AttributeValue<'life>>,
47917    /// /// Extra attributes of the element.
47918
47919    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
47920    #[cfg(feature = "alloc")]
47921    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
47922    ///
47923    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
47924    ///   
47925    pub hidden: core::option::Option<AttributeValue<'life>>,
47926    ///
47927    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
47928    ///   
47929    pub id: core::option::Option<AttributeValue<'life>>,
47930    ///
47931    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
47932    ///   
47933    pub inert: core::option::Option<AttributeValue<'life>>,
47934    ///
47935    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
47936    ///   
47937    pub inputmode: core::option::Option<AttributeValue<'life>>,
47938    ///
47939    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
47940    ///   
47941    pub is: core::option::Option<AttributeValue<'life>>,
47942    ///
47943    ///     <p>The unique, global identifier of an item.</p>
47944    ///   
47945    pub itemid: core::option::Option<AttributeValue<'life>>,
47946    ///
47947    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
47948    ///   
47949    pub itemprop: core::option::Option<AttributeValue<'life>>,
47950    ///
47951    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
47952    ///   
47953    pub itemref: core::option::Option<AttributeValue<'life>>,
47954    ///
47955    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
47956    ///   
47957    pub itemscope: core::option::Option<AttributeValue<'life>>,
47958    ///
47959    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
47960    ///   
47961    pub itemtype: core::option::Option<AttributeValue<'life>>,
47962    ///
47963    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
47964    ///   
47965    pub lang: core::option::Option<AttributeValue<'life>>,
47966    ///
47967    ///     <p>The name of the form. The value must not be the empty string, and must be unique among the <code>form</code> elements in the forms collection that it is in, if any.</p>
47968    ///   
47969    pub name: core::option::Option<AttributeValue<'life>>,
47970    ///
47971    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
47972    ///   
47973    pub nonce: core::option::Option<AttributeValue<'life>>,
47974    ///
47975    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
47976    ///   
47977    pub part: core::option::Option<AttributeValue<'life>>,
47978    ///
47979    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
47980    ///   
47981    pub popover: core::option::Option<AttributeValue<'life>>,
47982    ///
47983    ///     <p>Controls the annotations and what kinds of links the form creates. Annotations include <a href="/en-US/docs/Web/HTML/Attributes/rel#external"><code>external</code></a>, <a href="/en-US/docs/Web/HTML/Attributes/rel#nofollow"><code>nofollow</code></a>, <a href="/en-US/docs/Web/HTML/Attributes/rel#opener"><code>opener</code></a>, <a href="/en-US/docs/Web/HTML/Attributes/rel#noopener"><code>noopener</code></a>, and <a href="/en-US/docs/Web/HTML/Attributes/rel#noreferrer"><code>noreferrer</code></a>. Link types include <a href="/en-US/docs/Web/HTML/Attributes/rel#help"><code>help</code></a>, <a href="/en-US/docs/Web/HTML/Attributes/rel#prev"><code>prev</code></a>, <a href="/en-US/docs/Web/HTML/Attributes/rel#next"><code>next</code></a>, <a href="/en-US/docs/Web/HTML/Attributes/rel#search"><code>search</code></a>, and <a href="/en-US/docs/Web/HTML/Attributes/rel#license"><code>license</code></a>. The <a href="/en-US/docs/Web/HTML/Attributes/rel"><code>rel</code></a> value is a space-separated list of these enumerated values.</p>
47984    ///   
47985    pub rel: core::option::Option<AttributeValue<'life>>,
47986    ///
47987    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
47988    ///   
47989    pub role: core::option::Option<AttributeValue<'life>>,
47990    ///
47991    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
47992    ///   
47993    pub slot: core::option::Option<AttributeValue<'life>>,
47994    ///
47995    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
47996    ///     <ul>
47997    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
47998    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
47999    ///     </ul>
48000    ///   
48001    pub spellcheck: core::option::Option<AttributeValue<'life>>,
48002    ///
48003    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
48004    ///   
48005    pub style: core::option::Option<AttributeValue<'life>>,
48006    ///
48007    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
48008    ///     <ul>
48009    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
48010    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
48011    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
48012    ///     </ul>
48013    ///   
48014    pub tabindex: core::option::Option<AttributeValue<'life>>,
48015    ///
48016    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
48017    ///   
48018    pub title: core::option::Option<AttributeValue<'life>>,
48019    ///
48020    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
48021    ///     <ul>
48022    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
48023    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
48024    ///     </ul>
48025    ///   
48026    pub translate: core::option::Option<AttributeValue<'life>>,
48027    ///
48028    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
48029    ///     <ul>
48030    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
48031    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
48032    ///     </ul>
48033    ///   
48034    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
48035}
48036#[allow(deprecated)]
48037
48038impl<'life> Form<'life> {
48039    /// Get the tag name of the element.
48040    /// This is the same as the name of the struct, in kebab-case.
48041    pub fn tag() -> &'static str {
48042        "form"
48043    }
48044    /// Sets an attribute of the element.
48045    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
48046    /// If the `alloc` feature is disabled, this function will silently fail.
48047    ///
48048    /// # Note
48049    /// This only works when the attribute is lowercase.
48050    pub fn set_attr(
48051        &mut self,
48052        name: &'life str,
48053        value: impl core::convert::Into<AttributeValue<'life>>,
48054    ) {
48055        match name {
48056            "accept" => self.accept = Some(value.into()),
48057            "accept_charset" => self.accept_charset = Some(value.into()),
48058            "accesskey" => self.accesskey = Some(value.into()),
48059            "autocapitalize" => self.autocapitalize = Some(value.into()),
48060            "autocomplete" => self.autocomplete = Some(value.into()),
48061            "autofocus" => self.autofocus = Some(value.into()),
48062            "class" => self.class = Some(value.into()),
48063            "contenteditable" => self.contenteditable = Some(value.into()),
48064            "contextmenu" => self.contextmenu = Some(value.into()),
48065            "dir" => self.dir = Some(value.into()),
48066            "draggable" => self.draggable = Some(value.into()),
48067            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
48068            "exportparts" => self.exportparts = Some(value.into()),
48069            "hidden" => self.hidden = Some(value.into()),
48070            "id" => self.id = Some(value.into()),
48071            "inert" => self.inert = Some(value.into()),
48072            "inputmode" => self.inputmode = Some(value.into()),
48073            "is" => self.is = Some(value.into()),
48074            "itemid" => self.itemid = Some(value.into()),
48075            "itemprop" => self.itemprop = Some(value.into()),
48076            "itemref" => self.itemref = Some(value.into()),
48077            "itemscope" => self.itemscope = Some(value.into()),
48078            "itemtype" => self.itemtype = Some(value.into()),
48079            "lang" => self.lang = Some(value.into()),
48080            "name" => self.name = Some(value.into()),
48081            "nonce" => self.nonce = Some(value.into()),
48082            "part" => self.part = Some(value.into()),
48083            "popover" => self.popover = Some(value.into()),
48084            "rel" => self.rel = Some(value.into()),
48085            "role" => self.role = Some(value.into()),
48086            "slot" => self.slot = Some(value.into()),
48087            "spellcheck" => self.spellcheck = Some(value.into()),
48088            "style" => self.style = Some(value.into()),
48089            "tabindex" => self.tabindex = Some(value.into()),
48090            "title" => self.title = Some(value.into()),
48091            "translate" => self.translate = Some(value.into()),
48092            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
48093            #[cfg(feature = "alloc")]
48094            _ => {
48095                #[allow(clippy::useless_conversion)]
48096                self.extra.insert(name.into(), value.into());
48097            }
48098            #[cfg(not(feature = "alloc"))]
48099            _ => {}
48100        }
48101    }
48102}
48103/// The <strong><code>&lt;form&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents a document section containing interactive controls for submitting information.
48104///
48105/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form>
48106
48107#[cfg(feature = "alloc")]
48108#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
48109pub struct FormOwned {
48110    ///     <p>Comma-separated <a href="/en-US/docs/Web/SVG/Content_type">content types</a> the server accepts.</p>
48111    ///     <div id="sect1" class="notecard note">
48112    ///       <p><strong>Note:</strong> <strong>This attribute has been deprecated and should not be used.</strong> Instead, use the <a href="/en-US/docs/Web/HTML/Element/input#accept"><code>accept</code></a> attribute on <code>&lt;input type=file&gt;</code> elements.</p>
48113    ///     </div>
48114    ///   
48115    pub accept: core::option::Option<AttributeValueOwned>,
48116    ///
48117    ///     <p>
48118    ///       Space-separated <a href="/en-US/docs/Glossary/Character_encoding">character encodings</a> the server accepts. The browser uses them in the order in which they are listed. The default value means <a href="/en-US/docs/Web/HTTP/Headers/Content-Encoding">the same encoding as the page</a>.
48119    ///       (In previous versions of HTML, character encodings could also be delimited by commas.)
48120    ///     </p>
48121    ///   
48122    pub accept_charset: core::option::Option<AttributeValueOwned>,
48123    ///
48124    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
48125    ///   
48126    pub accesskey: core::option::Option<AttributeValueOwned>,
48127    ///
48128    ///     <p>A nonstandard attribute used by iOS Safari that controls how textual form elements should be automatically capitalized. <code>autocapitalize</code> attributes on a form elements override it on <code>&lt;form&gt;</code>. Possible values:</p>
48129    ///     <ul>
48130    ///       <li><code>none</code>: No automatic capitalization.</li>
48131    ///       <li><code>sentences</code> (default): Capitalize the first letter of each sentence.</li>
48132    ///       <li><code>words</code>: Capitalize the first letter of each word.</li>
48133    ///       <li><code>characters</code>: Capitalize all characters — that is, uppercase.</li>
48134    ///     </ul>
48135    ///   
48136    pub autocapitalize: core::option::Option<AttributeValueOwned>,
48137    ///
48138    ///     <p>Indicates whether input elements can by default have their values automatically completed by the browser. <code>autocomplete</code> attributes on form elements override it on <code>&lt;form&gt;</code>. Possible values:</p>
48139    ///     <ul>
48140    ///       <li><code>off</code>: The browser may not automatically complete entries. (Browsers tend to ignore this for suspected login forms; see <a href="/en-US/docs/Web/Security/Securing_your_site/Turning_off_form_autocompletion#the_autocomplete_attribute_and_login_fields">The autocomplete attribute and login fields</a>.)</li>
48141    ///       <li><code>on</code>: The browser may automatically complete entries.</li>
48142    ///     </ul>
48143    ///   
48144    pub autocomplete: core::option::Option<AttributeValueOwned>,
48145    ///
48146    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
48147    ///   
48148    pub autofocus: core::option::Option<AttributeValueOwned>,
48149    ///
48150    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
48151    ///   
48152    pub class: core::option::Option<AttributeValueOwned>,
48153    ///
48154    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
48155    ///     <ul>
48156    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
48157    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
48158    ///     </ul>
48159    ///   
48160    pub contenteditable: core::option::Option<AttributeValueOwned>,
48161    ///
48162    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
48163    ///   
48164    pub contextmenu: core::option::Option<AttributeValueOwned>,
48165    ///
48166    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
48167    ///   
48168    #[cfg(feature = "alloc")]
48169    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
48170    ///
48171    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
48172    ///     <ul>
48173    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
48174    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
48175    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
48176    ///     </ul>
48177    ///   
48178    pub dir: core::option::Option<AttributeValueOwned>,
48179    ///
48180    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
48181    ///     <ul>
48182    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
48183    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
48184    ///     </ul>
48185    ///   
48186    pub draggable: core::option::Option<AttributeValueOwned>,
48187    ///
48188    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
48189    ///   
48190    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
48191    ///
48192    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
48193    ///   
48194    pub exportparts: core::option::Option<AttributeValueOwned>,
48195    /// /// Extra attributes of the element.
48196
48197    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
48198    #[cfg(feature = "alloc")]
48199    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
48200    ///
48201    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
48202    ///   
48203    pub hidden: core::option::Option<AttributeValueOwned>,
48204    ///
48205    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
48206    ///   
48207    pub id: core::option::Option<AttributeValueOwned>,
48208    ///
48209    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
48210    ///   
48211    pub inert: core::option::Option<AttributeValueOwned>,
48212    ///
48213    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
48214    ///   
48215    pub inputmode: core::option::Option<AttributeValueOwned>,
48216    ///
48217    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
48218    ///   
48219    pub is: core::option::Option<AttributeValueOwned>,
48220    ///
48221    ///     <p>The unique, global identifier of an item.</p>
48222    ///   
48223    pub itemid: core::option::Option<AttributeValueOwned>,
48224    ///
48225    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
48226    ///   
48227    pub itemprop: core::option::Option<AttributeValueOwned>,
48228    ///
48229    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
48230    ///   
48231    pub itemref: core::option::Option<AttributeValueOwned>,
48232    ///
48233    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
48234    ///   
48235    pub itemscope: core::option::Option<AttributeValueOwned>,
48236    ///
48237    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
48238    ///   
48239    pub itemtype: core::option::Option<AttributeValueOwned>,
48240    ///
48241    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
48242    ///   
48243    pub lang: core::option::Option<AttributeValueOwned>,
48244    ///
48245    ///     <p>The name of the form. The value must not be the empty string, and must be unique among the <code>form</code> elements in the forms collection that it is in, if any.</p>
48246    ///   
48247    pub name: core::option::Option<AttributeValueOwned>,
48248    ///
48249    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
48250    ///   
48251    pub nonce: core::option::Option<AttributeValueOwned>,
48252    ///
48253    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
48254    ///   
48255    pub part: core::option::Option<AttributeValueOwned>,
48256    ///
48257    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
48258    ///   
48259    pub popover: core::option::Option<AttributeValueOwned>,
48260    ///
48261    ///     <p>Controls the annotations and what kinds of links the form creates. Annotations include <a href="/en-US/docs/Web/HTML/Attributes/rel#external"><code>external</code></a>, <a href="/en-US/docs/Web/HTML/Attributes/rel#nofollow"><code>nofollow</code></a>, <a href="/en-US/docs/Web/HTML/Attributes/rel#opener"><code>opener</code></a>, <a href="/en-US/docs/Web/HTML/Attributes/rel#noopener"><code>noopener</code></a>, and <a href="/en-US/docs/Web/HTML/Attributes/rel#noreferrer"><code>noreferrer</code></a>. Link types include <a href="/en-US/docs/Web/HTML/Attributes/rel#help"><code>help</code></a>, <a href="/en-US/docs/Web/HTML/Attributes/rel#prev"><code>prev</code></a>, <a href="/en-US/docs/Web/HTML/Attributes/rel#next"><code>next</code></a>, <a href="/en-US/docs/Web/HTML/Attributes/rel#search"><code>search</code></a>, and <a href="/en-US/docs/Web/HTML/Attributes/rel#license"><code>license</code></a>. The <a href="/en-US/docs/Web/HTML/Attributes/rel"><code>rel</code></a> value is a space-separated list of these enumerated values.</p>
48262    ///   
48263    pub rel: core::option::Option<AttributeValueOwned>,
48264    ///
48265    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
48266    ///   
48267    pub role: core::option::Option<AttributeValueOwned>,
48268    ///
48269    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
48270    ///   
48271    pub slot: core::option::Option<AttributeValueOwned>,
48272    ///
48273    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
48274    ///     <ul>
48275    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
48276    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
48277    ///     </ul>
48278    ///   
48279    pub spellcheck: core::option::Option<AttributeValueOwned>,
48280    ///
48281    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
48282    ///   
48283    pub style: core::option::Option<AttributeValueOwned>,
48284    ///
48285    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
48286    ///     <ul>
48287    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
48288    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
48289    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
48290    ///     </ul>
48291    ///   
48292    pub tabindex: core::option::Option<AttributeValueOwned>,
48293    ///
48294    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
48295    ///   
48296    pub title: core::option::Option<AttributeValueOwned>,
48297    ///
48298    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
48299    ///     <ul>
48300    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
48301    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
48302    ///     </ul>
48303    ///   
48304    pub translate: core::option::Option<AttributeValueOwned>,
48305    ///
48306    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
48307    ///     <ul>
48308    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
48309    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
48310    ///     </ul>
48311    ///   
48312    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
48313}
48314#[allow(deprecated)]
48315#[cfg(feature = "alloc")]
48316impl FormOwned {
48317    /// Get the tag name of the element.
48318    /// This is the same as the name of the struct, in kebab-case.
48319    pub fn tag() -> &'static str {
48320        "form"
48321    }
48322    /// Sets an attribute of the element.
48323    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
48324    /// If the `alloc` feature is disabled, this function will silently fail.
48325    ///
48326    /// # Note
48327    /// This only works when the attribute is lowercase.
48328    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
48329        match name {
48330            "accept" => self.accept = Some(value.into()),
48331            "accept_charset" => self.accept_charset = Some(value.into()),
48332            "accesskey" => self.accesskey = Some(value.into()),
48333            "autocapitalize" => self.autocapitalize = Some(value.into()),
48334            "autocomplete" => self.autocomplete = Some(value.into()),
48335            "autofocus" => self.autofocus = Some(value.into()),
48336            "class" => self.class = Some(value.into()),
48337            "contenteditable" => self.contenteditable = Some(value.into()),
48338            "contextmenu" => self.contextmenu = Some(value.into()),
48339            "dir" => self.dir = Some(value.into()),
48340            "draggable" => self.draggable = Some(value.into()),
48341            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
48342            "exportparts" => self.exportparts = Some(value.into()),
48343            "hidden" => self.hidden = Some(value.into()),
48344            "id" => self.id = Some(value.into()),
48345            "inert" => self.inert = Some(value.into()),
48346            "inputmode" => self.inputmode = Some(value.into()),
48347            "is" => self.is = Some(value.into()),
48348            "itemid" => self.itemid = Some(value.into()),
48349            "itemprop" => self.itemprop = Some(value.into()),
48350            "itemref" => self.itemref = Some(value.into()),
48351            "itemscope" => self.itemscope = Some(value.into()),
48352            "itemtype" => self.itemtype = Some(value.into()),
48353            "lang" => self.lang = Some(value.into()),
48354            "name" => self.name = Some(value.into()),
48355            "nonce" => self.nonce = Some(value.into()),
48356            "part" => self.part = Some(value.into()),
48357            "popover" => self.popover = Some(value.into()),
48358            "rel" => self.rel = Some(value.into()),
48359            "role" => self.role = Some(value.into()),
48360            "slot" => self.slot = Some(value.into()),
48361            "spellcheck" => self.spellcheck = Some(value.into()),
48362            "style" => self.style = Some(value.into()),
48363            "tabindex" => self.tabindex = Some(value.into()),
48364            "title" => self.title = Some(value.into()),
48365            "translate" => self.translate = Some(value.into()),
48366            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
48367            #[cfg(feature = "alloc")]
48368            _ => {
48369                #[allow(clippy::useless_conversion)]
48370                self.extra.insert(name.into(), value.into());
48371            }
48372            #[cfg(not(feature = "alloc"))]
48373            _ => {}
48374        }
48375    }
48376}
48377/// The <strong><code>&lt;input&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element is used to create interactive controls for web-based forms in order to accept data from the user; a wide variety of types of input data and control widgets are available, depending on the device and <a href="/en-US/docs/Glossary/User_agent">user agent</a>. The <code>&lt;input&gt;</code> element is one of the most powerful and complex in all of HTML due to the sheer number of combinations of input types and attributes.
48378///
48379/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input>
48380
48381#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
48382pub struct Input<'life> {
48383    ///     <p>Valid for the <code>file</code> input type only, the <code>accept</code> attribute defines which file types are selectable in a <code>file</code> upload control. See the <a href="/en-US/docs/Web/HTML/Element/input/file">file</a> input type.</p>
48384    ///   
48385    pub accept: core::option::Option<AttributeValue<'life>>,
48386    ///
48387    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
48388    ///   
48389    pub accesskey: core::option::Option<AttributeValue<'life>>,
48390    ///
48391    ///     <p>Valid for the <code>image</code> button only, the <code>alt</code> attribute provides alternative text for the image, displaying the value of the attribute if the image <a href="#src"><code>src</code></a> is missing or otherwise fails to load. See the <a href="/en-US/docs/Web/HTML/Element/input/image">image</a> input type.</p>
48392    ///   
48393    pub alt: core::option::Option<AttributeValue<'life>>,
48394    ///
48395    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
48396    ///     <ul>
48397    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
48398    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
48399    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
48400    ///       <li><code>characters</code>, all letters should default to uppercase</li>
48401    ///     </ul>
48402    ///   
48403    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
48404    ///
48405    ///     <p>(<strong>Not</strong> a Boolean attribute!) The <a href="/en-US/docs/Web/HTML/Attributes/autocomplete"><code>autocomplete</code></a> 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 <code>email</code> addresses in an email input field. See <a href="/en-US/docs/Web/HTML/Attributes/autocomplete#values"><code>autocomplete</code></a> for permitted values.</p>
48406    ///     <p>The <code>autocomplete</code> attribute is valid on <code>hidden</code>, <code>text</code>, <code>search</code>, <code>url</code>, <code>tel</code>, <code>email</code>, <code>date</code>, <code>month</code>, <code>week</code>, <code>time</code>, <code>datetime-local</code>, <code>number</code>, <code>range</code>, <code>color</code>, and <code>password</code>. This attribute has no effect on input types that do not return numeric or text data, being valid for all input types except <code>checkbox</code>, <code>radio</code>, <code>file</code>, or any of the button types.</p>
48407    ///     <p>See the <a href="/en-US/docs/Web/HTML/Attributes/autocomplete"><code>autocomplete</code> attribute</a> for additional information, including information on password security and how <code>autocomplete</code> is slightly different for <code>hidden</code> than for other input types.</p>
48408    ///   
48409    pub autocomplete: core::option::Option<AttributeValue<'life>>,
48410    ///
48411    ///     <p>A Boolean attribute which, if present, indicates that the input should automatically have focus when the page has finished loading (or when the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> containing the element has been displayed).</p>
48412    ///     <div class="notecard note" id="sect1">
48413    ///       <p><strong>Note:</strong> An element with the <code>autofocus</code> attribute may gain focus before the <a title="DOMContentLoaded" href="/en-US/docs/Web/API/Window/DOMContentLoaded_event"><code>DOMContentLoaded</code></a> event is fired.</p>
48414    ///     </div>
48415    ///     <p>No more than one element in the document may have the <code>autofocus</code> attribute. If put on more than one element, the first one with the attribute receives focus.</p>
48416    ///     <p>The <code>autofocus</code> attribute cannot be used on inputs of type <code>hidden</code>, since hidden inputs cannot be focused.</p>
48417    ///     <div id="sect2" class="notecard warning">
48418    ///       <p><strong>Warning:</strong> Automatically focusing a form control can confuse visually-impaired people using screen-reading technology and people with cognitive impairments. When <code>autofocus</code> is assigned, screen-readers "teleport" their user to the form control without warning them beforehand.</p>
48419    ///     </div>
48420    ///     <p>Use careful consideration for accessibility when applying the <code>autofocus</code> attribute. Automatically focusing on a control can cause the page to scroll on load. The focus can also cause dynamic keyboards to display on some touch devices. While a screen reader will announce the label of the form control receiving focus, the screen reader will not announce anything before the label, and the sighted user on a small device will equally miss the context created by the preceding content.</p>
48421    ///   
48422    pub autofocus: core::option::Option<AttributeValue<'life>>,
48423    ///
48424    ///     <p>Introduced in the HTML Media Capture specification and valid for the <code>file</code> input type only, the <code>capture</code> attribute defines which media—microphone, video, or camera—should be used to capture a new file for upload with <code>file</code> upload control in supporting scenarios. See the <a href="/en-US/docs/Web/HTML/Element/input/file">file</a> input type.</p>
48425    ///   
48426    pub capture: core::option::Option<AttributeValue<'life>>,
48427    ///
48428    ///     <p>Valid for both <code>radio</code> and <code>checkbox</code> types, <code>checked</code> is a Boolean attribute. If present on a <code>radio</code> type, it indicates that the radio button is the currently selected one in the group of same-named radio buttons. If present on a <code>checkbox</code> type, it indicates that the checkbox is checked by default (when the page loads). It does <em>not</em> indicate whether this checkbox is currently checked: if the checkbox's state is changed, this content attribute does not reflect the change. (Only the <a href="/en-US/docs/Web/API/HTMLInputElement"><code>HTMLInputElement</code>'s <code>checked</code> IDL attribute</a> is updated.)</p>
48429    ///     <div class="notecard note" id="sect3">
48430    ///       <p><strong>Note:</strong> Unlike other input controls, a checkboxes and radio buttons value are only included in the submitted data if they are currently <code>checked</code>. If they are, the name and the value(s) of the checked controls are submitted.</p>
48431    ///       <p>For example, if a checkbox whose <code>name</code> is <code>fruit</code> has a <code>value</code> of <code>cherry</code>, and the checkbox is checked, the form data submitted will include <code>fruit=cherry</code>. If the checkbox isn't active, it isn't listed in the form data at all. The default <code>value</code> for checkboxes and radio buttons is <code>on</code>.</p>
48432    ///     </div>
48433    ///   
48434    pub checked: core::option::Option<AttributeValue<'life>>,
48435    ///
48436    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
48437    ///   
48438    pub class: core::option::Option<AttributeValue<'life>>,
48439    ///
48440    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
48441    ///     <ul>
48442    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
48443    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
48444    ///     </ul>
48445    ///   
48446    pub contenteditable: core::option::Option<AttributeValue<'life>>,
48447    ///
48448    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
48449    ///   
48450    pub contextmenu: core::option::Option<AttributeValue<'life>>,
48451    ///
48452    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
48453    ///   
48454    #[cfg(feature = "alloc")]
48455    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
48456    ///
48457    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
48458    ///     <ul>
48459    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
48460    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
48461    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
48462    ///     </ul>
48463    ///   
48464    pub dir: core::option::Option<AttributeValue<'life>>,
48465    ///
48466    ///     <p>Valid for <code>text</code> and <code>search</code> input types only, the <code>dirname</code> attribute enables the submission of the directionality of the element. When included, the form control will submit with two name/value pairs: the first being the <a href="#name"><code>name</code></a> and <a href="#value"><code>value</code></a>, the second being the value of the <code>dirname</code> as the name with the value of <code>ltr</code> or <code>rtl</code> being set by the browser.</p>
48467    ///     <div class="code-example"><pre class="brush: html notranslate"><code><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>form</span> <span class="token attr-name">action</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>page.html<span class="token punctuation">"</span></span> <span class="token attr-name">method</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>post<span class="token punctuation">"</span></span><span class="token punctuation">&gt;</span></span>
48468    ///   <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>label</span>
48469    ///     <span class="token punctuation">&gt;</span></span>Fruit:
48470    ///     <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>input</span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>text<span class="token punctuation">"</span></span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>fruit<span class="token punctuation">"</span></span> <span class="token attr-name">dirname</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>fruit.dir<span class="token punctuation">"</span></span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>cherry<span class="token punctuation">"</span></span> <span class="token punctuation">/&gt;</span></span>
48471    ///   <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>label</span><span class="token punctuation">&gt;</span></span>
48472    ///   <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>input</span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>submit<span class="token punctuation">"</span></span> <span class="token punctuation">/&gt;</span></span>
48473    /// <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>form</span><span class="token punctuation">&gt;</span></span>
48474    /// <span class="token comment">&lt;!-- page.html?fruit=cherry&amp;fruit.dir=ltr --&gt;</span>
48475    /// </code></pre></div>
48476    ///     <p>When the form above is submitted, the input cause both the <code>name</code> / <code>value</code> pair of <code>fruit=cherry</code> and the <code>dirname</code> / direction pair of <code>fruit.dir=ltr</code> to be sent.</p>
48477    ///   
48478    pub dirname: core::option::Option<AttributeValue<'life>>,
48479    ///
48480    ///     <p>A Boolean attribute which, if present, indicates that the user should not be able to interact with the input. Disabled inputs are typically rendered with a dimmer color or using some other form of indication that the field is not available for use.</p>
48481    ///     <p>Specifically, disabled inputs do not receive the <a href="/en-US/docs/Web/API/Element/click_event" title="click"><code>click</code></a> event, and disabled inputs are not submitted with the form.</p>
48482    ///     <div class="notecard note" id="sect4">
48483    ///       <p><strong>Note:</strong> Although not required by the specification, Firefox will by default <a href="https://stackoverflow.com/questions/5985839/bug-with-firefox-disabled-attribute-of-input-not-resetting-when-refreshing" class="external" target="_blank">persist the dynamic disabled state</a> of an <code>&lt;input&gt;</code> across page loads. Use the <a href="#autocomplete"><code>autocomplete</code></a> attribute to control this feature.</p>
48484    ///     </div>
48485    ///   
48486    pub disabled: core::option::Option<AttributeValue<'life>>,
48487    ///
48488    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
48489    ///     <ul>
48490    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
48491    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
48492    ///     </ul>
48493    ///   
48494    pub draggable: core::option::Option<AttributeValue<'life>>,
48495    ///
48496    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
48497    ///   
48498    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
48499    ///
48500    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
48501    ///   
48502    pub exportparts: core::option::Option<AttributeValue<'life>>,
48503    /// /// Extra attributes of the element.
48504
48505    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
48506    #[cfg(feature = "alloc")]
48507    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
48508    ///
48509    ///     <p>A string specifying the <a href="/en-US/docs/Web/HTML/Element/form"><code>&lt;form&gt;</code></a> element with which the input is associated (that is, its <strong>form owner</strong>). This string's value, if present, must match the <a href="#id"><code>id</code></a> of a <code>&lt;form&gt;</code> element in the same document. If this attribute isn't specified, the <code>&lt;input&gt;</code> element is associated with the nearest containing form, if any.</p>
48510    ///     <p>The <code>form</code> attribute lets you place an input anywhere in the document but have it included with a form elsewhere in the document.</p>
48511    ///     <div class="notecard note" id="sect5">
48512    ///       <p><strong>Note:</strong> An input can only be associated with one form.</p>
48513    ///     </div>
48514    ///   
48515    pub form: core::option::Option<AttributeValue<'life>>,
48516    ///
48517    ///     <p>Valid for the <code>image</code> and <code>submit</code> input types only. See the <a href="/en-US/docs/Web/HTML/Element/input/submit">submit</a> input type for more information.</p>
48518    ///   
48519    pub formaction: core::option::Option<AttributeValue<'life>>,
48520    ///
48521    ///     <p>Valid for the <code>image</code> and <code>submit</code> input types only. See the <a href="/en-US/docs/Web/HTML/Element/input/submit">submit</a> input type for more information.</p>
48522    ///   
48523    pub formenctype: core::option::Option<AttributeValue<'life>>,
48524    ///
48525    ///     <p>Valid for the <code>image</code> and <code>submit</code> input types only. See the <a href="/en-US/docs/Web/HTML/Element/input/submit">submit</a> input type for more information.</p>
48526    ///   
48527    pub formmethod: core::option::Option<AttributeValue<'life>>,
48528    ///
48529    ///     <p>Valid for the <code>image</code> and <code>submit</code> input types only. See the <a href="/en-US/docs/Web/HTML/Element/input/submit">submit</a> input type for more information.</p>
48530    ///   
48531    pub formnovalidate: core::option::Option<AttributeValue<'life>>,
48532    ///
48533    ///     <p>Valid for the <code>image</code> and <code>submit</code> input types only. See the <a href="/en-US/docs/Web/HTML/Element/input/submit">submit</a> input type for more information.</p>
48534    ///   
48535    pub formtarget: core::option::Option<AttributeValue<'life>>,
48536    ///
48537    ///     <p>Valid for the <code>image</code> input button only, the <code>height</code> is the height of the image file to display to represent the graphical submit button. See the <a href="/en-US/docs/Web/HTML/Element/input/image">image</a> input type.</p>
48538    ///   
48539    pub height: core::option::Option<AttributeValue<'life>>,
48540    ///
48541    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
48542    ///   
48543    pub hidden: core::option::Option<AttributeValue<'life>>,
48544    ///
48545    ///     <p>Global attribute valid for all elements, including all the input types, it defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking. The value is used as the value of the <a href="/en-US/docs/Web/HTML/Element/label"><code>&lt;label&gt;</code></a>'s <code>for</code> attribute to link the label with the form control. See <a href="/en-US/docs/Web/HTML/Element/label"><code>&lt;label&gt;</code></a>.</p>
48546    ///   
48547    pub id: core::option::Option<AttributeValue<'life>>,
48548    ///
48549    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
48550    ///   
48551    pub inert: core::option::Option<AttributeValue<'life>>,
48552    ///
48553    ///     <p>Global value valid for all elements, it provides a hint to browsers as to the type of virtual keyboard configuration to use when editing this element or its contents. Values include <code>none</code>, <code>text</code>, <code>tel</code>, <code>url</code>, <code>email</code>, <code>numeric</code>, <code>decimal</code>, and <code>search</code>.</p>
48554    ///   
48555    pub inputmode: core::option::Option<AttributeValue<'life>>,
48556    ///
48557    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
48558    ///   
48559    pub is: core::option::Option<AttributeValue<'life>>,
48560    ///
48561    ///     <p>The unique, global identifier of an item.</p>
48562    ///   
48563    pub itemid: core::option::Option<AttributeValue<'life>>,
48564    ///
48565    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
48566    ///   
48567    pub itemprop: core::option::Option<AttributeValue<'life>>,
48568    ///
48569    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
48570    ///   
48571    pub itemref: core::option::Option<AttributeValue<'life>>,
48572    ///
48573    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
48574    ///   
48575    pub itemscope: core::option::Option<AttributeValue<'life>>,
48576    ///
48577    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
48578    ///   
48579    pub itemtype: core::option::Option<AttributeValue<'life>>,
48580    ///
48581    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
48582    ///   
48583    pub lang: core::option::Option<AttributeValue<'life>>,
48584    ///
48585    ///     <p>The value given to the <code>list</code> attribute should be the <a href="/en-US/docs/Web/API/Element/id" title="id"><code>id</code></a> of a <a href="/en-US/docs/Web/HTML/Element/datalist"><code>&lt;datalist&gt;</code></a> element located in the same document. The <code>&lt;datalist&gt;</code> provides a list of predefined values to suggest to the user for this input. Any values in the list that are not compatible with the <a href="#type"><code>type</code></a> are not included in the suggested options. The values provided are suggestions, not requirements: users can select from this predefined list or provide a different value.</p>
48586    ///     <p>It is valid on <code>text</code>, <code>search</code>, <code>url</code>, <code>tel</code>, <code>email</code>, <code>date</code>, <code>month</code>, <code>week</code>, <code>time</code>, <code>datetime-local</code>, <code>number</code>, <code>range</code>, and <code>color</code>.</p>
48587    ///     <p>Per the specifications, the <code>list</code> attribute is not supported by the <code>hidden</code>, <code>password</code>, <code>checkbox</code>, <code>radio</code>, <code>file</code>, or any of the button types.</p>
48588    ///     <p>Depending on the browser, the user may see a custom color palette suggested, tic marks along a range, or even an input that opens like a <a href="/en-US/docs/Web/HTML/Element/select"><code>&lt;select&gt;</code></a> but allows for non-listed values. Check out the <a href="/en-US/docs/Web/HTML/Element/datalist#browser_compatibility">browser compatibility table</a> for the other input types.</p>
48589    ///     <p>See the <a href="/en-US/docs/Web/HTML/Element/datalist"><code>&lt;datalist&gt;</code></a> element.</p>
48590    ///   
48591    pub list: core::option::Option<AttributeValue<'life>>,
48592    ///
48593    ///     <p>Valid for <code>date</code>, <code>month</code>, <code>week</code>, <code>time</code>, <code>datetime-local</code>, <code>number</code>, and <code>range</code>, it defines the greatest value in the range of permitted values. If the <a href="#value"><code>value</code></a> entered into the element exceeds this, the element fails <a href="/en-US/docs/Web/HTML/Constraint_validation">constraint validation</a>. If the value of the <code>max</code> attribute isn't a number, then the element has no maximum value.</p>
48594    ///     <p>There is a special case: if the data type is periodic (such as for dates or times), the value of <code>max</code> may be lower than the value of <code>min</code>, which indicates that the range may wrap around; for example, this allows you to specify a time range from 10 PM to 4 AM.</p>
48595    ///   
48596    pub max: core::option::Option<AttributeValue<'life>>,
48597    ///
48598    ///     <p>Valid for <code>text</code>, <code>search</code>, <code>url</code>, <code>tel</code>, <code>email</code>, and <code>password</code>, it defines the maximum number of characters (as UTF-16 code units) the user can enter into the field. This must be an integer value <code>0</code> or higher. If no <code>maxlength</code> is specified, or an invalid value is specified, the field has no maximum length. This value must also be greater than or equal to the value of <code>minlength</code>.</p>
48599    ///     <p>The input will fail <a href="/en-US/docs/Web/HTML/Constraint_validation">constraint validation</a> if the length of the text entered into the field is greater than <code>maxlength</code> UTF-16 code units long. By default, browsers prevent users from entering more characters than allowed by the <code>maxlength</code> attribute. See <a href="#client-side_validation">Client-side validation</a> for more information.</p>
48600    ///   
48601    pub maxlength: core::option::Option<AttributeValue<'life>>,
48602    ///
48603    ///     <p>Valid for <code>date</code>, <code>month</code>, <code>week</code>, <code>time</code>, <code>datetime-local</code>, <code>number</code>, and <code>range</code>, it defines the most negative value in the range of permitted values. If the <a href="#value"><code>value</code></a> entered into the element is less than this, the element fails <a href="/en-US/docs/Web/HTML/Constraint_validation">constraint validation</a>. If the value of the <code>min</code> attribute isn't a number, then the element has no minimum value.</p>
48604    ///     <p>This value must be less than or equal to the value of the <code>max</code> attribute. If the <code>min</code> attribute is present but is not specified or is invalid, no <code>min</code> value is applied. If the <code>min</code> attribute is valid and a non-empty value is less than the minimum allowed by the <code>min</code> attribute, constraint validation will prevent form submission. See <a href="#client-side_validation">Client-side validation</a> for more information.</p>
48605    ///     <p>There is a special case: if the data type is periodic (such as for dates or times), the value of <code>max</code> may be lower than the value of <code>min</code>, which indicates that the range may wrap around; for example, this allows you to specify a time range from 10 PM to 4 AM.</p>
48606    ///   
48607    pub min: core::option::Option<AttributeValue<'life>>,
48608    ///
48609    ///     <p>Valid for <code>text</code>, <code>search</code>, <code>url</code>, <code>tel</code>, <code>email</code>, and <code>password</code>, it defines the minimum number of characters (as UTF-16 code units) the user can enter into the entry field. This must be a non-negative integer value smaller than or equal to the value specified by <code>maxlength</code>. If no <code>minlength</code> is specified, or an invalid value is specified, the input has no minimum length.</p>
48610    ///     <p>The input will fail <a href="/en-US/docs/Web/HTML/Constraint_validation">constraint validation</a> if the length of the text entered into the field is fewer than <code>minlength</code> UTF-16 code units long, preventing form submission. See <a href="#client-side_validation">Client-side validation</a> for more information.</p>
48611    ///   
48612    pub minlength: core::option::Option<AttributeValue<'life>>,
48613    ///
48614    ///     <p>The Boolean <code>multiple</code> attribute, if set, means the user can enter comma separated email addresses in the email widget or can choose more than one file with the <code>file</code> input. See the <a href="/en-US/docs/Web/HTML/Element/input/email">email</a> and <a href="/en-US/docs/Web/HTML/Element/input/file">file</a> input type.</p>
48615    ///   
48616    pub multiple: core::option::Option<AttributeValue<'life>>,
48617    ///
48618    ///     <p>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.</p>
48619    ///     <p>Consider the <code>name</code> a required attribute (even though it's not). If an input has no <code>name</code> specified, or <code>name</code> 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.)</p>
48620    ///     <p>There are two special cases:</p>
48621    ///     <ol>
48622    ///       <li><code>_charset_</code> : If used as the name of an <code>&lt;input&gt;</code> element of type <a href="/en-US/docs/Web/HTML/Element/input/hidden">hidden</a>, the input's <code>value</code> is automatically set by the <a href="/en-US/docs/Glossary/User_agent">user agent</a> to the character encoding being used to submit the form.</li>
48623    ///       <li><code>isindex</code>: For historical reasons, the name <a class="external" target="_blank" href="https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fe-name"><code>isindex</code></a> is not allowed.</li>
48624    ///     </ol>
48625    ///     <p>The <a href="#name"><code>name</code></a> attribute creates a unique behavior for radio buttons.</p>
48626    ///     <p>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,</p>
48627    ///     <p>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.</p>
48628    ///     <p>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.</p>
48629    ///     <p>When an input element is given a <code>name</code>, that name becomes a property of the owning form element's <a href="/en-US/docs/Web/API/HTMLFormElement/elements"><code>HTMLFormElement.elements</code></a> property. If you have an input whose <code>name</code> is set to <code>guest</code> and another whose <code>name</code> is <code>hat-size</code>, the following code can be used:</p>
48630    ///     <div class="code-example"><pre class="brush: js notranslate"><code><span class="token keyword">let</span> form <span class="token operator">=</span> document<span class="token punctuation">.</span><span class="token function">querySelector</span><span class="token punctuation">(</span><span class="token string">"form"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
48631    ///
48632    /// <span class="token keyword">let</span> guestName <span class="token operator">=</span> form<span class="token punctuation">.</span>elements<span class="token punctuation">.</span>guest<span class="token punctuation">;</span>
48633    /// <span class="token keyword">let</span> hatSize <span class="token operator">=</span> form<span class="token punctuation">.</span>elements<span class="token punctuation">[</span><span class="token string">"hat-size"</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
48634    /// </code></pre></div>
48635    ///     <p>When this code has run, <code>guestName</code> will be the <a href="/en-US/docs/Web/API/HTMLInputElement"><code>HTMLInputElement</code></a> for the <code>guest</code> field, and <code>hatSize</code> the object for the <code>hat-size</code> field.</p>
48636    ///     <div class="notecard warning" id="sect6">
48637    ///       <p><strong>Warning:</strong> Avoid giving form elements a <code>name</code> 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.</p>
48638    ///     </div>
48639    ///   
48640    pub name: core::option::Option<AttributeValue<'life>>,
48641    ///
48642    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
48643    ///   
48644    pub nonce: core::option::Option<AttributeValue<'life>>,
48645    ///
48646    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
48647    ///   
48648    pub part: core::option::Option<AttributeValue<'life>>,
48649    ///
48650    ///     <p>Valid for <code>text</code>, <code>search</code>, <code>url</code>, <code>tel</code>, <code>email</code>, and <code>password</code>, the <code>pattern</code> attribute defines a regular expression that the input's <a href="#value"><code>value</code></a> must match in order for the value to pass <a href="/en-US/docs/Web/HTML/Constraint_validation">constraint validation</a>. It must be a valid JavaScript regular expression, as used by the <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp"><code>RegExp</code></a> type, and as documented in our <a href="/en-US/docs/Web/JavaScript/Guide/Regular_expressions">guide on regular expressions</a>; the <code>'u'</code> flag is specified when compiling the regular expression, so that the pattern is treated as a sequence of Unicode code points, instead of as ASCII. No forward slashes should be specified around the pattern text.</p>
48651    ///     <p>If the <code>pattern</code> attribute is present but is not specified or is invalid, no regular expression is applied and this attribute is ignored completely. If the pattern attribute is valid and a non-empty value does not match the pattern, constraint validation will prevent form submission.</p>
48652    ///     <div id="sect7" class="notecard note">
48653    ///       <p><strong>Note:</strong> If using the <code>pattern</code> attribute, inform the user about the expected format by including explanatory text nearby. You can also include a <a href="#title"><code>title</code></a> attribute to explain what the requirements are to match the pattern; most browsers will display this title as a tooltip. The visible explanation is required for accessibility. The tooltip is an enhancement.</p>
48654    ///     </div>
48655    ///     <p>See <a href="#client-side_validation">Client-side validation</a> for more information.</p>
48656    ///   
48657    pub pattern: core::option::Option<AttributeValue<'life>>,
48658    ///
48659    ///     <p>Valid for <code>text</code>, <code>search</code>, <code>url</code>, <code>tel</code>, <code>email</code>, <code>password</code>, and <code>number</code>, the <code>placeholder</code> attribute provides a brief hint to the user as to what kind of information is expected in the field. It should be a word or short phrase that provides a hint as to the expected type of data, rather than an explanation or prompt. The text <em>must not</em> include carriage returns or line feeds. So for example if a field is expected to capture a user's first name, and its label is "First Name", a suitable placeholder might be "e.g. Mustafa".</p>
48660    ///     <div id="sect8" class="notecard note">
48661    ///       <p><strong>Note:</strong> The <code>placeholder</code> attribute is not as semantically useful as other ways to explain your form, and can cause unexpected technical issues with your content. See <a href="#labels">Labels</a> for more information.</p>
48662    ///     </div>
48663    ///   
48664    pub placeholder: core::option::Option<AttributeValue<'life>>,
48665    ///
48666    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
48667    ///   
48668    pub popover: core::option::Option<AttributeValue<'life>>,
48669    ///
48670    ///     <p>A Boolean attribute which, if present, indicates that the user should not be able to edit the value of the input. The <code>readonly</code> attribute is supported by the <code>text</code>, <code>search</code>, <code>url</code>, <code>tel</code>, <code>email</code>, <code>date</code>, <code>month</code>, <code>week</code>, <code>time</code>, <code>datetime-local</code>, <code>number</code>, and <code>password</code> input types.</p>
48671    ///     <p>See the <a href="/en-US/docs/Web/HTML/Attributes/readonly">HTML attribute: <code>readonly</code></a> for more information.</p>
48672    ///   
48673    pub readonly: core::option::Option<AttributeValue<'life>>,
48674    ///
48675    ///     <p><code>required</code> is a Boolean attribute which, if present, indicates that the user must specify a value for the input before the owning form can be submitted. The <code>required</code> attribute is supported by <code>text</code>, <code>search</code>, <code>url</code>, <code>tel</code>, <code>email</code>, <code>date</code>, <code>month</code>, <code>week</code>, <code>time</code>, <code>datetime-local</code>, <code>number</code>, <code>password</code>, <code>checkbox</code>, <code>radio</code>, and <code>file</code> inputs.</p>
48676    ///     <p>See <a href="#client-side_validation">Client-side validation</a> and the <a href="/en-US/docs/Web/HTML/Attributes/required">HTML attribute: <code>required</code></a> for more information.</p>
48677    ///   
48678    pub required: core::option::Option<AttributeValue<'life>>,
48679    ///
48680    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
48681    ///   
48682    pub role: core::option::Option<AttributeValue<'life>>,
48683    ///
48684    ///     <p>Valid for <code>email</code>, <code>password</code>, <code>tel</code>, <code>url</code>, and <code>text</code>, the <code>size</code> attribute specifies how much of the input is shown. Basically creates same result as setting CSS <a href="/en-US/docs/Web/CSS/width"><code>width</code></a> property with a few specialities. The actual unit of the value depends on the input type. For <code>password</code> and <code>text</code>, it is a number of characters (or <code>em</code> units) with a default value of <code>20</code>, and for others, it is pixels (or <code>px</code> units). CSS <code>width</code> takes precedence over the <code>size</code> attribute.</p>
48685    ///   
48686    pub size: core::option::Option<AttributeValue<'life>>,
48687    ///
48688    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
48689    ///   
48690    pub slot: core::option::Option<AttributeValue<'life>>,
48691    ///
48692    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
48693    ///     <ul>
48694    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
48695    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
48696    ///     </ul>
48697    ///   
48698    pub spellcheck: core::option::Option<AttributeValue<'life>>,
48699    ///
48700    ///     <p>Valid for the <code>image</code> input button only, the <code>src</code> is string specifying the URL of the image file to display to represent the graphical submit button. See the <a href="/en-US/docs/Web/HTML/Element/input/image">image</a> input type.</p>
48701    ///   
48702    pub src: core::option::Option<AttributeValue<'life>>,
48703    ///
48704    ///     <p>Valid for <code>date</code>, <code>month</code>, <code>week</code>, <code>time</code>, <code>datetime-local</code>, <code>number</code>, and <code>range</code>, the <a href="/en-US/docs/Web/HTML/Attributes/step"><code>step</code></a> attribute is a number that specifies the granularity that the value must adhere to.</p>
48705    ///     <p>If not explicitly included:</p>
48706    ///     <ul>
48707    ///       <li><code>step</code> defaults to 1 for <code>number</code> and <code>range</code>.</li>
48708    ///       <li>Each date/time input type has a default <code>step</code> value appropriate for the type; see the individual input pages: <a href="/en-US/docs/Web/HTML/Element/input/date#step"><code>date</code></a>, <a href="/en-US/docs/Web/HTML/Element/input/datetime-local#step"><code>datetime-local</code></a>, <a href="/en-US/docs/Web/HTML/Element/input/month#step"><code>month</code></a>, <a href="/en-US/docs/Web/HTML/Element/input/time#step"><code>time</code></a>, and <a href="/en-US/docs/Web/HTML/Element/input/week#step"><code>week</code></a>.</li>
48709    ///     </ul>
48710    ///     <p>The value must be a positive number—integer or float—or the special value <code>any</code>, which means no stepping is implied, and any value is allowed (barring other constraints, such as <a href="#min"><code>min</code></a> and <a href="#max"><code>max</code></a>).</p>
48711    ///     <p>If <code>any</code> is not explicitly set, valid values for the <code>number</code>, date/time input types, and <code>range</code> input types are equal to the basis for stepping — the <a href="#min"><code>min</code></a> value and increments of the step value, up to the <a href="#max"><code>max</code></a> value, if specified.</p>
48712    ///     <p>For example, if you have <code>&lt;input type="number" min="10" step="2"&gt;</code>, then any even integer, <code>10</code> or greater, is valid. If omitted, <code>&lt;input type="number"&gt;</code>, any integer is valid, but floats (like <code>4.2</code>) are not valid, because <code>step</code> defaults to <code>1</code>. For <code>4.2</code> to be valid, <code>step</code> would have had to be set to <code>any</code>, 0.1, 0.2, or any the <code>min</code> value would have had to be a number ending in <code>.2</code>, such as <code>&lt;input type="number" min="-5.2"&gt;</code></p>
48713    ///     <div class="notecard note" id="sect9">
48714    ///       <p><strong>Note:</strong> When the data entered by the user doesn't adhere to the stepping configuration, the value is considered invalid in constraint validation and will match the <code>:invalid</code> pseudoclass.</p>
48715    ///     </div>
48716    ///     <p>See <a href="#client-side_validation">Client-side validation</a> for more information.</p>
48717    ///   
48718    pub step: core::option::Option<AttributeValue<'life>>,
48719    ///
48720    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
48721    ///   
48722    pub style: core::option::Option<AttributeValue<'life>>,
48723    ///
48724    ///     <p>Global attribute valid for all elements, including all the input types, an integer attribute indicating if the element can take input focus (is focusable), if it should participate to sequential keyboard navigation. As all input types except for input of type hidden are focusable, this attribute should not be used on form controls, because doing so would require the management of the focus order for all elements within the document with the risk of harming usability and accessibility if done incorrectly.</p>
48725    ///   
48726    pub tabindex: core::option::Option<AttributeValue<'life>>,
48727    ///
48728    ///     <p>Global attribute valid for all elements, including all input types, containing a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip. The title should NOT be used as the primary explanation of the purpose of the form control. Instead, use the <a href="/en-US/docs/Web/HTML/Element/label"><code>&lt;label&gt;</code></a> element with a <code>for</code> attribute set to the form control's <a href="#id"><code>id</code></a> attribute. See <a href="#labels">Labels</a> below.</p>
48729    ///   
48730    pub title: core::option::Option<AttributeValue<'life>>,
48731    ///
48732    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
48733    ///     <ul>
48734    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
48735    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
48736    ///     </ul>
48737    ///   
48738    pub translate: core::option::Option<AttributeValue<'life>>,
48739    ///
48740    ///     <p>A string specifying the type of control to render. For example, to create a checkbox, a value of <code>checkbox</code> is used. If omitted (or an unknown value is specified), the input type <code>text</code> is used, creating a plaintext input field.</p>
48741    ///     <p>Permitted values are listed in <a href="#input_types">Input types</a> above.</p>
48742    ///   
48743    pub type_: core::option::Option<AttributeValue<'life>>,
48744    ///
48745    ///     <p>The input control's value. When specified in the HTML, this is the initial value, and from then on it can be altered or retrieved at any time using JavaScript to access the respective <a href="/en-US/docs/Web/API/HTMLInputElement"><code>HTMLInputElement</code></a> object's <code>value</code> property. The <code>value</code> attribute is always optional, though should be considered mandatory for <code>checkbox</code>, <code>radio</code>, and <code>hidden</code>.</p>
48746    ///   
48747    pub value: core::option::Option<AttributeValue<'life>>,
48748    ///
48749    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
48750    ///     <ul>
48751    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
48752    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
48753    ///     </ul>
48754    ///   
48755    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
48756    ///
48757    ///     <p>Valid for the <code>image</code> input button only, the <code>width</code> is the width of the image file to display to represent the graphical submit button. See the <a href="/en-US/docs/Web/HTML/Element/input/image">image</a> input type.</p>
48758    ///   
48759    pub width: core::option::Option<AttributeValue<'life>>,
48760}
48761#[allow(deprecated)]
48762
48763impl<'life> Input<'life> {
48764    /// Get the tag name of the element.
48765    /// This is the same as the name of the struct, in kebab-case.
48766    pub fn tag() -> &'static str {
48767        "input"
48768    }
48769    /// Sets an attribute of the element.
48770    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
48771    /// If the `alloc` feature is disabled, this function will silently fail.
48772    ///
48773    /// # Note
48774    /// This only works when the attribute is lowercase.
48775    pub fn set_attr(
48776        &mut self,
48777        name: &'life str,
48778        value: impl core::convert::Into<AttributeValue<'life>>,
48779    ) {
48780        match name {
48781            "accept" => self.accept = Some(value.into()),
48782            "accesskey" => self.accesskey = Some(value.into()),
48783            "alt" => self.alt = Some(value.into()),
48784            "autocapitalize" => self.autocapitalize = Some(value.into()),
48785            "autocomplete" => self.autocomplete = Some(value.into()),
48786            "autofocus" => self.autofocus = Some(value.into()),
48787            "capture" => self.capture = Some(value.into()),
48788            "checked" => self.checked = Some(value.into()),
48789            "class" => self.class = Some(value.into()),
48790            "contenteditable" => self.contenteditable = Some(value.into()),
48791            "contextmenu" => self.contextmenu = Some(value.into()),
48792            "dir" => self.dir = Some(value.into()),
48793            "dirname" => self.dirname = Some(value.into()),
48794            "disabled" => self.disabled = Some(value.into()),
48795            "draggable" => self.draggable = Some(value.into()),
48796            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
48797            "exportparts" => self.exportparts = Some(value.into()),
48798            "form" => self.form = Some(value.into()),
48799            "formaction" => self.formaction = Some(value.into()),
48800            "formenctype" => self.formenctype = Some(value.into()),
48801            "formmethod" => self.formmethod = Some(value.into()),
48802            "formnovalidate" => self.formnovalidate = Some(value.into()),
48803            "formtarget" => self.formtarget = Some(value.into()),
48804            "height" => self.height = Some(value.into()),
48805            "hidden" => self.hidden = Some(value.into()),
48806            "id" => self.id = Some(value.into()),
48807            "inert" => self.inert = Some(value.into()),
48808            "inputmode" => self.inputmode = Some(value.into()),
48809            "is" => self.is = Some(value.into()),
48810            "itemid" => self.itemid = Some(value.into()),
48811            "itemprop" => self.itemprop = Some(value.into()),
48812            "itemref" => self.itemref = Some(value.into()),
48813            "itemscope" => self.itemscope = Some(value.into()),
48814            "itemtype" => self.itemtype = Some(value.into()),
48815            "lang" => self.lang = Some(value.into()),
48816            "list" => self.list = Some(value.into()),
48817            "max" => self.max = Some(value.into()),
48818            "maxlength" => self.maxlength = Some(value.into()),
48819            "min" => self.min = Some(value.into()),
48820            "minlength" => self.minlength = Some(value.into()),
48821            "multiple" => self.multiple = Some(value.into()),
48822            "name" => self.name = Some(value.into()),
48823            "nonce" => self.nonce = Some(value.into()),
48824            "part" => self.part = Some(value.into()),
48825            "pattern" => self.pattern = Some(value.into()),
48826            "placeholder" => self.placeholder = Some(value.into()),
48827            "popover" => self.popover = Some(value.into()),
48828            "readonly" => self.readonly = Some(value.into()),
48829            "required" => self.required = Some(value.into()),
48830            "role" => self.role = Some(value.into()),
48831            "size" => self.size = Some(value.into()),
48832            "slot" => self.slot = Some(value.into()),
48833            "spellcheck" => self.spellcheck = Some(value.into()),
48834            "src" => self.src = Some(value.into()),
48835            "step" => self.step = Some(value.into()),
48836            "style" => self.style = Some(value.into()),
48837            "tabindex" => self.tabindex = Some(value.into()),
48838            "title" => self.title = Some(value.into()),
48839            "translate" => self.translate = Some(value.into()),
48840            "type_" => self.type_ = Some(value.into()),
48841            "value" => self.value = Some(value.into()),
48842            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
48843            "width" => self.width = Some(value.into()),
48844            #[cfg(feature = "alloc")]
48845            _ => {
48846                #[allow(clippy::useless_conversion)]
48847                self.extra.insert(name.into(), value.into());
48848            }
48849            #[cfg(not(feature = "alloc"))]
48850            _ => {}
48851        }
48852    }
48853}
48854/// The <strong><code>&lt;input&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element is used to create interactive controls for web-based forms in order to accept data from the user; a wide variety of types of input data and control widgets are available, depending on the device and <a href="/en-US/docs/Glossary/User_agent">user agent</a>. The <code>&lt;input&gt;</code> element is one of the most powerful and complex in all of HTML due to the sheer number of combinations of input types and attributes.
48855///
48856/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input>
48857
48858#[cfg(feature = "alloc")]
48859#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
48860pub struct InputOwned {
48861    ///     <p>Valid for the <code>file</code> input type only, the <code>accept</code> attribute defines which file types are selectable in a <code>file</code> upload control. See the <a href="/en-US/docs/Web/HTML/Element/input/file">file</a> input type.</p>
48862    ///   
48863    pub accept: core::option::Option<AttributeValueOwned>,
48864    ///
48865    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
48866    ///   
48867    pub accesskey: core::option::Option<AttributeValueOwned>,
48868    ///
48869    ///     <p>Valid for the <code>image</code> button only, the <code>alt</code> attribute provides alternative text for the image, displaying the value of the attribute if the image <a href="#src"><code>src</code></a> is missing or otherwise fails to load. See the <a href="/en-US/docs/Web/HTML/Element/input/image">image</a> input type.</p>
48870    ///   
48871    pub alt: core::option::Option<AttributeValueOwned>,
48872    ///
48873    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
48874    ///     <ul>
48875    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
48876    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
48877    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
48878    ///       <li><code>characters</code>, all letters should default to uppercase</li>
48879    ///     </ul>
48880    ///   
48881    pub autocapitalize: core::option::Option<AttributeValueOwned>,
48882    ///
48883    ///     <p>(<strong>Not</strong> a Boolean attribute!) The <a href="/en-US/docs/Web/HTML/Attributes/autocomplete"><code>autocomplete</code></a> 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 <code>email</code> addresses in an email input field. See <a href="/en-US/docs/Web/HTML/Attributes/autocomplete#values"><code>autocomplete</code></a> for permitted values.</p>
48884    ///     <p>The <code>autocomplete</code> attribute is valid on <code>hidden</code>, <code>text</code>, <code>search</code>, <code>url</code>, <code>tel</code>, <code>email</code>, <code>date</code>, <code>month</code>, <code>week</code>, <code>time</code>, <code>datetime-local</code>, <code>number</code>, <code>range</code>, <code>color</code>, and <code>password</code>. This attribute has no effect on input types that do not return numeric or text data, being valid for all input types except <code>checkbox</code>, <code>radio</code>, <code>file</code>, or any of the button types.</p>
48885    ///     <p>See the <a href="/en-US/docs/Web/HTML/Attributes/autocomplete"><code>autocomplete</code> attribute</a> for additional information, including information on password security and how <code>autocomplete</code> is slightly different for <code>hidden</code> than for other input types.</p>
48886    ///   
48887    pub autocomplete: core::option::Option<AttributeValueOwned>,
48888    ///
48889    ///     <p>A Boolean attribute which, if present, indicates that the input should automatically have focus when the page has finished loading (or when the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> containing the element has been displayed).</p>
48890    ///     <div class="notecard note" id="sect1">
48891    ///       <p><strong>Note:</strong> An element with the <code>autofocus</code> attribute may gain focus before the <a title="DOMContentLoaded" href="/en-US/docs/Web/API/Window/DOMContentLoaded_event"><code>DOMContentLoaded</code></a> event is fired.</p>
48892    ///     </div>
48893    ///     <p>No more than one element in the document may have the <code>autofocus</code> attribute. If put on more than one element, the first one with the attribute receives focus.</p>
48894    ///     <p>The <code>autofocus</code> attribute cannot be used on inputs of type <code>hidden</code>, since hidden inputs cannot be focused.</p>
48895    ///     <div id="sect2" class="notecard warning">
48896    ///       <p><strong>Warning:</strong> Automatically focusing a form control can confuse visually-impaired people using screen-reading technology and people with cognitive impairments. When <code>autofocus</code> is assigned, screen-readers "teleport" their user to the form control without warning them beforehand.</p>
48897    ///     </div>
48898    ///     <p>Use careful consideration for accessibility when applying the <code>autofocus</code> attribute. Automatically focusing on a control can cause the page to scroll on load. The focus can also cause dynamic keyboards to display on some touch devices. While a screen reader will announce the label of the form control receiving focus, the screen reader will not announce anything before the label, and the sighted user on a small device will equally miss the context created by the preceding content.</p>
48899    ///   
48900    pub autofocus: core::option::Option<AttributeValueOwned>,
48901    ///
48902    ///     <p>Introduced in the HTML Media Capture specification and valid for the <code>file</code> input type only, the <code>capture</code> attribute defines which media—microphone, video, or camera—should be used to capture a new file for upload with <code>file</code> upload control in supporting scenarios. See the <a href="/en-US/docs/Web/HTML/Element/input/file">file</a> input type.</p>
48903    ///   
48904    pub capture: core::option::Option<AttributeValueOwned>,
48905    ///
48906    ///     <p>Valid for both <code>radio</code> and <code>checkbox</code> types, <code>checked</code> is a Boolean attribute. If present on a <code>radio</code> type, it indicates that the radio button is the currently selected one in the group of same-named radio buttons. If present on a <code>checkbox</code> type, it indicates that the checkbox is checked by default (when the page loads). It does <em>not</em> indicate whether this checkbox is currently checked: if the checkbox's state is changed, this content attribute does not reflect the change. (Only the <a href="/en-US/docs/Web/API/HTMLInputElement"><code>HTMLInputElement</code>'s <code>checked</code> IDL attribute</a> is updated.)</p>
48907    ///     <div class="notecard note" id="sect3">
48908    ///       <p><strong>Note:</strong> Unlike other input controls, a checkboxes and radio buttons value are only included in the submitted data if they are currently <code>checked</code>. If they are, the name and the value(s) of the checked controls are submitted.</p>
48909    ///       <p>For example, if a checkbox whose <code>name</code> is <code>fruit</code> has a <code>value</code> of <code>cherry</code>, and the checkbox is checked, the form data submitted will include <code>fruit=cherry</code>. If the checkbox isn't active, it isn't listed in the form data at all. The default <code>value</code> for checkboxes and radio buttons is <code>on</code>.</p>
48910    ///     </div>
48911    ///   
48912    pub checked: core::option::Option<AttributeValueOwned>,
48913    ///
48914    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
48915    ///   
48916    pub class: core::option::Option<AttributeValueOwned>,
48917    ///
48918    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
48919    ///     <ul>
48920    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
48921    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
48922    ///     </ul>
48923    ///   
48924    pub contenteditable: core::option::Option<AttributeValueOwned>,
48925    ///
48926    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
48927    ///   
48928    pub contextmenu: core::option::Option<AttributeValueOwned>,
48929    ///
48930    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
48931    ///   
48932    #[cfg(feature = "alloc")]
48933    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
48934    ///
48935    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
48936    ///     <ul>
48937    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
48938    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
48939    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
48940    ///     </ul>
48941    ///   
48942    pub dir: core::option::Option<AttributeValueOwned>,
48943    ///
48944    ///     <p>Valid for <code>text</code> and <code>search</code> input types only, the <code>dirname</code> attribute enables the submission of the directionality of the element. When included, the form control will submit with two name/value pairs: the first being the <a href="#name"><code>name</code></a> and <a href="#value"><code>value</code></a>, the second being the value of the <code>dirname</code> as the name with the value of <code>ltr</code> or <code>rtl</code> being set by the browser.</p>
48945    ///     <div class="code-example"><pre class="brush: html notranslate"><code><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>form</span> <span class="token attr-name">action</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>page.html<span class="token punctuation">"</span></span> <span class="token attr-name">method</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>post<span class="token punctuation">"</span></span><span class="token punctuation">&gt;</span></span>
48946    ///   <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>label</span>
48947    ///     <span class="token punctuation">&gt;</span></span>Fruit:
48948    ///     <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>input</span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>text<span class="token punctuation">"</span></span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>fruit<span class="token punctuation">"</span></span> <span class="token attr-name">dirname</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>fruit.dir<span class="token punctuation">"</span></span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>cherry<span class="token punctuation">"</span></span> <span class="token punctuation">/&gt;</span></span>
48949    ///   <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>label</span><span class="token punctuation">&gt;</span></span>
48950    ///   <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>input</span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>submit<span class="token punctuation">"</span></span> <span class="token punctuation">/&gt;</span></span>
48951    /// <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>form</span><span class="token punctuation">&gt;</span></span>
48952    /// <span class="token comment">&lt;!-- page.html?fruit=cherry&amp;fruit.dir=ltr --&gt;</span>
48953    /// </code></pre></div>
48954    ///     <p>When the form above is submitted, the input cause both the <code>name</code> / <code>value</code> pair of <code>fruit=cherry</code> and the <code>dirname</code> / direction pair of <code>fruit.dir=ltr</code> to be sent.</p>
48955    ///   
48956    pub dirname: core::option::Option<AttributeValueOwned>,
48957    ///
48958    ///     <p>A Boolean attribute which, if present, indicates that the user should not be able to interact with the input. Disabled inputs are typically rendered with a dimmer color or using some other form of indication that the field is not available for use.</p>
48959    ///     <p>Specifically, disabled inputs do not receive the <a href="/en-US/docs/Web/API/Element/click_event" title="click"><code>click</code></a> event, and disabled inputs are not submitted with the form.</p>
48960    ///     <div class="notecard note" id="sect4">
48961    ///       <p><strong>Note:</strong> Although not required by the specification, Firefox will by default <a href="https://stackoverflow.com/questions/5985839/bug-with-firefox-disabled-attribute-of-input-not-resetting-when-refreshing" class="external" target="_blank">persist the dynamic disabled state</a> of an <code>&lt;input&gt;</code> across page loads. Use the <a href="#autocomplete"><code>autocomplete</code></a> attribute to control this feature.</p>
48962    ///     </div>
48963    ///   
48964    pub disabled: core::option::Option<AttributeValueOwned>,
48965    ///
48966    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
48967    ///     <ul>
48968    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
48969    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
48970    ///     </ul>
48971    ///   
48972    pub draggable: core::option::Option<AttributeValueOwned>,
48973    ///
48974    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
48975    ///   
48976    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
48977    ///
48978    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
48979    ///   
48980    pub exportparts: core::option::Option<AttributeValueOwned>,
48981    /// /// Extra attributes of the element.
48982
48983    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
48984    #[cfg(feature = "alloc")]
48985    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
48986    ///
48987    ///     <p>A string specifying the <a href="/en-US/docs/Web/HTML/Element/form"><code>&lt;form&gt;</code></a> element with which the input is associated (that is, its <strong>form owner</strong>). This string's value, if present, must match the <a href="#id"><code>id</code></a> of a <code>&lt;form&gt;</code> element in the same document. If this attribute isn't specified, the <code>&lt;input&gt;</code> element is associated with the nearest containing form, if any.</p>
48988    ///     <p>The <code>form</code> attribute lets you place an input anywhere in the document but have it included with a form elsewhere in the document.</p>
48989    ///     <div class="notecard note" id="sect5">
48990    ///       <p><strong>Note:</strong> An input can only be associated with one form.</p>
48991    ///     </div>
48992    ///   
48993    pub form: core::option::Option<AttributeValueOwned>,
48994    ///
48995    ///     <p>Valid for the <code>image</code> and <code>submit</code> input types only. See the <a href="/en-US/docs/Web/HTML/Element/input/submit">submit</a> input type for more information.</p>
48996    ///   
48997    pub formaction: core::option::Option<AttributeValueOwned>,
48998    ///
48999    ///     <p>Valid for the <code>image</code> and <code>submit</code> input types only. See the <a href="/en-US/docs/Web/HTML/Element/input/submit">submit</a> input type for more information.</p>
49000    ///   
49001    pub formenctype: core::option::Option<AttributeValueOwned>,
49002    ///
49003    ///     <p>Valid for the <code>image</code> and <code>submit</code> input types only. See the <a href="/en-US/docs/Web/HTML/Element/input/submit">submit</a> input type for more information.</p>
49004    ///   
49005    pub formmethod: core::option::Option<AttributeValueOwned>,
49006    ///
49007    ///     <p>Valid for the <code>image</code> and <code>submit</code> input types only. See the <a href="/en-US/docs/Web/HTML/Element/input/submit">submit</a> input type for more information.</p>
49008    ///   
49009    pub formnovalidate: core::option::Option<AttributeValueOwned>,
49010    ///
49011    ///     <p>Valid for the <code>image</code> and <code>submit</code> input types only. See the <a href="/en-US/docs/Web/HTML/Element/input/submit">submit</a> input type for more information.</p>
49012    ///   
49013    pub formtarget: core::option::Option<AttributeValueOwned>,
49014    ///
49015    ///     <p>Valid for the <code>image</code> input button only, the <code>height</code> is the height of the image file to display to represent the graphical submit button. See the <a href="/en-US/docs/Web/HTML/Element/input/image">image</a> input type.</p>
49016    ///   
49017    pub height: core::option::Option<AttributeValueOwned>,
49018    ///
49019    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
49020    ///   
49021    pub hidden: core::option::Option<AttributeValueOwned>,
49022    ///
49023    ///     <p>Global attribute valid for all elements, including all the input types, it defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking. The value is used as the value of the <a href="/en-US/docs/Web/HTML/Element/label"><code>&lt;label&gt;</code></a>'s <code>for</code> attribute to link the label with the form control. See <a href="/en-US/docs/Web/HTML/Element/label"><code>&lt;label&gt;</code></a>.</p>
49024    ///   
49025    pub id: core::option::Option<AttributeValueOwned>,
49026    ///
49027    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
49028    ///   
49029    pub inert: core::option::Option<AttributeValueOwned>,
49030    ///
49031    ///     <p>Global value valid for all elements, it provides a hint to browsers as to the type of virtual keyboard configuration to use when editing this element or its contents. Values include <code>none</code>, <code>text</code>, <code>tel</code>, <code>url</code>, <code>email</code>, <code>numeric</code>, <code>decimal</code>, and <code>search</code>.</p>
49032    ///   
49033    pub inputmode: core::option::Option<AttributeValueOwned>,
49034    ///
49035    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
49036    ///   
49037    pub is: core::option::Option<AttributeValueOwned>,
49038    ///
49039    ///     <p>The unique, global identifier of an item.</p>
49040    ///   
49041    pub itemid: core::option::Option<AttributeValueOwned>,
49042    ///
49043    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
49044    ///   
49045    pub itemprop: core::option::Option<AttributeValueOwned>,
49046    ///
49047    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
49048    ///   
49049    pub itemref: core::option::Option<AttributeValueOwned>,
49050    ///
49051    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
49052    ///   
49053    pub itemscope: core::option::Option<AttributeValueOwned>,
49054    ///
49055    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
49056    ///   
49057    pub itemtype: core::option::Option<AttributeValueOwned>,
49058    ///
49059    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
49060    ///   
49061    pub lang: core::option::Option<AttributeValueOwned>,
49062    ///
49063    ///     <p>The value given to the <code>list</code> attribute should be the <a href="/en-US/docs/Web/API/Element/id" title="id"><code>id</code></a> of a <a href="/en-US/docs/Web/HTML/Element/datalist"><code>&lt;datalist&gt;</code></a> element located in the same document. The <code>&lt;datalist&gt;</code> provides a list of predefined values to suggest to the user for this input. Any values in the list that are not compatible with the <a href="#type"><code>type</code></a> are not included in the suggested options. The values provided are suggestions, not requirements: users can select from this predefined list or provide a different value.</p>
49064    ///     <p>It is valid on <code>text</code>, <code>search</code>, <code>url</code>, <code>tel</code>, <code>email</code>, <code>date</code>, <code>month</code>, <code>week</code>, <code>time</code>, <code>datetime-local</code>, <code>number</code>, <code>range</code>, and <code>color</code>.</p>
49065    ///     <p>Per the specifications, the <code>list</code> attribute is not supported by the <code>hidden</code>, <code>password</code>, <code>checkbox</code>, <code>radio</code>, <code>file</code>, or any of the button types.</p>
49066    ///     <p>Depending on the browser, the user may see a custom color palette suggested, tic marks along a range, or even an input that opens like a <a href="/en-US/docs/Web/HTML/Element/select"><code>&lt;select&gt;</code></a> but allows for non-listed values. Check out the <a href="/en-US/docs/Web/HTML/Element/datalist#browser_compatibility">browser compatibility table</a> for the other input types.</p>
49067    ///     <p>See the <a href="/en-US/docs/Web/HTML/Element/datalist"><code>&lt;datalist&gt;</code></a> element.</p>
49068    ///   
49069    pub list: core::option::Option<AttributeValueOwned>,
49070    ///
49071    ///     <p>Valid for <code>date</code>, <code>month</code>, <code>week</code>, <code>time</code>, <code>datetime-local</code>, <code>number</code>, and <code>range</code>, it defines the greatest value in the range of permitted values. If the <a href="#value"><code>value</code></a> entered into the element exceeds this, the element fails <a href="/en-US/docs/Web/HTML/Constraint_validation">constraint validation</a>. If the value of the <code>max</code> attribute isn't a number, then the element has no maximum value.</p>
49072    ///     <p>There is a special case: if the data type is periodic (such as for dates or times), the value of <code>max</code> may be lower than the value of <code>min</code>, which indicates that the range may wrap around; for example, this allows you to specify a time range from 10 PM to 4 AM.</p>
49073    ///   
49074    pub max: core::option::Option<AttributeValueOwned>,
49075    ///
49076    ///     <p>Valid for <code>text</code>, <code>search</code>, <code>url</code>, <code>tel</code>, <code>email</code>, and <code>password</code>, it defines the maximum number of characters (as UTF-16 code units) the user can enter into the field. This must be an integer value <code>0</code> or higher. If no <code>maxlength</code> is specified, or an invalid value is specified, the field has no maximum length. This value must also be greater than or equal to the value of <code>minlength</code>.</p>
49077    ///     <p>The input will fail <a href="/en-US/docs/Web/HTML/Constraint_validation">constraint validation</a> if the length of the text entered into the field is greater than <code>maxlength</code> UTF-16 code units long. By default, browsers prevent users from entering more characters than allowed by the <code>maxlength</code> attribute. See <a href="#client-side_validation">Client-side validation</a> for more information.</p>
49078    ///   
49079    pub maxlength: core::option::Option<AttributeValueOwned>,
49080    ///
49081    ///     <p>Valid for <code>date</code>, <code>month</code>, <code>week</code>, <code>time</code>, <code>datetime-local</code>, <code>number</code>, and <code>range</code>, it defines the most negative value in the range of permitted values. If the <a href="#value"><code>value</code></a> entered into the element is less than this, the element fails <a href="/en-US/docs/Web/HTML/Constraint_validation">constraint validation</a>. If the value of the <code>min</code> attribute isn't a number, then the element has no minimum value.</p>
49082    ///     <p>This value must be less than or equal to the value of the <code>max</code> attribute. If the <code>min</code> attribute is present but is not specified or is invalid, no <code>min</code> value is applied. If the <code>min</code> attribute is valid and a non-empty value is less than the minimum allowed by the <code>min</code> attribute, constraint validation will prevent form submission. See <a href="#client-side_validation">Client-side validation</a> for more information.</p>
49083    ///     <p>There is a special case: if the data type is periodic (such as for dates or times), the value of <code>max</code> may be lower than the value of <code>min</code>, which indicates that the range may wrap around; for example, this allows you to specify a time range from 10 PM to 4 AM.</p>
49084    ///   
49085    pub min: core::option::Option<AttributeValueOwned>,
49086    ///
49087    ///     <p>Valid for <code>text</code>, <code>search</code>, <code>url</code>, <code>tel</code>, <code>email</code>, and <code>password</code>, it defines the minimum number of characters (as UTF-16 code units) the user can enter into the entry field. This must be a non-negative integer value smaller than or equal to the value specified by <code>maxlength</code>. If no <code>minlength</code> is specified, or an invalid value is specified, the input has no minimum length.</p>
49088    ///     <p>The input will fail <a href="/en-US/docs/Web/HTML/Constraint_validation">constraint validation</a> if the length of the text entered into the field is fewer than <code>minlength</code> UTF-16 code units long, preventing form submission. See <a href="#client-side_validation">Client-side validation</a> for more information.</p>
49089    ///   
49090    pub minlength: core::option::Option<AttributeValueOwned>,
49091    ///
49092    ///     <p>The Boolean <code>multiple</code> attribute, if set, means the user can enter comma separated email addresses in the email widget or can choose more than one file with the <code>file</code> input. See the <a href="/en-US/docs/Web/HTML/Element/input/email">email</a> and <a href="/en-US/docs/Web/HTML/Element/input/file">file</a> input type.</p>
49093    ///   
49094    pub multiple: core::option::Option<AttributeValueOwned>,
49095    ///
49096    ///     <p>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.</p>
49097    ///     <p>Consider the <code>name</code> a required attribute (even though it's not). If an input has no <code>name</code> specified, or <code>name</code> 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.)</p>
49098    ///     <p>There are two special cases:</p>
49099    ///     <ol>
49100    ///       <li><code>_charset_</code> : If used as the name of an <code>&lt;input&gt;</code> element of type <a href="/en-US/docs/Web/HTML/Element/input/hidden">hidden</a>, the input's <code>value</code> is automatically set by the <a href="/en-US/docs/Glossary/User_agent">user agent</a> to the character encoding being used to submit the form.</li>
49101    ///       <li><code>isindex</code>: For historical reasons, the name <a class="external" target="_blank" href="https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fe-name"><code>isindex</code></a> is not allowed.</li>
49102    ///     </ol>
49103    ///     <p>The <a href="#name"><code>name</code></a> attribute creates a unique behavior for radio buttons.</p>
49104    ///     <p>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,</p>
49105    ///     <p>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.</p>
49106    ///     <p>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.</p>
49107    ///     <p>When an input element is given a <code>name</code>, that name becomes a property of the owning form element's <a href="/en-US/docs/Web/API/HTMLFormElement/elements"><code>HTMLFormElement.elements</code></a> property. If you have an input whose <code>name</code> is set to <code>guest</code> and another whose <code>name</code> is <code>hat-size</code>, the following code can be used:</p>
49108    ///     <div class="code-example"><pre class="brush: js notranslate"><code><span class="token keyword">let</span> form <span class="token operator">=</span> document<span class="token punctuation">.</span><span class="token function">querySelector</span><span class="token punctuation">(</span><span class="token string">"form"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
49109    ///
49110    /// <span class="token keyword">let</span> guestName <span class="token operator">=</span> form<span class="token punctuation">.</span>elements<span class="token punctuation">.</span>guest<span class="token punctuation">;</span>
49111    /// <span class="token keyword">let</span> hatSize <span class="token operator">=</span> form<span class="token punctuation">.</span>elements<span class="token punctuation">[</span><span class="token string">"hat-size"</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
49112    /// </code></pre></div>
49113    ///     <p>When this code has run, <code>guestName</code> will be the <a href="/en-US/docs/Web/API/HTMLInputElement"><code>HTMLInputElement</code></a> for the <code>guest</code> field, and <code>hatSize</code> the object for the <code>hat-size</code> field.</p>
49114    ///     <div class="notecard warning" id="sect6">
49115    ///       <p><strong>Warning:</strong> Avoid giving form elements a <code>name</code> 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.</p>
49116    ///     </div>
49117    ///   
49118    pub name: core::option::Option<AttributeValueOwned>,
49119    ///
49120    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
49121    ///   
49122    pub nonce: core::option::Option<AttributeValueOwned>,
49123    ///
49124    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
49125    ///   
49126    pub part: core::option::Option<AttributeValueOwned>,
49127    ///
49128    ///     <p>Valid for <code>text</code>, <code>search</code>, <code>url</code>, <code>tel</code>, <code>email</code>, and <code>password</code>, the <code>pattern</code> attribute defines a regular expression that the input's <a href="#value"><code>value</code></a> must match in order for the value to pass <a href="/en-US/docs/Web/HTML/Constraint_validation">constraint validation</a>. It must be a valid JavaScript regular expression, as used by the <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp"><code>RegExp</code></a> type, and as documented in our <a href="/en-US/docs/Web/JavaScript/Guide/Regular_expressions">guide on regular expressions</a>; the <code>'u'</code> flag is specified when compiling the regular expression, so that the pattern is treated as a sequence of Unicode code points, instead of as ASCII. No forward slashes should be specified around the pattern text.</p>
49129    ///     <p>If the <code>pattern</code> attribute is present but is not specified or is invalid, no regular expression is applied and this attribute is ignored completely. If the pattern attribute is valid and a non-empty value does not match the pattern, constraint validation will prevent form submission.</p>
49130    ///     <div id="sect7" class="notecard note">
49131    ///       <p><strong>Note:</strong> If using the <code>pattern</code> attribute, inform the user about the expected format by including explanatory text nearby. You can also include a <a href="#title"><code>title</code></a> attribute to explain what the requirements are to match the pattern; most browsers will display this title as a tooltip. The visible explanation is required for accessibility. The tooltip is an enhancement.</p>
49132    ///     </div>
49133    ///     <p>See <a href="#client-side_validation">Client-side validation</a> for more information.</p>
49134    ///   
49135    pub pattern: core::option::Option<AttributeValueOwned>,
49136    ///
49137    ///     <p>Valid for <code>text</code>, <code>search</code>, <code>url</code>, <code>tel</code>, <code>email</code>, <code>password</code>, and <code>number</code>, the <code>placeholder</code> attribute provides a brief hint to the user as to what kind of information is expected in the field. It should be a word or short phrase that provides a hint as to the expected type of data, rather than an explanation or prompt. The text <em>must not</em> include carriage returns or line feeds. So for example if a field is expected to capture a user's first name, and its label is "First Name", a suitable placeholder might be "e.g. Mustafa".</p>
49138    ///     <div id="sect8" class="notecard note">
49139    ///       <p><strong>Note:</strong> The <code>placeholder</code> attribute is not as semantically useful as other ways to explain your form, and can cause unexpected technical issues with your content. See <a href="#labels">Labels</a> for more information.</p>
49140    ///     </div>
49141    ///   
49142    pub placeholder: core::option::Option<AttributeValueOwned>,
49143    ///
49144    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
49145    ///   
49146    pub popover: core::option::Option<AttributeValueOwned>,
49147    ///
49148    ///     <p>A Boolean attribute which, if present, indicates that the user should not be able to edit the value of the input. The <code>readonly</code> attribute is supported by the <code>text</code>, <code>search</code>, <code>url</code>, <code>tel</code>, <code>email</code>, <code>date</code>, <code>month</code>, <code>week</code>, <code>time</code>, <code>datetime-local</code>, <code>number</code>, and <code>password</code> input types.</p>
49149    ///     <p>See the <a href="/en-US/docs/Web/HTML/Attributes/readonly">HTML attribute: <code>readonly</code></a> for more information.</p>
49150    ///   
49151    pub readonly: core::option::Option<AttributeValueOwned>,
49152    ///
49153    ///     <p><code>required</code> is a Boolean attribute which, if present, indicates that the user must specify a value for the input before the owning form can be submitted. The <code>required</code> attribute is supported by <code>text</code>, <code>search</code>, <code>url</code>, <code>tel</code>, <code>email</code>, <code>date</code>, <code>month</code>, <code>week</code>, <code>time</code>, <code>datetime-local</code>, <code>number</code>, <code>password</code>, <code>checkbox</code>, <code>radio</code>, and <code>file</code> inputs.</p>
49154    ///     <p>See <a href="#client-side_validation">Client-side validation</a> and the <a href="/en-US/docs/Web/HTML/Attributes/required">HTML attribute: <code>required</code></a> for more information.</p>
49155    ///   
49156    pub required: core::option::Option<AttributeValueOwned>,
49157    ///
49158    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
49159    ///   
49160    pub role: core::option::Option<AttributeValueOwned>,
49161    ///
49162    ///     <p>Valid for <code>email</code>, <code>password</code>, <code>tel</code>, <code>url</code>, and <code>text</code>, the <code>size</code> attribute specifies how much of the input is shown. Basically creates same result as setting CSS <a href="/en-US/docs/Web/CSS/width"><code>width</code></a> property with a few specialities. The actual unit of the value depends on the input type. For <code>password</code> and <code>text</code>, it is a number of characters (or <code>em</code> units) with a default value of <code>20</code>, and for others, it is pixels (or <code>px</code> units). CSS <code>width</code> takes precedence over the <code>size</code> attribute.</p>
49163    ///   
49164    pub size: core::option::Option<AttributeValueOwned>,
49165    ///
49166    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
49167    ///   
49168    pub slot: core::option::Option<AttributeValueOwned>,
49169    ///
49170    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
49171    ///     <ul>
49172    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
49173    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
49174    ///     </ul>
49175    ///   
49176    pub spellcheck: core::option::Option<AttributeValueOwned>,
49177    ///
49178    ///     <p>Valid for the <code>image</code> input button only, the <code>src</code> is string specifying the URL of the image file to display to represent the graphical submit button. See the <a href="/en-US/docs/Web/HTML/Element/input/image">image</a> input type.</p>
49179    ///   
49180    pub src: core::option::Option<AttributeValueOwned>,
49181    ///
49182    ///     <p>Valid for <code>date</code>, <code>month</code>, <code>week</code>, <code>time</code>, <code>datetime-local</code>, <code>number</code>, and <code>range</code>, the <a href="/en-US/docs/Web/HTML/Attributes/step"><code>step</code></a> attribute is a number that specifies the granularity that the value must adhere to.</p>
49183    ///     <p>If not explicitly included:</p>
49184    ///     <ul>
49185    ///       <li><code>step</code> defaults to 1 for <code>number</code> and <code>range</code>.</li>
49186    ///       <li>Each date/time input type has a default <code>step</code> value appropriate for the type; see the individual input pages: <a href="/en-US/docs/Web/HTML/Element/input/date#step"><code>date</code></a>, <a href="/en-US/docs/Web/HTML/Element/input/datetime-local#step"><code>datetime-local</code></a>, <a href="/en-US/docs/Web/HTML/Element/input/month#step"><code>month</code></a>, <a href="/en-US/docs/Web/HTML/Element/input/time#step"><code>time</code></a>, and <a href="/en-US/docs/Web/HTML/Element/input/week#step"><code>week</code></a>.</li>
49187    ///     </ul>
49188    ///     <p>The value must be a positive number—integer or float—or the special value <code>any</code>, which means no stepping is implied, and any value is allowed (barring other constraints, such as <a href="#min"><code>min</code></a> and <a href="#max"><code>max</code></a>).</p>
49189    ///     <p>If <code>any</code> is not explicitly set, valid values for the <code>number</code>, date/time input types, and <code>range</code> input types are equal to the basis for stepping — the <a href="#min"><code>min</code></a> value and increments of the step value, up to the <a href="#max"><code>max</code></a> value, if specified.</p>
49190    ///     <p>For example, if you have <code>&lt;input type="number" min="10" step="2"&gt;</code>, then any even integer, <code>10</code> or greater, is valid. If omitted, <code>&lt;input type="number"&gt;</code>, any integer is valid, but floats (like <code>4.2</code>) are not valid, because <code>step</code> defaults to <code>1</code>. For <code>4.2</code> to be valid, <code>step</code> would have had to be set to <code>any</code>, 0.1, 0.2, or any the <code>min</code> value would have had to be a number ending in <code>.2</code>, such as <code>&lt;input type="number" min="-5.2"&gt;</code></p>
49191    ///     <div class="notecard note" id="sect9">
49192    ///       <p><strong>Note:</strong> When the data entered by the user doesn't adhere to the stepping configuration, the value is considered invalid in constraint validation and will match the <code>:invalid</code> pseudoclass.</p>
49193    ///     </div>
49194    ///     <p>See <a href="#client-side_validation">Client-side validation</a> for more information.</p>
49195    ///   
49196    pub step: core::option::Option<AttributeValueOwned>,
49197    ///
49198    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
49199    ///   
49200    pub style: core::option::Option<AttributeValueOwned>,
49201    ///
49202    ///     <p>Global attribute valid for all elements, including all the input types, an integer attribute indicating if the element can take input focus (is focusable), if it should participate to sequential keyboard navigation. As all input types except for input of type hidden are focusable, this attribute should not be used on form controls, because doing so would require the management of the focus order for all elements within the document with the risk of harming usability and accessibility if done incorrectly.</p>
49203    ///   
49204    pub tabindex: core::option::Option<AttributeValueOwned>,
49205    ///
49206    ///     <p>Global attribute valid for all elements, including all input types, containing a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip. The title should NOT be used as the primary explanation of the purpose of the form control. Instead, use the <a href="/en-US/docs/Web/HTML/Element/label"><code>&lt;label&gt;</code></a> element with a <code>for</code> attribute set to the form control's <a href="#id"><code>id</code></a> attribute. See <a href="#labels">Labels</a> below.</p>
49207    ///   
49208    pub title: core::option::Option<AttributeValueOwned>,
49209    ///
49210    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
49211    ///     <ul>
49212    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
49213    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
49214    ///     </ul>
49215    ///   
49216    pub translate: core::option::Option<AttributeValueOwned>,
49217    ///
49218    ///     <p>A string specifying the type of control to render. For example, to create a checkbox, a value of <code>checkbox</code> is used. If omitted (or an unknown value is specified), the input type <code>text</code> is used, creating a plaintext input field.</p>
49219    ///     <p>Permitted values are listed in <a href="#input_types">Input types</a> above.</p>
49220    ///   
49221    pub type_: core::option::Option<AttributeValueOwned>,
49222    ///
49223    ///     <p>The input control's value. When specified in the HTML, this is the initial value, and from then on it can be altered or retrieved at any time using JavaScript to access the respective <a href="/en-US/docs/Web/API/HTMLInputElement"><code>HTMLInputElement</code></a> object's <code>value</code> property. The <code>value</code> attribute is always optional, though should be considered mandatory for <code>checkbox</code>, <code>radio</code>, and <code>hidden</code>.</p>
49224    ///   
49225    pub value: core::option::Option<AttributeValueOwned>,
49226    ///
49227    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
49228    ///     <ul>
49229    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
49230    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
49231    ///     </ul>
49232    ///   
49233    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
49234    ///
49235    ///     <p>Valid for the <code>image</code> input button only, the <code>width</code> is the width of the image file to display to represent the graphical submit button. See the <a href="/en-US/docs/Web/HTML/Element/input/image">image</a> input type.</p>
49236    ///   
49237    pub width: core::option::Option<AttributeValueOwned>,
49238}
49239#[allow(deprecated)]
49240#[cfg(feature = "alloc")]
49241impl InputOwned {
49242    /// Get the tag name of the element.
49243    /// This is the same as the name of the struct, in kebab-case.
49244    pub fn tag() -> &'static str {
49245        "input"
49246    }
49247    /// Sets an attribute of the element.
49248    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
49249    /// If the `alloc` feature is disabled, this function will silently fail.
49250    ///
49251    /// # Note
49252    /// This only works when the attribute is lowercase.
49253    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
49254        match name {
49255            "accept" => self.accept = Some(value.into()),
49256            "accesskey" => self.accesskey = Some(value.into()),
49257            "alt" => self.alt = Some(value.into()),
49258            "autocapitalize" => self.autocapitalize = Some(value.into()),
49259            "autocomplete" => self.autocomplete = Some(value.into()),
49260            "autofocus" => self.autofocus = Some(value.into()),
49261            "capture" => self.capture = Some(value.into()),
49262            "checked" => self.checked = Some(value.into()),
49263            "class" => self.class = Some(value.into()),
49264            "contenteditable" => self.contenteditable = Some(value.into()),
49265            "contextmenu" => self.contextmenu = Some(value.into()),
49266            "dir" => self.dir = Some(value.into()),
49267            "dirname" => self.dirname = Some(value.into()),
49268            "disabled" => self.disabled = Some(value.into()),
49269            "draggable" => self.draggable = Some(value.into()),
49270            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
49271            "exportparts" => self.exportparts = Some(value.into()),
49272            "form" => self.form = Some(value.into()),
49273            "formaction" => self.formaction = Some(value.into()),
49274            "formenctype" => self.formenctype = Some(value.into()),
49275            "formmethod" => self.formmethod = Some(value.into()),
49276            "formnovalidate" => self.formnovalidate = Some(value.into()),
49277            "formtarget" => self.formtarget = Some(value.into()),
49278            "height" => self.height = Some(value.into()),
49279            "hidden" => self.hidden = Some(value.into()),
49280            "id" => self.id = Some(value.into()),
49281            "inert" => self.inert = Some(value.into()),
49282            "inputmode" => self.inputmode = Some(value.into()),
49283            "is" => self.is = Some(value.into()),
49284            "itemid" => self.itemid = Some(value.into()),
49285            "itemprop" => self.itemprop = Some(value.into()),
49286            "itemref" => self.itemref = Some(value.into()),
49287            "itemscope" => self.itemscope = Some(value.into()),
49288            "itemtype" => self.itemtype = Some(value.into()),
49289            "lang" => self.lang = Some(value.into()),
49290            "list" => self.list = Some(value.into()),
49291            "max" => self.max = Some(value.into()),
49292            "maxlength" => self.maxlength = Some(value.into()),
49293            "min" => self.min = Some(value.into()),
49294            "minlength" => self.minlength = Some(value.into()),
49295            "multiple" => self.multiple = Some(value.into()),
49296            "name" => self.name = Some(value.into()),
49297            "nonce" => self.nonce = Some(value.into()),
49298            "part" => self.part = Some(value.into()),
49299            "pattern" => self.pattern = Some(value.into()),
49300            "placeholder" => self.placeholder = Some(value.into()),
49301            "popover" => self.popover = Some(value.into()),
49302            "readonly" => self.readonly = Some(value.into()),
49303            "required" => self.required = Some(value.into()),
49304            "role" => self.role = Some(value.into()),
49305            "size" => self.size = Some(value.into()),
49306            "slot" => self.slot = Some(value.into()),
49307            "spellcheck" => self.spellcheck = Some(value.into()),
49308            "src" => self.src = Some(value.into()),
49309            "step" => self.step = Some(value.into()),
49310            "style" => self.style = Some(value.into()),
49311            "tabindex" => self.tabindex = Some(value.into()),
49312            "title" => self.title = Some(value.into()),
49313            "translate" => self.translate = Some(value.into()),
49314            "type_" => self.type_ = Some(value.into()),
49315            "value" => self.value = Some(value.into()),
49316            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
49317            "width" => self.width = Some(value.into()),
49318            #[cfg(feature = "alloc")]
49319            _ => {
49320                #[allow(clippy::useless_conversion)]
49321                self.extra.insert(name.into(), value.into());
49322            }
49323            #[cfg(not(feature = "alloc"))]
49324            _ => {}
49325        }
49326    }
49327}
49328/// The <strong><code>&lt;label&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents a caption for an item in a user interface.
49329///
49330/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/label>
49331
49332#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
49333pub struct Label<'life> {
49334    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
49335    ///   
49336    pub accesskey: core::option::Option<AttributeValue<'life>>,
49337    ///
49338    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
49339    ///     <ul>
49340    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
49341    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
49342    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
49343    ///       <li><code>characters</code>, all letters should default to uppercase</li>
49344    ///     </ul>
49345    ///   
49346    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
49347    ///
49348    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
49349    ///   
49350    pub autofocus: core::option::Option<AttributeValue<'life>>,
49351    ///
49352    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
49353    ///   
49354    pub class: core::option::Option<AttributeValue<'life>>,
49355    ///
49356    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
49357    ///     <ul>
49358    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
49359    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
49360    ///     </ul>
49361    ///   
49362    pub contenteditable: core::option::Option<AttributeValue<'life>>,
49363    ///
49364    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
49365    ///   
49366    pub contextmenu: core::option::Option<AttributeValue<'life>>,
49367    ///
49368    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
49369    ///   
49370    #[cfg(feature = "alloc")]
49371    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
49372    ///
49373    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
49374    ///     <ul>
49375    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
49376    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
49377    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
49378    ///     </ul>
49379    ///   
49380    pub dir: core::option::Option<AttributeValue<'life>>,
49381    ///
49382    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
49383    ///     <ul>
49384    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
49385    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
49386    ///     </ul>
49387    ///   
49388    pub draggable: core::option::Option<AttributeValue<'life>>,
49389    ///
49390    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
49391    ///   
49392    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
49393    ///
49394    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
49395    ///   
49396    pub exportparts: core::option::Option<AttributeValue<'life>>,
49397    /// /// Extra attributes of the element.
49398
49399    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
49400    #[cfg(feature = "alloc")]
49401    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
49402    ///
49403    ///     <p>The value of the <code>for</code> attribute must be a single <a href="/en-US/docs/Web/HTML/Global_attributes#id"><code>id</code></a> for a <a href="/en-US/docs/Web/HTML/Content_categories#labelable">labelable</a> form-related element in the same document as the <code>&lt;label&gt;</code> element. So, any given <code>label</code> element can be associated with only one form control.</p>
49404    ///     <div class="notecard note" id="sect1">
49405    ///       <p><strong>Note:</strong> To programmatically set the <code>for</code> attribute, use <a href="/en-US/docs/Web/API/HTMLLabelElement/htmlFor"><code>htmlFor</code></a>.</p>
49406    ///     </div>
49407    ///     <p>The first element in the document with an <code>id</code> attribute matching the value of the <code>for</code> attribute is the <em>labeled control</em> for this <code>label</code> element — if the element with that <code>id</code> is actually a <a class="external" href="https://html.spec.whatwg.org/multipage/forms.html#category-label" target="_blank">labelable element</a>. If it is <em>not</em> a labelable element, then the <code>for</code> attribute has no effect. If there are other elements that also match the <code>id</code> value, later in the document, they are not considered.</p>
49408    ///     <p>Multiple <code>label</code> elements can be given the same value for their <code>for</code> attribute; doing so causes the associated form control (the form control that <code>for</code> value references) to have multiple labels.</p>
49409    ///     <div class="notecard note" id="sect2">
49410    ///       <p><strong>Note:</strong> A <code>&lt;label&gt;</code> element can have both a <code>for</code> attribute and a contained control element, as long as the <code>for</code> attribute points to the contained control element.</p>
49411    ///     </div>
49412    ///   
49413    pub for_: core::option::Option<AttributeValue<'life>>,
49414    ///
49415    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
49416    ///   
49417    pub hidden: core::option::Option<AttributeValue<'life>>,
49418    ///
49419    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
49420    ///   
49421    pub id: core::option::Option<AttributeValue<'life>>,
49422    ///
49423    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
49424    ///   
49425    pub inert: core::option::Option<AttributeValue<'life>>,
49426    ///
49427    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
49428    ///   
49429    pub inputmode: core::option::Option<AttributeValue<'life>>,
49430    ///
49431    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
49432    ///   
49433    pub is: core::option::Option<AttributeValue<'life>>,
49434    ///
49435    ///     <p>The unique, global identifier of an item.</p>
49436    ///   
49437    pub itemid: core::option::Option<AttributeValue<'life>>,
49438    ///
49439    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
49440    ///   
49441    pub itemprop: core::option::Option<AttributeValue<'life>>,
49442    ///
49443    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
49444    ///   
49445    pub itemref: core::option::Option<AttributeValue<'life>>,
49446    ///
49447    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
49448    ///   
49449    pub itemscope: core::option::Option<AttributeValue<'life>>,
49450    ///
49451    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
49452    ///   
49453    pub itemtype: core::option::Option<AttributeValue<'life>>,
49454    ///
49455    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
49456    ///   
49457    pub lang: core::option::Option<AttributeValue<'life>>,
49458    ///
49459    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
49460    ///   
49461    pub nonce: core::option::Option<AttributeValue<'life>>,
49462    ///
49463    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
49464    ///   
49465    pub part: core::option::Option<AttributeValue<'life>>,
49466    ///
49467    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
49468    ///   
49469    pub popover: core::option::Option<AttributeValue<'life>>,
49470    ///
49471    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
49472    ///   
49473    pub role: core::option::Option<AttributeValue<'life>>,
49474    ///
49475    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
49476    ///   
49477    pub slot: core::option::Option<AttributeValue<'life>>,
49478    ///
49479    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
49480    ///     <ul>
49481    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
49482    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
49483    ///     </ul>
49484    ///   
49485    pub spellcheck: core::option::Option<AttributeValue<'life>>,
49486    ///
49487    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
49488    ///   
49489    pub style: core::option::Option<AttributeValue<'life>>,
49490    ///
49491    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
49492    ///     <ul>
49493    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
49494    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
49495    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
49496    ///     </ul>
49497    ///   
49498    pub tabindex: core::option::Option<AttributeValue<'life>>,
49499    ///
49500    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
49501    ///   
49502    pub title: core::option::Option<AttributeValue<'life>>,
49503    ///
49504    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
49505    ///     <ul>
49506    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
49507    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
49508    ///     </ul>
49509    ///   
49510    pub translate: core::option::Option<AttributeValue<'life>>,
49511    ///
49512    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
49513    ///     <ul>
49514    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
49515    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
49516    ///     </ul>
49517    ///   
49518    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
49519}
49520#[allow(deprecated)]
49521
49522impl<'life> Label<'life> {
49523    /// Get the tag name of the element.
49524    /// This is the same as the name of the struct, in kebab-case.
49525    pub fn tag() -> &'static str {
49526        "label"
49527    }
49528    /// Sets an attribute of the element.
49529    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
49530    /// If the `alloc` feature is disabled, this function will silently fail.
49531    ///
49532    /// # Note
49533    /// This only works when the attribute is lowercase.
49534    pub fn set_attr(
49535        &mut self,
49536        name: &'life str,
49537        value: impl core::convert::Into<AttributeValue<'life>>,
49538    ) {
49539        match name {
49540            "accesskey" => self.accesskey = Some(value.into()),
49541            "autocapitalize" => self.autocapitalize = Some(value.into()),
49542            "autofocus" => self.autofocus = Some(value.into()),
49543            "class" => self.class = Some(value.into()),
49544            "contenteditable" => self.contenteditable = Some(value.into()),
49545            "contextmenu" => self.contextmenu = Some(value.into()),
49546            "dir" => self.dir = Some(value.into()),
49547            "draggable" => self.draggable = Some(value.into()),
49548            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
49549            "exportparts" => self.exportparts = Some(value.into()),
49550            "for_" => self.for_ = Some(value.into()),
49551            "hidden" => self.hidden = Some(value.into()),
49552            "id" => self.id = Some(value.into()),
49553            "inert" => self.inert = Some(value.into()),
49554            "inputmode" => self.inputmode = Some(value.into()),
49555            "is" => self.is = Some(value.into()),
49556            "itemid" => self.itemid = Some(value.into()),
49557            "itemprop" => self.itemprop = Some(value.into()),
49558            "itemref" => self.itemref = Some(value.into()),
49559            "itemscope" => self.itemscope = Some(value.into()),
49560            "itemtype" => self.itemtype = Some(value.into()),
49561            "lang" => self.lang = Some(value.into()),
49562            "nonce" => self.nonce = Some(value.into()),
49563            "part" => self.part = Some(value.into()),
49564            "popover" => self.popover = Some(value.into()),
49565            "role" => self.role = Some(value.into()),
49566            "slot" => self.slot = Some(value.into()),
49567            "spellcheck" => self.spellcheck = Some(value.into()),
49568            "style" => self.style = Some(value.into()),
49569            "tabindex" => self.tabindex = Some(value.into()),
49570            "title" => self.title = Some(value.into()),
49571            "translate" => self.translate = Some(value.into()),
49572            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
49573            #[cfg(feature = "alloc")]
49574            _ => {
49575                #[allow(clippy::useless_conversion)]
49576                self.extra.insert(name.into(), value.into());
49577            }
49578            #[cfg(not(feature = "alloc"))]
49579            _ => {}
49580        }
49581    }
49582}
49583/// The <strong><code>&lt;label&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents a caption for an item in a user interface.
49584///
49585/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/label>
49586
49587#[cfg(feature = "alloc")]
49588#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
49589pub struct LabelOwned {
49590    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
49591    ///   
49592    pub accesskey: core::option::Option<AttributeValueOwned>,
49593    ///
49594    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
49595    ///     <ul>
49596    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
49597    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
49598    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
49599    ///       <li><code>characters</code>, all letters should default to uppercase</li>
49600    ///     </ul>
49601    ///   
49602    pub autocapitalize: core::option::Option<AttributeValueOwned>,
49603    ///
49604    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
49605    ///   
49606    pub autofocus: core::option::Option<AttributeValueOwned>,
49607    ///
49608    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
49609    ///   
49610    pub class: core::option::Option<AttributeValueOwned>,
49611    ///
49612    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
49613    ///     <ul>
49614    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
49615    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
49616    ///     </ul>
49617    ///   
49618    pub contenteditable: core::option::Option<AttributeValueOwned>,
49619    ///
49620    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
49621    ///   
49622    pub contextmenu: core::option::Option<AttributeValueOwned>,
49623    ///
49624    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
49625    ///   
49626    #[cfg(feature = "alloc")]
49627    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
49628    ///
49629    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
49630    ///     <ul>
49631    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
49632    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
49633    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
49634    ///     </ul>
49635    ///   
49636    pub dir: core::option::Option<AttributeValueOwned>,
49637    ///
49638    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
49639    ///     <ul>
49640    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
49641    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
49642    ///     </ul>
49643    ///   
49644    pub draggable: core::option::Option<AttributeValueOwned>,
49645    ///
49646    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
49647    ///   
49648    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
49649    ///
49650    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
49651    ///   
49652    pub exportparts: core::option::Option<AttributeValueOwned>,
49653    /// /// Extra attributes of the element.
49654
49655    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
49656    #[cfg(feature = "alloc")]
49657    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
49658    ///
49659    ///     <p>The value of the <code>for</code> attribute must be a single <a href="/en-US/docs/Web/HTML/Global_attributes#id"><code>id</code></a> for a <a href="/en-US/docs/Web/HTML/Content_categories#labelable">labelable</a> form-related element in the same document as the <code>&lt;label&gt;</code> element. So, any given <code>label</code> element can be associated with only one form control.</p>
49660    ///     <div class="notecard note" id="sect1">
49661    ///       <p><strong>Note:</strong> To programmatically set the <code>for</code> attribute, use <a href="/en-US/docs/Web/API/HTMLLabelElement/htmlFor"><code>htmlFor</code></a>.</p>
49662    ///     </div>
49663    ///     <p>The first element in the document with an <code>id</code> attribute matching the value of the <code>for</code> attribute is the <em>labeled control</em> for this <code>label</code> element — if the element with that <code>id</code> is actually a <a class="external" href="https://html.spec.whatwg.org/multipage/forms.html#category-label" target="_blank">labelable element</a>. If it is <em>not</em> a labelable element, then the <code>for</code> attribute has no effect. If there are other elements that also match the <code>id</code> value, later in the document, they are not considered.</p>
49664    ///     <p>Multiple <code>label</code> elements can be given the same value for their <code>for</code> attribute; doing so causes the associated form control (the form control that <code>for</code> value references) to have multiple labels.</p>
49665    ///     <div class="notecard note" id="sect2">
49666    ///       <p><strong>Note:</strong> A <code>&lt;label&gt;</code> element can have both a <code>for</code> attribute and a contained control element, as long as the <code>for</code> attribute points to the contained control element.</p>
49667    ///     </div>
49668    ///   
49669    pub for_: core::option::Option<AttributeValueOwned>,
49670    ///
49671    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
49672    ///   
49673    pub hidden: core::option::Option<AttributeValueOwned>,
49674    ///
49675    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
49676    ///   
49677    pub id: core::option::Option<AttributeValueOwned>,
49678    ///
49679    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
49680    ///   
49681    pub inert: core::option::Option<AttributeValueOwned>,
49682    ///
49683    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
49684    ///   
49685    pub inputmode: core::option::Option<AttributeValueOwned>,
49686    ///
49687    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
49688    ///   
49689    pub is: core::option::Option<AttributeValueOwned>,
49690    ///
49691    ///     <p>The unique, global identifier of an item.</p>
49692    ///   
49693    pub itemid: core::option::Option<AttributeValueOwned>,
49694    ///
49695    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
49696    ///   
49697    pub itemprop: core::option::Option<AttributeValueOwned>,
49698    ///
49699    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
49700    ///   
49701    pub itemref: core::option::Option<AttributeValueOwned>,
49702    ///
49703    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
49704    ///   
49705    pub itemscope: core::option::Option<AttributeValueOwned>,
49706    ///
49707    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
49708    ///   
49709    pub itemtype: core::option::Option<AttributeValueOwned>,
49710    ///
49711    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
49712    ///   
49713    pub lang: core::option::Option<AttributeValueOwned>,
49714    ///
49715    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
49716    ///   
49717    pub nonce: core::option::Option<AttributeValueOwned>,
49718    ///
49719    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
49720    ///   
49721    pub part: core::option::Option<AttributeValueOwned>,
49722    ///
49723    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
49724    ///   
49725    pub popover: core::option::Option<AttributeValueOwned>,
49726    ///
49727    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
49728    ///   
49729    pub role: core::option::Option<AttributeValueOwned>,
49730    ///
49731    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
49732    ///   
49733    pub slot: core::option::Option<AttributeValueOwned>,
49734    ///
49735    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
49736    ///     <ul>
49737    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
49738    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
49739    ///     </ul>
49740    ///   
49741    pub spellcheck: core::option::Option<AttributeValueOwned>,
49742    ///
49743    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
49744    ///   
49745    pub style: core::option::Option<AttributeValueOwned>,
49746    ///
49747    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
49748    ///     <ul>
49749    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
49750    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
49751    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
49752    ///     </ul>
49753    ///   
49754    pub tabindex: core::option::Option<AttributeValueOwned>,
49755    ///
49756    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
49757    ///   
49758    pub title: core::option::Option<AttributeValueOwned>,
49759    ///
49760    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
49761    ///     <ul>
49762    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
49763    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
49764    ///     </ul>
49765    ///   
49766    pub translate: core::option::Option<AttributeValueOwned>,
49767    ///
49768    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
49769    ///     <ul>
49770    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
49771    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
49772    ///     </ul>
49773    ///   
49774    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
49775}
49776#[allow(deprecated)]
49777#[cfg(feature = "alloc")]
49778impl LabelOwned {
49779    /// Get the tag name of the element.
49780    /// This is the same as the name of the struct, in kebab-case.
49781    pub fn tag() -> &'static str {
49782        "label"
49783    }
49784    /// Sets an attribute of the element.
49785    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
49786    /// If the `alloc` feature is disabled, this function will silently fail.
49787    ///
49788    /// # Note
49789    /// This only works when the attribute is lowercase.
49790    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
49791        match name {
49792            "accesskey" => self.accesskey = Some(value.into()),
49793            "autocapitalize" => self.autocapitalize = Some(value.into()),
49794            "autofocus" => self.autofocus = Some(value.into()),
49795            "class" => self.class = Some(value.into()),
49796            "contenteditable" => self.contenteditable = Some(value.into()),
49797            "contextmenu" => self.contextmenu = Some(value.into()),
49798            "dir" => self.dir = Some(value.into()),
49799            "draggable" => self.draggable = Some(value.into()),
49800            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
49801            "exportparts" => self.exportparts = Some(value.into()),
49802            "for_" => self.for_ = Some(value.into()),
49803            "hidden" => self.hidden = Some(value.into()),
49804            "id" => self.id = Some(value.into()),
49805            "inert" => self.inert = Some(value.into()),
49806            "inputmode" => self.inputmode = Some(value.into()),
49807            "is" => self.is = Some(value.into()),
49808            "itemid" => self.itemid = Some(value.into()),
49809            "itemprop" => self.itemprop = Some(value.into()),
49810            "itemref" => self.itemref = Some(value.into()),
49811            "itemscope" => self.itemscope = Some(value.into()),
49812            "itemtype" => self.itemtype = Some(value.into()),
49813            "lang" => self.lang = Some(value.into()),
49814            "nonce" => self.nonce = Some(value.into()),
49815            "part" => self.part = Some(value.into()),
49816            "popover" => self.popover = Some(value.into()),
49817            "role" => self.role = Some(value.into()),
49818            "slot" => self.slot = Some(value.into()),
49819            "spellcheck" => self.spellcheck = Some(value.into()),
49820            "style" => self.style = Some(value.into()),
49821            "tabindex" => self.tabindex = Some(value.into()),
49822            "title" => self.title = Some(value.into()),
49823            "translate" => self.translate = Some(value.into()),
49824            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
49825            #[cfg(feature = "alloc")]
49826            _ => {
49827                #[allow(clippy::useless_conversion)]
49828                self.extra.insert(name.into(), value.into());
49829            }
49830            #[cfg(not(feature = "alloc"))]
49831            _ => {}
49832        }
49833    }
49834}
49835/// The <strong><code>&lt;legend&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents a caption for the content of its parent <a href="/en-US/docs/Web/HTML/Element/fieldset"><code>&lt;fieldset&gt;</code></a>.
49836///
49837/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/legend>
49838
49839#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
49840pub struct Legend<'life> {
49841    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
49842    ///   
49843    pub accesskey: core::option::Option<AttributeValue<'life>>,
49844    ///
49845    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
49846    ///     <ul>
49847    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
49848    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
49849    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
49850    ///       <li><code>characters</code>, all letters should default to uppercase</li>
49851    ///     </ul>
49852    ///   
49853    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
49854    ///
49855    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
49856    ///   
49857    pub autofocus: core::option::Option<AttributeValue<'life>>,
49858    ///
49859    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
49860    ///   
49861    pub class: core::option::Option<AttributeValue<'life>>,
49862    ///
49863    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
49864    ///     <ul>
49865    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
49866    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
49867    ///     </ul>
49868    ///   
49869    pub contenteditable: core::option::Option<AttributeValue<'life>>,
49870    ///
49871    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
49872    ///   
49873    pub contextmenu: core::option::Option<AttributeValue<'life>>,
49874    ///
49875    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
49876    ///   
49877    #[cfg(feature = "alloc")]
49878    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
49879    ///
49880    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
49881    ///     <ul>
49882    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
49883    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
49884    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
49885    ///     </ul>
49886    ///   
49887    pub dir: core::option::Option<AttributeValue<'life>>,
49888    ///
49889    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
49890    ///     <ul>
49891    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
49892    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
49893    ///     </ul>
49894    ///   
49895    pub draggable: core::option::Option<AttributeValue<'life>>,
49896    ///
49897    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
49898    ///   
49899    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
49900    ///
49901    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
49902    ///   
49903    pub exportparts: core::option::Option<AttributeValue<'life>>,
49904    /// /// Extra attributes of the element.
49905
49906    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
49907    #[cfg(feature = "alloc")]
49908    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
49909    ///
49910    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
49911    ///   
49912    pub hidden: core::option::Option<AttributeValue<'life>>,
49913    ///
49914    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
49915    ///   
49916    pub id: core::option::Option<AttributeValue<'life>>,
49917    ///
49918    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
49919    ///   
49920    pub inert: core::option::Option<AttributeValue<'life>>,
49921    ///
49922    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
49923    ///   
49924    pub inputmode: core::option::Option<AttributeValue<'life>>,
49925    ///
49926    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
49927    ///   
49928    pub is: core::option::Option<AttributeValue<'life>>,
49929    ///
49930    ///     <p>The unique, global identifier of an item.</p>
49931    ///   
49932    pub itemid: core::option::Option<AttributeValue<'life>>,
49933    ///
49934    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
49935    ///   
49936    pub itemprop: core::option::Option<AttributeValue<'life>>,
49937    ///
49938    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
49939    ///   
49940    pub itemref: core::option::Option<AttributeValue<'life>>,
49941    ///
49942    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
49943    ///   
49944    pub itemscope: core::option::Option<AttributeValue<'life>>,
49945    ///
49946    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
49947    ///   
49948    pub itemtype: core::option::Option<AttributeValue<'life>>,
49949    ///
49950    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
49951    ///   
49952    pub lang: core::option::Option<AttributeValue<'life>>,
49953    ///
49954    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
49955    ///   
49956    pub nonce: core::option::Option<AttributeValue<'life>>,
49957    ///
49958    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
49959    ///   
49960    pub part: core::option::Option<AttributeValue<'life>>,
49961    ///
49962    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
49963    ///   
49964    pub popover: core::option::Option<AttributeValue<'life>>,
49965    ///
49966    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
49967    ///   
49968    pub role: core::option::Option<AttributeValue<'life>>,
49969    ///
49970    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
49971    ///   
49972    pub slot: core::option::Option<AttributeValue<'life>>,
49973    ///
49974    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
49975    ///     <ul>
49976    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
49977    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
49978    ///     </ul>
49979    ///   
49980    pub spellcheck: core::option::Option<AttributeValue<'life>>,
49981    ///
49982    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
49983    ///   
49984    pub style: core::option::Option<AttributeValue<'life>>,
49985    ///
49986    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
49987    ///     <ul>
49988    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
49989    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
49990    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
49991    ///     </ul>
49992    ///   
49993    pub tabindex: core::option::Option<AttributeValue<'life>>,
49994    ///
49995    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
49996    ///   
49997    pub title: core::option::Option<AttributeValue<'life>>,
49998    ///
49999    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
50000    ///     <ul>
50001    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
50002    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
50003    ///     </ul>
50004    ///   
50005    pub translate: core::option::Option<AttributeValue<'life>>,
50006    ///
50007    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
50008    ///     <ul>
50009    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
50010    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
50011    ///     </ul>
50012    ///   
50013    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
50014}
50015#[allow(deprecated)]
50016
50017impl<'life> Legend<'life> {
50018    /// Get the tag name of the element.
50019    /// This is the same as the name of the struct, in kebab-case.
50020    pub fn tag() -> &'static str {
50021        "legend"
50022    }
50023    /// Sets an attribute of the element.
50024    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
50025    /// If the `alloc` feature is disabled, this function will silently fail.
50026    ///
50027    /// # Note
50028    /// This only works when the attribute is lowercase.
50029    pub fn set_attr(
50030        &mut self,
50031        name: &'life str,
50032        value: impl core::convert::Into<AttributeValue<'life>>,
50033    ) {
50034        match name {
50035            "accesskey" => self.accesskey = Some(value.into()),
50036            "autocapitalize" => self.autocapitalize = Some(value.into()),
50037            "autofocus" => self.autofocus = Some(value.into()),
50038            "class" => self.class = Some(value.into()),
50039            "contenteditable" => self.contenteditable = Some(value.into()),
50040            "contextmenu" => self.contextmenu = Some(value.into()),
50041            "dir" => self.dir = Some(value.into()),
50042            "draggable" => self.draggable = Some(value.into()),
50043            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
50044            "exportparts" => self.exportparts = Some(value.into()),
50045            "hidden" => self.hidden = Some(value.into()),
50046            "id" => self.id = Some(value.into()),
50047            "inert" => self.inert = Some(value.into()),
50048            "inputmode" => self.inputmode = Some(value.into()),
50049            "is" => self.is = Some(value.into()),
50050            "itemid" => self.itemid = Some(value.into()),
50051            "itemprop" => self.itemprop = Some(value.into()),
50052            "itemref" => self.itemref = Some(value.into()),
50053            "itemscope" => self.itemscope = Some(value.into()),
50054            "itemtype" => self.itemtype = Some(value.into()),
50055            "lang" => self.lang = Some(value.into()),
50056            "nonce" => self.nonce = Some(value.into()),
50057            "part" => self.part = Some(value.into()),
50058            "popover" => self.popover = Some(value.into()),
50059            "role" => self.role = Some(value.into()),
50060            "slot" => self.slot = Some(value.into()),
50061            "spellcheck" => self.spellcheck = Some(value.into()),
50062            "style" => self.style = Some(value.into()),
50063            "tabindex" => self.tabindex = Some(value.into()),
50064            "title" => self.title = Some(value.into()),
50065            "translate" => self.translate = Some(value.into()),
50066            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
50067            #[cfg(feature = "alloc")]
50068            _ => {
50069                #[allow(clippy::useless_conversion)]
50070                self.extra.insert(name.into(), value.into());
50071            }
50072            #[cfg(not(feature = "alloc"))]
50073            _ => {}
50074        }
50075    }
50076}
50077/// The <strong><code>&lt;legend&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents a caption for the content of its parent <a href="/en-US/docs/Web/HTML/Element/fieldset"><code>&lt;fieldset&gt;</code></a>.
50078///
50079/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/legend>
50080
50081#[cfg(feature = "alloc")]
50082#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
50083pub struct LegendOwned {
50084    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
50085    ///   
50086    pub accesskey: core::option::Option<AttributeValueOwned>,
50087    ///
50088    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
50089    ///     <ul>
50090    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
50091    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
50092    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
50093    ///       <li><code>characters</code>, all letters should default to uppercase</li>
50094    ///     </ul>
50095    ///   
50096    pub autocapitalize: core::option::Option<AttributeValueOwned>,
50097    ///
50098    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
50099    ///   
50100    pub autofocus: core::option::Option<AttributeValueOwned>,
50101    ///
50102    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
50103    ///   
50104    pub class: core::option::Option<AttributeValueOwned>,
50105    ///
50106    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
50107    ///     <ul>
50108    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
50109    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
50110    ///     </ul>
50111    ///   
50112    pub contenteditable: core::option::Option<AttributeValueOwned>,
50113    ///
50114    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
50115    ///   
50116    pub contextmenu: core::option::Option<AttributeValueOwned>,
50117    ///
50118    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
50119    ///   
50120    #[cfg(feature = "alloc")]
50121    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
50122    ///
50123    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
50124    ///     <ul>
50125    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
50126    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
50127    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
50128    ///     </ul>
50129    ///   
50130    pub dir: core::option::Option<AttributeValueOwned>,
50131    ///
50132    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
50133    ///     <ul>
50134    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
50135    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
50136    ///     </ul>
50137    ///   
50138    pub draggable: core::option::Option<AttributeValueOwned>,
50139    ///
50140    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
50141    ///   
50142    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
50143    ///
50144    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
50145    ///   
50146    pub exportparts: core::option::Option<AttributeValueOwned>,
50147    /// /// Extra attributes of the element.
50148
50149    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
50150    #[cfg(feature = "alloc")]
50151    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
50152    ///
50153    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
50154    ///   
50155    pub hidden: core::option::Option<AttributeValueOwned>,
50156    ///
50157    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
50158    ///   
50159    pub id: core::option::Option<AttributeValueOwned>,
50160    ///
50161    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
50162    ///   
50163    pub inert: core::option::Option<AttributeValueOwned>,
50164    ///
50165    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
50166    ///   
50167    pub inputmode: core::option::Option<AttributeValueOwned>,
50168    ///
50169    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
50170    ///   
50171    pub is: core::option::Option<AttributeValueOwned>,
50172    ///
50173    ///     <p>The unique, global identifier of an item.</p>
50174    ///   
50175    pub itemid: core::option::Option<AttributeValueOwned>,
50176    ///
50177    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
50178    ///   
50179    pub itemprop: core::option::Option<AttributeValueOwned>,
50180    ///
50181    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
50182    ///   
50183    pub itemref: core::option::Option<AttributeValueOwned>,
50184    ///
50185    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
50186    ///   
50187    pub itemscope: core::option::Option<AttributeValueOwned>,
50188    ///
50189    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
50190    ///   
50191    pub itemtype: core::option::Option<AttributeValueOwned>,
50192    ///
50193    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
50194    ///   
50195    pub lang: core::option::Option<AttributeValueOwned>,
50196    ///
50197    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
50198    ///   
50199    pub nonce: core::option::Option<AttributeValueOwned>,
50200    ///
50201    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
50202    ///   
50203    pub part: core::option::Option<AttributeValueOwned>,
50204    ///
50205    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
50206    ///   
50207    pub popover: core::option::Option<AttributeValueOwned>,
50208    ///
50209    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
50210    ///   
50211    pub role: core::option::Option<AttributeValueOwned>,
50212    ///
50213    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
50214    ///   
50215    pub slot: core::option::Option<AttributeValueOwned>,
50216    ///
50217    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
50218    ///     <ul>
50219    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
50220    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
50221    ///     </ul>
50222    ///   
50223    pub spellcheck: core::option::Option<AttributeValueOwned>,
50224    ///
50225    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
50226    ///   
50227    pub style: core::option::Option<AttributeValueOwned>,
50228    ///
50229    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
50230    ///     <ul>
50231    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
50232    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
50233    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
50234    ///     </ul>
50235    ///   
50236    pub tabindex: core::option::Option<AttributeValueOwned>,
50237    ///
50238    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
50239    ///   
50240    pub title: core::option::Option<AttributeValueOwned>,
50241    ///
50242    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
50243    ///     <ul>
50244    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
50245    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
50246    ///     </ul>
50247    ///   
50248    pub translate: core::option::Option<AttributeValueOwned>,
50249    ///
50250    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
50251    ///     <ul>
50252    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
50253    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
50254    ///     </ul>
50255    ///   
50256    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
50257}
50258#[allow(deprecated)]
50259#[cfg(feature = "alloc")]
50260impl LegendOwned {
50261    /// Get the tag name of the element.
50262    /// This is the same as the name of the struct, in kebab-case.
50263    pub fn tag() -> &'static str {
50264        "legend"
50265    }
50266    /// Sets an attribute of the element.
50267    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
50268    /// If the `alloc` feature is disabled, this function will silently fail.
50269    ///
50270    /// # Note
50271    /// This only works when the attribute is lowercase.
50272    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
50273        match name {
50274            "accesskey" => self.accesskey = Some(value.into()),
50275            "autocapitalize" => self.autocapitalize = Some(value.into()),
50276            "autofocus" => self.autofocus = Some(value.into()),
50277            "class" => self.class = Some(value.into()),
50278            "contenteditable" => self.contenteditable = Some(value.into()),
50279            "contextmenu" => self.contextmenu = Some(value.into()),
50280            "dir" => self.dir = Some(value.into()),
50281            "draggable" => self.draggable = Some(value.into()),
50282            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
50283            "exportparts" => self.exportparts = Some(value.into()),
50284            "hidden" => self.hidden = Some(value.into()),
50285            "id" => self.id = Some(value.into()),
50286            "inert" => self.inert = Some(value.into()),
50287            "inputmode" => self.inputmode = Some(value.into()),
50288            "is" => self.is = Some(value.into()),
50289            "itemid" => self.itemid = Some(value.into()),
50290            "itemprop" => self.itemprop = Some(value.into()),
50291            "itemref" => self.itemref = Some(value.into()),
50292            "itemscope" => self.itemscope = Some(value.into()),
50293            "itemtype" => self.itemtype = Some(value.into()),
50294            "lang" => self.lang = Some(value.into()),
50295            "nonce" => self.nonce = Some(value.into()),
50296            "part" => self.part = Some(value.into()),
50297            "popover" => self.popover = Some(value.into()),
50298            "role" => self.role = Some(value.into()),
50299            "slot" => self.slot = Some(value.into()),
50300            "spellcheck" => self.spellcheck = Some(value.into()),
50301            "style" => self.style = Some(value.into()),
50302            "tabindex" => self.tabindex = Some(value.into()),
50303            "title" => self.title = Some(value.into()),
50304            "translate" => self.translate = Some(value.into()),
50305            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
50306            #[cfg(feature = "alloc")]
50307            _ => {
50308                #[allow(clippy::useless_conversion)]
50309                self.extra.insert(name.into(), value.into());
50310            }
50311            #[cfg(not(feature = "alloc"))]
50312            _ => {}
50313        }
50314    }
50315}
50316/// The <strong><code>&lt;meter&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents either a scalar value within a known range or a fractional value.
50317///
50318/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meter>
50319
50320#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
50321pub struct Meter<'life> {
50322    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
50323    ///   
50324    pub accesskey: core::option::Option<AttributeValue<'life>>,
50325    ///
50326    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
50327    ///     <ul>
50328    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
50329    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
50330    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
50331    ///       <li><code>characters</code>, all letters should default to uppercase</li>
50332    ///     </ul>
50333    ///   
50334    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
50335    ///
50336    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
50337    ///   
50338    pub autofocus: core::option::Option<AttributeValue<'life>>,
50339    ///
50340    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
50341    ///   
50342    pub class: core::option::Option<AttributeValue<'life>>,
50343    ///
50344    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
50345    ///     <ul>
50346    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
50347    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
50348    ///     </ul>
50349    ///   
50350    pub contenteditable: core::option::Option<AttributeValue<'life>>,
50351    ///
50352    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
50353    ///   
50354    pub contextmenu: core::option::Option<AttributeValue<'life>>,
50355    ///
50356    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
50357    ///   
50358    #[cfg(feature = "alloc")]
50359    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
50360    ///
50361    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
50362    ///     <ul>
50363    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
50364    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
50365    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
50366    ///     </ul>
50367    ///   
50368    pub dir: core::option::Option<AttributeValue<'life>>,
50369    ///
50370    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
50371    ///     <ul>
50372    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
50373    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
50374    ///     </ul>
50375    ///   
50376    pub draggable: core::option::Option<AttributeValue<'life>>,
50377    ///
50378    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
50379    ///   
50380    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
50381    ///
50382    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
50383    ///   
50384    pub exportparts: core::option::Option<AttributeValue<'life>>,
50385    /// /// Extra attributes of the element.
50386
50387    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
50388    #[cfg(feature = "alloc")]
50389    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
50390    ///
50391    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
50392    ///   
50393    pub hidden: core::option::Option<AttributeValue<'life>>,
50394    ///
50395    ///     <p>The lower numeric bound of the high end of the measured range. This must be less than the maximum value (<code>max</code> attribute), and it also must be greater than the low value and minimum value (<code>low</code> attribute and <code>min</code> attribute, respectively), if any are specified. If unspecified, or if greater than the maximum value, the <code>high</code> value is equal to the maximum value.</p>
50396    ///   
50397    pub high: core::option::Option<AttributeValue<'life>>,
50398    ///
50399    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
50400    ///   
50401    pub id: core::option::Option<AttributeValue<'life>>,
50402    ///
50403    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
50404    ///   
50405    pub inert: core::option::Option<AttributeValue<'life>>,
50406    ///
50407    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
50408    ///   
50409    pub inputmode: core::option::Option<AttributeValue<'life>>,
50410    ///
50411    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
50412    ///   
50413    pub is: core::option::Option<AttributeValue<'life>>,
50414    ///
50415    ///     <p>The unique, global identifier of an item.</p>
50416    ///   
50417    pub itemid: core::option::Option<AttributeValue<'life>>,
50418    ///
50419    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
50420    ///   
50421    pub itemprop: core::option::Option<AttributeValue<'life>>,
50422    ///
50423    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
50424    ///   
50425    pub itemref: core::option::Option<AttributeValue<'life>>,
50426    ///
50427    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
50428    ///   
50429    pub itemscope: core::option::Option<AttributeValue<'life>>,
50430    ///
50431    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
50432    ///   
50433    pub itemtype: core::option::Option<AttributeValue<'life>>,
50434    ///
50435    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
50436    ///   
50437    pub lang: core::option::Option<AttributeValue<'life>>,
50438    ///
50439    ///     <p>The upper numeric bound of the low end of the measured range. This must be greater than the minimum value (<code>min</code> attribute), and it also must be less than the high value and maximum value (<code>high</code> attribute and <code>max</code> attribute, respectively), if any are specified. If unspecified, or if less than the minimum value, the <code>low</code> value is equal to the minimum value.</p>
50440    ///   
50441    pub low: core::option::Option<AttributeValue<'life>>,
50442    ///
50443    ///     <p>The upper numeric bound of the measured range. This must be greater than the minimum value (<code>min</code> attribute), if specified. If unspecified, the maximum value is <code>1</code>.</p>
50444    ///   
50445    pub max: core::option::Option<AttributeValue<'life>>,
50446    ///
50447    ///     <p>The lower numeric bound of the measured range. This must be less than the maximum value (<code>max</code> attribute), if specified. If unspecified, the minimum value is <code>0</code>.</p>
50448    ///   
50449    pub min: core::option::Option<AttributeValue<'life>>,
50450    ///
50451    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
50452    ///   
50453    pub nonce: core::option::Option<AttributeValue<'life>>,
50454    ///
50455    ///     <p>This attribute indicates the optimal numeric value. It must be within the range (as defined by the <code>min</code> attribute and <code>max</code> attribute). When used with the <code>low</code> attribute and <code>high</code> attribute, it gives an indication where along the range is considered preferable. For example, if it is between the <code>min</code> attribute and the <code>low</code> attribute, then the lower range is considered preferred. The browser may color the meter's bar differently depending on whether the value is less than or equal to the optimum value.</p>
50456    ///   
50457    pub optimum: core::option::Option<AttributeValue<'life>>,
50458    ///
50459    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
50460    ///   
50461    pub part: core::option::Option<AttributeValue<'life>>,
50462    ///
50463    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
50464    ///   
50465    pub popover: core::option::Option<AttributeValue<'life>>,
50466    ///
50467    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
50468    ///   
50469    pub role: core::option::Option<AttributeValue<'life>>,
50470    ///
50471    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
50472    ///   
50473    pub slot: core::option::Option<AttributeValue<'life>>,
50474    ///
50475    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
50476    ///     <ul>
50477    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
50478    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
50479    ///     </ul>
50480    ///   
50481    pub spellcheck: core::option::Option<AttributeValue<'life>>,
50482    ///
50483    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
50484    ///   
50485    pub style: core::option::Option<AttributeValue<'life>>,
50486    ///
50487    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
50488    ///     <ul>
50489    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
50490    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
50491    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
50492    ///     </ul>
50493    ///   
50494    pub tabindex: core::option::Option<AttributeValue<'life>>,
50495    ///
50496    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
50497    ///   
50498    pub title: core::option::Option<AttributeValue<'life>>,
50499    ///
50500    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
50501    ///     <ul>
50502    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
50503    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
50504    ///     </ul>
50505    ///   
50506    pub translate: core::option::Option<AttributeValue<'life>>,
50507    ///
50508    ///     <p>The current numeric value. This must be between the minimum and maximum values (<code>min</code> attribute and <code>max</code> attribute) if they are specified. If unspecified or malformed, the value is <code>0</code>. If specified, but not within the range given by the <code>min</code> attribute and <code>max</code> attribute, the value is equal to the nearest end of the range.</p>
50509    ///     <div id="sect1" class="notecard note">
50510    ///       <p><strong>Note:</strong> Unless the <code>value</code> attribute is between <code>0</code> and <code>1</code> (inclusive), the <code>min</code> and <code>max</code> attributes should define the range so that the <code>value</code> attribute's value is within it.</p>
50511    ///     </div>
50512    ///   
50513    pub value: core::option::Option<AttributeValue<'life>>,
50514    ///
50515    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
50516    ///     <ul>
50517    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
50518    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
50519    ///     </ul>
50520    ///   
50521    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
50522}
50523#[allow(deprecated)]
50524
50525impl<'life> Meter<'life> {
50526    /// Get the tag name of the element.
50527    /// This is the same as the name of the struct, in kebab-case.
50528    pub fn tag() -> &'static str {
50529        "meter"
50530    }
50531    /// Sets an attribute of the element.
50532    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
50533    /// If the `alloc` feature is disabled, this function will silently fail.
50534    ///
50535    /// # Note
50536    /// This only works when the attribute is lowercase.
50537    pub fn set_attr(
50538        &mut self,
50539        name: &'life str,
50540        value: impl core::convert::Into<AttributeValue<'life>>,
50541    ) {
50542        match name {
50543            "accesskey" => self.accesskey = Some(value.into()),
50544            "autocapitalize" => self.autocapitalize = Some(value.into()),
50545            "autofocus" => self.autofocus = Some(value.into()),
50546            "class" => self.class = Some(value.into()),
50547            "contenteditable" => self.contenteditable = Some(value.into()),
50548            "contextmenu" => self.contextmenu = Some(value.into()),
50549            "dir" => self.dir = Some(value.into()),
50550            "draggable" => self.draggable = Some(value.into()),
50551            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
50552            "exportparts" => self.exportparts = Some(value.into()),
50553            "hidden" => self.hidden = Some(value.into()),
50554            "high" => self.high = Some(value.into()),
50555            "id" => self.id = Some(value.into()),
50556            "inert" => self.inert = Some(value.into()),
50557            "inputmode" => self.inputmode = Some(value.into()),
50558            "is" => self.is = Some(value.into()),
50559            "itemid" => self.itemid = Some(value.into()),
50560            "itemprop" => self.itemprop = Some(value.into()),
50561            "itemref" => self.itemref = Some(value.into()),
50562            "itemscope" => self.itemscope = Some(value.into()),
50563            "itemtype" => self.itemtype = Some(value.into()),
50564            "lang" => self.lang = Some(value.into()),
50565            "low" => self.low = Some(value.into()),
50566            "max" => self.max = Some(value.into()),
50567            "min" => self.min = Some(value.into()),
50568            "nonce" => self.nonce = Some(value.into()),
50569            "optimum" => self.optimum = Some(value.into()),
50570            "part" => self.part = Some(value.into()),
50571            "popover" => self.popover = Some(value.into()),
50572            "role" => self.role = Some(value.into()),
50573            "slot" => self.slot = Some(value.into()),
50574            "spellcheck" => self.spellcheck = Some(value.into()),
50575            "style" => self.style = Some(value.into()),
50576            "tabindex" => self.tabindex = Some(value.into()),
50577            "title" => self.title = Some(value.into()),
50578            "translate" => self.translate = Some(value.into()),
50579            "value" => self.value = Some(value.into()),
50580            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
50581            #[cfg(feature = "alloc")]
50582            _ => {
50583                #[allow(clippy::useless_conversion)]
50584                self.extra.insert(name.into(), value.into());
50585            }
50586            #[cfg(not(feature = "alloc"))]
50587            _ => {}
50588        }
50589    }
50590}
50591/// The <strong><code>&lt;meter&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents either a scalar value within a known range or a fractional value.
50592///
50593/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meter>
50594
50595#[cfg(feature = "alloc")]
50596#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
50597pub struct MeterOwned {
50598    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
50599    ///   
50600    pub accesskey: core::option::Option<AttributeValueOwned>,
50601    ///
50602    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
50603    ///     <ul>
50604    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
50605    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
50606    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
50607    ///       <li><code>characters</code>, all letters should default to uppercase</li>
50608    ///     </ul>
50609    ///   
50610    pub autocapitalize: core::option::Option<AttributeValueOwned>,
50611    ///
50612    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
50613    ///   
50614    pub autofocus: core::option::Option<AttributeValueOwned>,
50615    ///
50616    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
50617    ///   
50618    pub class: core::option::Option<AttributeValueOwned>,
50619    ///
50620    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
50621    ///     <ul>
50622    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
50623    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
50624    ///     </ul>
50625    ///   
50626    pub contenteditable: core::option::Option<AttributeValueOwned>,
50627    ///
50628    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
50629    ///   
50630    pub contextmenu: core::option::Option<AttributeValueOwned>,
50631    ///
50632    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
50633    ///   
50634    #[cfg(feature = "alloc")]
50635    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
50636    ///
50637    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
50638    ///     <ul>
50639    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
50640    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
50641    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
50642    ///     </ul>
50643    ///   
50644    pub dir: core::option::Option<AttributeValueOwned>,
50645    ///
50646    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
50647    ///     <ul>
50648    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
50649    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
50650    ///     </ul>
50651    ///   
50652    pub draggable: core::option::Option<AttributeValueOwned>,
50653    ///
50654    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
50655    ///   
50656    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
50657    ///
50658    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
50659    ///   
50660    pub exportparts: core::option::Option<AttributeValueOwned>,
50661    /// /// Extra attributes of the element.
50662
50663    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
50664    #[cfg(feature = "alloc")]
50665    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
50666    ///
50667    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
50668    ///   
50669    pub hidden: core::option::Option<AttributeValueOwned>,
50670    ///
50671    ///     <p>The lower numeric bound of the high end of the measured range. This must be less than the maximum value (<code>max</code> attribute), and it also must be greater than the low value and minimum value (<code>low</code> attribute and <code>min</code> attribute, respectively), if any are specified. If unspecified, or if greater than the maximum value, the <code>high</code> value is equal to the maximum value.</p>
50672    ///   
50673    pub high: core::option::Option<AttributeValueOwned>,
50674    ///
50675    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
50676    ///   
50677    pub id: core::option::Option<AttributeValueOwned>,
50678    ///
50679    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
50680    ///   
50681    pub inert: core::option::Option<AttributeValueOwned>,
50682    ///
50683    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
50684    ///   
50685    pub inputmode: core::option::Option<AttributeValueOwned>,
50686    ///
50687    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
50688    ///   
50689    pub is: core::option::Option<AttributeValueOwned>,
50690    ///
50691    ///     <p>The unique, global identifier of an item.</p>
50692    ///   
50693    pub itemid: core::option::Option<AttributeValueOwned>,
50694    ///
50695    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
50696    ///   
50697    pub itemprop: core::option::Option<AttributeValueOwned>,
50698    ///
50699    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
50700    ///   
50701    pub itemref: core::option::Option<AttributeValueOwned>,
50702    ///
50703    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
50704    ///   
50705    pub itemscope: core::option::Option<AttributeValueOwned>,
50706    ///
50707    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
50708    ///   
50709    pub itemtype: core::option::Option<AttributeValueOwned>,
50710    ///
50711    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
50712    ///   
50713    pub lang: core::option::Option<AttributeValueOwned>,
50714    ///
50715    ///     <p>The upper numeric bound of the low end of the measured range. This must be greater than the minimum value (<code>min</code> attribute), and it also must be less than the high value and maximum value (<code>high</code> attribute and <code>max</code> attribute, respectively), if any are specified. If unspecified, or if less than the minimum value, the <code>low</code> value is equal to the minimum value.</p>
50716    ///   
50717    pub low: core::option::Option<AttributeValueOwned>,
50718    ///
50719    ///     <p>The upper numeric bound of the measured range. This must be greater than the minimum value (<code>min</code> attribute), if specified. If unspecified, the maximum value is <code>1</code>.</p>
50720    ///   
50721    pub max: core::option::Option<AttributeValueOwned>,
50722    ///
50723    ///     <p>The lower numeric bound of the measured range. This must be less than the maximum value (<code>max</code> attribute), if specified. If unspecified, the minimum value is <code>0</code>.</p>
50724    ///   
50725    pub min: core::option::Option<AttributeValueOwned>,
50726    ///
50727    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
50728    ///   
50729    pub nonce: core::option::Option<AttributeValueOwned>,
50730    ///
50731    ///     <p>This attribute indicates the optimal numeric value. It must be within the range (as defined by the <code>min</code> attribute and <code>max</code> attribute). When used with the <code>low</code> attribute and <code>high</code> attribute, it gives an indication where along the range is considered preferable. For example, if it is between the <code>min</code> attribute and the <code>low</code> attribute, then the lower range is considered preferred. The browser may color the meter's bar differently depending on whether the value is less than or equal to the optimum value.</p>
50732    ///   
50733    pub optimum: core::option::Option<AttributeValueOwned>,
50734    ///
50735    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
50736    ///   
50737    pub part: core::option::Option<AttributeValueOwned>,
50738    ///
50739    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
50740    ///   
50741    pub popover: core::option::Option<AttributeValueOwned>,
50742    ///
50743    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
50744    ///   
50745    pub role: core::option::Option<AttributeValueOwned>,
50746    ///
50747    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
50748    ///   
50749    pub slot: core::option::Option<AttributeValueOwned>,
50750    ///
50751    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
50752    ///     <ul>
50753    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
50754    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
50755    ///     </ul>
50756    ///   
50757    pub spellcheck: core::option::Option<AttributeValueOwned>,
50758    ///
50759    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
50760    ///   
50761    pub style: core::option::Option<AttributeValueOwned>,
50762    ///
50763    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
50764    ///     <ul>
50765    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
50766    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
50767    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
50768    ///     </ul>
50769    ///   
50770    pub tabindex: core::option::Option<AttributeValueOwned>,
50771    ///
50772    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
50773    ///   
50774    pub title: core::option::Option<AttributeValueOwned>,
50775    ///
50776    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
50777    ///     <ul>
50778    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
50779    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
50780    ///     </ul>
50781    ///   
50782    pub translate: core::option::Option<AttributeValueOwned>,
50783    ///
50784    ///     <p>The current numeric value. This must be between the minimum and maximum values (<code>min</code> attribute and <code>max</code> attribute) if they are specified. If unspecified or malformed, the value is <code>0</code>. If specified, but not within the range given by the <code>min</code> attribute and <code>max</code> attribute, the value is equal to the nearest end of the range.</p>
50785    ///     <div id="sect1" class="notecard note">
50786    ///       <p><strong>Note:</strong> Unless the <code>value</code> attribute is between <code>0</code> and <code>1</code> (inclusive), the <code>min</code> and <code>max</code> attributes should define the range so that the <code>value</code> attribute's value is within it.</p>
50787    ///     </div>
50788    ///   
50789    pub value: core::option::Option<AttributeValueOwned>,
50790    ///
50791    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
50792    ///     <ul>
50793    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
50794    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
50795    ///     </ul>
50796    ///   
50797    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
50798}
50799#[allow(deprecated)]
50800#[cfg(feature = "alloc")]
50801impl MeterOwned {
50802    /// Get the tag name of the element.
50803    /// This is the same as the name of the struct, in kebab-case.
50804    pub fn tag() -> &'static str {
50805        "meter"
50806    }
50807    /// Sets an attribute of the element.
50808    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
50809    /// If the `alloc` feature is disabled, this function will silently fail.
50810    ///
50811    /// # Note
50812    /// This only works when the attribute is lowercase.
50813    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
50814        match name {
50815            "accesskey" => self.accesskey = Some(value.into()),
50816            "autocapitalize" => self.autocapitalize = Some(value.into()),
50817            "autofocus" => self.autofocus = Some(value.into()),
50818            "class" => self.class = Some(value.into()),
50819            "contenteditable" => self.contenteditable = Some(value.into()),
50820            "contextmenu" => self.contextmenu = Some(value.into()),
50821            "dir" => self.dir = Some(value.into()),
50822            "draggable" => self.draggable = Some(value.into()),
50823            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
50824            "exportparts" => self.exportparts = Some(value.into()),
50825            "hidden" => self.hidden = Some(value.into()),
50826            "high" => self.high = Some(value.into()),
50827            "id" => self.id = Some(value.into()),
50828            "inert" => self.inert = Some(value.into()),
50829            "inputmode" => self.inputmode = Some(value.into()),
50830            "is" => self.is = Some(value.into()),
50831            "itemid" => self.itemid = Some(value.into()),
50832            "itemprop" => self.itemprop = Some(value.into()),
50833            "itemref" => self.itemref = Some(value.into()),
50834            "itemscope" => self.itemscope = Some(value.into()),
50835            "itemtype" => self.itemtype = Some(value.into()),
50836            "lang" => self.lang = Some(value.into()),
50837            "low" => self.low = Some(value.into()),
50838            "max" => self.max = Some(value.into()),
50839            "min" => self.min = Some(value.into()),
50840            "nonce" => self.nonce = Some(value.into()),
50841            "optimum" => self.optimum = Some(value.into()),
50842            "part" => self.part = Some(value.into()),
50843            "popover" => self.popover = Some(value.into()),
50844            "role" => self.role = Some(value.into()),
50845            "slot" => self.slot = Some(value.into()),
50846            "spellcheck" => self.spellcheck = Some(value.into()),
50847            "style" => self.style = Some(value.into()),
50848            "tabindex" => self.tabindex = Some(value.into()),
50849            "title" => self.title = Some(value.into()),
50850            "translate" => self.translate = Some(value.into()),
50851            "value" => self.value = Some(value.into()),
50852            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
50853            #[cfg(feature = "alloc")]
50854            _ => {
50855                #[allow(clippy::useless_conversion)]
50856                self.extra.insert(name.into(), value.into());
50857            }
50858            #[cfg(not(feature = "alloc"))]
50859            _ => {}
50860        }
50861    }
50862}
50863/// The <strong><code>&lt;optgroup&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element creates a grouping of options within a <a href="/en-US/docs/Web/HTML/Element/select"><code>&lt;select&gt;</code></a> element.
50864///
50865/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/optgroup>
50866
50867#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
50868pub struct Optgroup<'life> {
50869    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
50870    ///   
50871    pub accesskey: core::option::Option<AttributeValue<'life>>,
50872    ///
50873    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
50874    ///     <ul>
50875    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
50876    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
50877    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
50878    ///       <li><code>characters</code>, all letters should default to uppercase</li>
50879    ///     </ul>
50880    ///   
50881    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
50882    ///
50883    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
50884    ///   
50885    pub autofocus: core::option::Option<AttributeValue<'life>>,
50886    ///
50887    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
50888    ///   
50889    pub class: core::option::Option<AttributeValue<'life>>,
50890    ///
50891    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
50892    ///     <ul>
50893    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
50894    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
50895    ///     </ul>
50896    ///   
50897    pub contenteditable: core::option::Option<AttributeValue<'life>>,
50898    ///
50899    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
50900    ///   
50901    pub contextmenu: core::option::Option<AttributeValue<'life>>,
50902    ///
50903    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
50904    ///   
50905    #[cfg(feature = "alloc")]
50906    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
50907    ///
50908    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
50909    ///     <ul>
50910    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
50911    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
50912    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
50913    ///     </ul>
50914    ///   
50915    pub dir: core::option::Option<AttributeValue<'life>>,
50916    ///
50917    ///     <p>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.</p>
50918    ///   
50919    pub disabled: core::option::Option<AttributeValue<'life>>,
50920    ///
50921    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
50922    ///     <ul>
50923    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
50924    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
50925    ///     </ul>
50926    ///   
50927    pub draggable: core::option::Option<AttributeValue<'life>>,
50928    ///
50929    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
50930    ///   
50931    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
50932    ///
50933    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
50934    ///   
50935    pub exportparts: core::option::Option<AttributeValue<'life>>,
50936    /// /// Extra attributes of the element.
50937
50938    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
50939    #[cfg(feature = "alloc")]
50940    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
50941    ///
50942    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
50943    ///   
50944    pub hidden: core::option::Option<AttributeValue<'life>>,
50945    ///
50946    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
50947    ///   
50948    pub id: core::option::Option<AttributeValue<'life>>,
50949    ///
50950    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
50951    ///   
50952    pub inert: core::option::Option<AttributeValue<'life>>,
50953    ///
50954    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
50955    ///   
50956    pub inputmode: core::option::Option<AttributeValue<'life>>,
50957    ///
50958    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
50959    ///   
50960    pub is: core::option::Option<AttributeValue<'life>>,
50961    ///
50962    ///     <p>The unique, global identifier of an item.</p>
50963    ///   
50964    pub itemid: core::option::Option<AttributeValue<'life>>,
50965    ///
50966    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
50967    ///   
50968    pub itemprop: core::option::Option<AttributeValue<'life>>,
50969    ///
50970    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
50971    ///   
50972    pub itemref: core::option::Option<AttributeValue<'life>>,
50973    ///
50974    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
50975    ///   
50976    pub itemscope: core::option::Option<AttributeValue<'life>>,
50977    ///
50978    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
50979    ///   
50980    pub itemtype: core::option::Option<AttributeValue<'life>>,
50981    ///
50982    ///     <p>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.</p>
50983    ///   
50984    pub label: core::option::Option<AttributeValue<'life>>,
50985    ///
50986    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
50987    ///   
50988    pub lang: core::option::Option<AttributeValue<'life>>,
50989    ///
50990    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
50991    ///   
50992    pub nonce: core::option::Option<AttributeValue<'life>>,
50993    ///
50994    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
50995    ///   
50996    pub part: core::option::Option<AttributeValue<'life>>,
50997    ///
50998    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
50999    ///   
51000    pub popover: core::option::Option<AttributeValue<'life>>,
51001    ///
51002    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
51003    ///   
51004    pub role: core::option::Option<AttributeValue<'life>>,
51005    ///
51006    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
51007    ///   
51008    pub slot: core::option::Option<AttributeValue<'life>>,
51009    ///
51010    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
51011    ///     <ul>
51012    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
51013    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
51014    ///     </ul>
51015    ///   
51016    pub spellcheck: core::option::Option<AttributeValue<'life>>,
51017    ///
51018    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
51019    ///   
51020    pub style: core::option::Option<AttributeValue<'life>>,
51021    ///
51022    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
51023    ///     <ul>
51024    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
51025    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
51026    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
51027    ///     </ul>
51028    ///   
51029    pub tabindex: core::option::Option<AttributeValue<'life>>,
51030    ///
51031    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
51032    ///   
51033    pub title: core::option::Option<AttributeValue<'life>>,
51034    ///
51035    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
51036    ///     <ul>
51037    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
51038    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
51039    ///     </ul>
51040    ///   
51041    pub translate: core::option::Option<AttributeValue<'life>>,
51042    ///
51043    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
51044    ///     <ul>
51045    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
51046    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
51047    ///     </ul>
51048    ///   
51049    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
51050}
51051#[allow(deprecated)]
51052
51053impl<'life> Optgroup<'life> {
51054    /// Get the tag name of the element.
51055    /// This is the same as the name of the struct, in kebab-case.
51056    pub fn tag() -> &'static str {
51057        "optgroup"
51058    }
51059    /// Sets an attribute of the element.
51060    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
51061    /// If the `alloc` feature is disabled, this function will silently fail.
51062    ///
51063    /// # Note
51064    /// This only works when the attribute is lowercase.
51065    pub fn set_attr(
51066        &mut self,
51067        name: &'life str,
51068        value: impl core::convert::Into<AttributeValue<'life>>,
51069    ) {
51070        match name {
51071            "accesskey" => self.accesskey = Some(value.into()),
51072            "autocapitalize" => self.autocapitalize = Some(value.into()),
51073            "autofocus" => self.autofocus = Some(value.into()),
51074            "class" => self.class = Some(value.into()),
51075            "contenteditable" => self.contenteditable = Some(value.into()),
51076            "contextmenu" => self.contextmenu = Some(value.into()),
51077            "dir" => self.dir = Some(value.into()),
51078            "disabled" => self.disabled = Some(value.into()),
51079            "draggable" => self.draggable = Some(value.into()),
51080            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
51081            "exportparts" => self.exportparts = Some(value.into()),
51082            "hidden" => self.hidden = Some(value.into()),
51083            "id" => self.id = Some(value.into()),
51084            "inert" => self.inert = Some(value.into()),
51085            "inputmode" => self.inputmode = Some(value.into()),
51086            "is" => self.is = Some(value.into()),
51087            "itemid" => self.itemid = Some(value.into()),
51088            "itemprop" => self.itemprop = Some(value.into()),
51089            "itemref" => self.itemref = Some(value.into()),
51090            "itemscope" => self.itemscope = Some(value.into()),
51091            "itemtype" => self.itemtype = Some(value.into()),
51092            "label" => self.label = Some(value.into()),
51093            "lang" => self.lang = Some(value.into()),
51094            "nonce" => self.nonce = Some(value.into()),
51095            "part" => self.part = Some(value.into()),
51096            "popover" => self.popover = Some(value.into()),
51097            "role" => self.role = Some(value.into()),
51098            "slot" => self.slot = Some(value.into()),
51099            "spellcheck" => self.spellcheck = Some(value.into()),
51100            "style" => self.style = Some(value.into()),
51101            "tabindex" => self.tabindex = Some(value.into()),
51102            "title" => self.title = Some(value.into()),
51103            "translate" => self.translate = Some(value.into()),
51104            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
51105            #[cfg(feature = "alloc")]
51106            _ => {
51107                #[allow(clippy::useless_conversion)]
51108                self.extra.insert(name.into(), value.into());
51109            }
51110            #[cfg(not(feature = "alloc"))]
51111            _ => {}
51112        }
51113    }
51114}
51115/// The <strong><code>&lt;optgroup&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element creates a grouping of options within a <a href="/en-US/docs/Web/HTML/Element/select"><code>&lt;select&gt;</code></a> element.
51116///
51117/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/optgroup>
51118
51119#[cfg(feature = "alloc")]
51120#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
51121pub struct OptgroupOwned {
51122    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
51123    ///   
51124    pub accesskey: core::option::Option<AttributeValueOwned>,
51125    ///
51126    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
51127    ///     <ul>
51128    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
51129    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
51130    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
51131    ///       <li><code>characters</code>, all letters should default to uppercase</li>
51132    ///     </ul>
51133    ///   
51134    pub autocapitalize: core::option::Option<AttributeValueOwned>,
51135    ///
51136    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
51137    ///   
51138    pub autofocus: core::option::Option<AttributeValueOwned>,
51139    ///
51140    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
51141    ///   
51142    pub class: core::option::Option<AttributeValueOwned>,
51143    ///
51144    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
51145    ///     <ul>
51146    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
51147    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
51148    ///     </ul>
51149    ///   
51150    pub contenteditable: core::option::Option<AttributeValueOwned>,
51151    ///
51152    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
51153    ///   
51154    pub contextmenu: core::option::Option<AttributeValueOwned>,
51155    ///
51156    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
51157    ///   
51158    #[cfg(feature = "alloc")]
51159    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
51160    ///
51161    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
51162    ///     <ul>
51163    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
51164    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
51165    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
51166    ///     </ul>
51167    ///   
51168    pub dir: core::option::Option<AttributeValueOwned>,
51169    ///
51170    ///     <p>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.</p>
51171    ///   
51172    pub disabled: core::option::Option<AttributeValueOwned>,
51173    ///
51174    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
51175    ///     <ul>
51176    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
51177    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
51178    ///     </ul>
51179    ///   
51180    pub draggable: core::option::Option<AttributeValueOwned>,
51181    ///
51182    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
51183    ///   
51184    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
51185    ///
51186    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
51187    ///   
51188    pub exportparts: core::option::Option<AttributeValueOwned>,
51189    /// /// Extra attributes of the element.
51190
51191    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
51192    #[cfg(feature = "alloc")]
51193    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
51194    ///
51195    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
51196    ///   
51197    pub hidden: core::option::Option<AttributeValueOwned>,
51198    ///
51199    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
51200    ///   
51201    pub id: core::option::Option<AttributeValueOwned>,
51202    ///
51203    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
51204    ///   
51205    pub inert: core::option::Option<AttributeValueOwned>,
51206    ///
51207    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
51208    ///   
51209    pub inputmode: core::option::Option<AttributeValueOwned>,
51210    ///
51211    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
51212    ///   
51213    pub is: core::option::Option<AttributeValueOwned>,
51214    ///
51215    ///     <p>The unique, global identifier of an item.</p>
51216    ///   
51217    pub itemid: core::option::Option<AttributeValueOwned>,
51218    ///
51219    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
51220    ///   
51221    pub itemprop: core::option::Option<AttributeValueOwned>,
51222    ///
51223    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
51224    ///   
51225    pub itemref: core::option::Option<AttributeValueOwned>,
51226    ///
51227    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
51228    ///   
51229    pub itemscope: core::option::Option<AttributeValueOwned>,
51230    ///
51231    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
51232    ///   
51233    pub itemtype: core::option::Option<AttributeValueOwned>,
51234    ///
51235    ///     <p>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.</p>
51236    ///   
51237    pub label: core::option::Option<AttributeValueOwned>,
51238    ///
51239    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
51240    ///   
51241    pub lang: core::option::Option<AttributeValueOwned>,
51242    ///
51243    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
51244    ///   
51245    pub nonce: core::option::Option<AttributeValueOwned>,
51246    ///
51247    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
51248    ///   
51249    pub part: core::option::Option<AttributeValueOwned>,
51250    ///
51251    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
51252    ///   
51253    pub popover: core::option::Option<AttributeValueOwned>,
51254    ///
51255    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
51256    ///   
51257    pub role: core::option::Option<AttributeValueOwned>,
51258    ///
51259    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
51260    ///   
51261    pub slot: core::option::Option<AttributeValueOwned>,
51262    ///
51263    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
51264    ///     <ul>
51265    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
51266    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
51267    ///     </ul>
51268    ///   
51269    pub spellcheck: core::option::Option<AttributeValueOwned>,
51270    ///
51271    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
51272    ///   
51273    pub style: core::option::Option<AttributeValueOwned>,
51274    ///
51275    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
51276    ///     <ul>
51277    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
51278    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
51279    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
51280    ///     </ul>
51281    ///   
51282    pub tabindex: core::option::Option<AttributeValueOwned>,
51283    ///
51284    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
51285    ///   
51286    pub title: core::option::Option<AttributeValueOwned>,
51287    ///
51288    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
51289    ///     <ul>
51290    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
51291    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
51292    ///     </ul>
51293    ///   
51294    pub translate: core::option::Option<AttributeValueOwned>,
51295    ///
51296    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
51297    ///     <ul>
51298    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
51299    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
51300    ///     </ul>
51301    ///   
51302    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
51303}
51304#[allow(deprecated)]
51305#[cfg(feature = "alloc")]
51306impl OptgroupOwned {
51307    /// Get the tag name of the element.
51308    /// This is the same as the name of the struct, in kebab-case.
51309    pub fn tag() -> &'static str {
51310        "optgroup"
51311    }
51312    /// Sets an attribute of the element.
51313    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
51314    /// If the `alloc` feature is disabled, this function will silently fail.
51315    ///
51316    /// # Note
51317    /// This only works when the attribute is lowercase.
51318    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
51319        match name {
51320            "accesskey" => self.accesskey = Some(value.into()),
51321            "autocapitalize" => self.autocapitalize = Some(value.into()),
51322            "autofocus" => self.autofocus = Some(value.into()),
51323            "class" => self.class = Some(value.into()),
51324            "contenteditable" => self.contenteditable = Some(value.into()),
51325            "contextmenu" => self.contextmenu = Some(value.into()),
51326            "dir" => self.dir = Some(value.into()),
51327            "disabled" => self.disabled = Some(value.into()),
51328            "draggable" => self.draggable = Some(value.into()),
51329            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
51330            "exportparts" => self.exportparts = Some(value.into()),
51331            "hidden" => self.hidden = Some(value.into()),
51332            "id" => self.id = Some(value.into()),
51333            "inert" => self.inert = Some(value.into()),
51334            "inputmode" => self.inputmode = Some(value.into()),
51335            "is" => self.is = Some(value.into()),
51336            "itemid" => self.itemid = Some(value.into()),
51337            "itemprop" => self.itemprop = Some(value.into()),
51338            "itemref" => self.itemref = Some(value.into()),
51339            "itemscope" => self.itemscope = Some(value.into()),
51340            "itemtype" => self.itemtype = Some(value.into()),
51341            "label" => self.label = Some(value.into()),
51342            "lang" => self.lang = Some(value.into()),
51343            "nonce" => self.nonce = Some(value.into()),
51344            "part" => self.part = Some(value.into()),
51345            "popover" => self.popover = Some(value.into()),
51346            "role" => self.role = Some(value.into()),
51347            "slot" => self.slot = Some(value.into()),
51348            "spellcheck" => self.spellcheck = Some(value.into()),
51349            "style" => self.style = Some(value.into()),
51350            "tabindex" => self.tabindex = Some(value.into()),
51351            "title" => self.title = Some(value.into()),
51352            "translate" => self.translate = Some(value.into()),
51353            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
51354            #[cfg(feature = "alloc")]
51355            _ => {
51356                #[allow(clippy::useless_conversion)]
51357                self.extra.insert(name.into(), value.into());
51358            }
51359            #[cfg(not(feature = "alloc"))]
51360            _ => {}
51361        }
51362    }
51363}
51364/// The <strong><code>&lt;option&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element is used to define an item contained in a <a href="/en-US/docs/Web/HTML/Element/select"><code>&lt;select&gt;</code></a>, an <a href="/en-US/docs/Web/HTML/Element/optgroup"><code>&lt;optgroup&gt;</code></a>, or a <a href="/en-US/docs/Web/HTML/Element/datalist"><code>&lt;datalist&gt;</code></a> element. As such, <code>&lt;option&gt;</code> can represent menu items in popups and other lists of items in an HTML document.
51365///
51366/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/option>
51367
51368#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
51369pub struct Option<'life> {
51370    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
51371    ///   
51372    pub accesskey: core::option::Option<AttributeValue<'life>>,
51373    ///
51374    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
51375    ///     <ul>
51376    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
51377    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
51378    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
51379    ///       <li><code>characters</code>, all letters should default to uppercase</li>
51380    ///     </ul>
51381    ///   
51382    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
51383    ///
51384    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
51385    ///   
51386    pub autofocus: core::option::Option<AttributeValue<'life>>,
51387    ///
51388    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
51389    ///   
51390    pub class: core::option::Option<AttributeValue<'life>>,
51391    ///
51392    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
51393    ///     <ul>
51394    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
51395    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
51396    ///     </ul>
51397    ///   
51398    pub contenteditable: core::option::Option<AttributeValue<'life>>,
51399    ///
51400    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
51401    ///   
51402    pub contextmenu: core::option::Option<AttributeValue<'life>>,
51403    ///
51404    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
51405    ///   
51406    #[cfg(feature = "alloc")]
51407    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
51408    ///
51409    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
51410    ///     <ul>
51411    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
51412    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
51413    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
51414    ///     </ul>
51415    ///   
51416    pub dir: core::option::Option<AttributeValue<'life>>,
51417    ///
51418    ///     <p>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 <a href="/en-US/docs/Web/HTML/Element/optgroup"><code>&lt;optgroup&gt;</code></a> element.</p>
51419    ///   
51420    pub disabled: core::option::Option<AttributeValue<'life>>,
51421    ///
51422    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
51423    ///     <ul>
51424    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
51425    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
51426    ///     </ul>
51427    ///   
51428    pub draggable: core::option::Option<AttributeValue<'life>>,
51429    ///
51430    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
51431    ///   
51432    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
51433    ///
51434    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
51435    ///   
51436    pub exportparts: core::option::Option<AttributeValue<'life>>,
51437    /// /// Extra attributes of the element.
51438
51439    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
51440    #[cfg(feature = "alloc")]
51441    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
51442    ///
51443    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
51444    ///   
51445    pub hidden: core::option::Option<AttributeValue<'life>>,
51446    ///
51447    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
51448    ///   
51449    pub id: core::option::Option<AttributeValue<'life>>,
51450    ///
51451    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
51452    ///   
51453    pub inert: core::option::Option<AttributeValue<'life>>,
51454    ///
51455    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
51456    ///   
51457    pub inputmode: core::option::Option<AttributeValue<'life>>,
51458    ///
51459    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
51460    ///   
51461    pub is: core::option::Option<AttributeValue<'life>>,
51462    ///
51463    ///     <p>The unique, global identifier of an item.</p>
51464    ///   
51465    pub itemid: core::option::Option<AttributeValue<'life>>,
51466    ///
51467    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
51468    ///   
51469    pub itemprop: core::option::Option<AttributeValue<'life>>,
51470    ///
51471    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
51472    ///   
51473    pub itemref: core::option::Option<AttributeValue<'life>>,
51474    ///
51475    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
51476    ///   
51477    pub itemscope: core::option::Option<AttributeValue<'life>>,
51478    ///
51479    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
51480    ///   
51481    pub itemtype: core::option::Option<AttributeValue<'life>>,
51482    ///
51483    ///     <p>This attribute is text for the label indicating the meaning of the option. If the <code>label</code> attribute isn't defined, its value is that of the element text content.</p>
51484    ///   
51485    pub label: core::option::Option<AttributeValue<'life>>,
51486    ///
51487    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
51488    ///   
51489    pub lang: core::option::Option<AttributeValue<'life>>,
51490    ///
51491    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
51492    ///   
51493    pub nonce: core::option::Option<AttributeValue<'life>>,
51494    ///
51495    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
51496    ///   
51497    pub part: core::option::Option<AttributeValue<'life>>,
51498    ///
51499    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
51500    ///   
51501    pub popover: core::option::Option<AttributeValue<'life>>,
51502    ///
51503    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
51504    ///   
51505    pub role: core::option::Option<AttributeValue<'life>>,
51506    ///
51507    ///     <p>If present, this Boolean attribute indicates that the option is initially selected. If the <code>&lt;option&gt;</code> element is the descendant of a <a href="/en-US/docs/Web/HTML/Element/select"><code>&lt;select&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/select#multiple"><code>multiple</code></a> attribute is not set, only one single <code>&lt;option&gt;</code> of this <a href="/en-US/docs/Web/HTML/Element/select"><code>&lt;select&gt;</code></a> element may have the <code>selected</code> attribute.</p>
51508    ///   
51509    pub selected: core::option::Option<AttributeValue<'life>>,
51510    ///
51511    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
51512    ///   
51513    pub slot: core::option::Option<AttributeValue<'life>>,
51514    ///
51515    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
51516    ///     <ul>
51517    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
51518    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
51519    ///     </ul>
51520    ///   
51521    pub spellcheck: core::option::Option<AttributeValue<'life>>,
51522    ///
51523    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
51524    ///   
51525    pub style: core::option::Option<AttributeValue<'life>>,
51526    ///
51527    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
51528    ///     <ul>
51529    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
51530    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
51531    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
51532    ///     </ul>
51533    ///   
51534    pub tabindex: core::option::Option<AttributeValue<'life>>,
51535    ///
51536    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
51537    ///   
51538    pub title: core::option::Option<AttributeValue<'life>>,
51539    ///
51540    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
51541    ///     <ul>
51542    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
51543    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
51544    ///     </ul>
51545    ///   
51546    pub translate: core::option::Option<AttributeValue<'life>>,
51547    ///
51548    ///     <p>The content of this attribute represents the value to be submitted with the form, should this option be selected. If this attribute is omitted, the value is taken from the text content of the option element.</p>
51549    ///   
51550    pub value: core::option::Option<AttributeValue<'life>>,
51551    ///
51552    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
51553    ///     <ul>
51554    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
51555    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
51556    ///     </ul>
51557    ///   
51558    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
51559}
51560#[allow(deprecated)]
51561
51562impl<'life> Option<'life> {
51563    /// Get the tag name of the element.
51564    /// This is the same as the name of the struct, in kebab-case.
51565    pub fn tag() -> &'static str {
51566        "option"
51567    }
51568    /// Sets an attribute of the element.
51569    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
51570    /// If the `alloc` feature is disabled, this function will silently fail.
51571    ///
51572    /// # Note
51573    /// This only works when the attribute is lowercase.
51574    pub fn set_attr(
51575        &mut self,
51576        name: &'life str,
51577        value: impl core::convert::Into<AttributeValue<'life>>,
51578    ) {
51579        match name {
51580            "accesskey" => self.accesskey = Some(value.into()),
51581            "autocapitalize" => self.autocapitalize = Some(value.into()),
51582            "autofocus" => self.autofocus = Some(value.into()),
51583            "class" => self.class = Some(value.into()),
51584            "contenteditable" => self.contenteditable = Some(value.into()),
51585            "contextmenu" => self.contextmenu = Some(value.into()),
51586            "dir" => self.dir = Some(value.into()),
51587            "disabled" => self.disabled = Some(value.into()),
51588            "draggable" => self.draggable = Some(value.into()),
51589            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
51590            "exportparts" => self.exportparts = Some(value.into()),
51591            "hidden" => self.hidden = Some(value.into()),
51592            "id" => self.id = Some(value.into()),
51593            "inert" => self.inert = Some(value.into()),
51594            "inputmode" => self.inputmode = Some(value.into()),
51595            "is" => self.is = Some(value.into()),
51596            "itemid" => self.itemid = Some(value.into()),
51597            "itemprop" => self.itemprop = Some(value.into()),
51598            "itemref" => self.itemref = Some(value.into()),
51599            "itemscope" => self.itemscope = Some(value.into()),
51600            "itemtype" => self.itemtype = Some(value.into()),
51601            "label" => self.label = Some(value.into()),
51602            "lang" => self.lang = Some(value.into()),
51603            "nonce" => self.nonce = Some(value.into()),
51604            "part" => self.part = Some(value.into()),
51605            "popover" => self.popover = Some(value.into()),
51606            "role" => self.role = Some(value.into()),
51607            "selected" => self.selected = Some(value.into()),
51608            "slot" => self.slot = Some(value.into()),
51609            "spellcheck" => self.spellcheck = Some(value.into()),
51610            "style" => self.style = Some(value.into()),
51611            "tabindex" => self.tabindex = Some(value.into()),
51612            "title" => self.title = Some(value.into()),
51613            "translate" => self.translate = Some(value.into()),
51614            "value" => self.value = Some(value.into()),
51615            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
51616            #[cfg(feature = "alloc")]
51617            _ => {
51618                #[allow(clippy::useless_conversion)]
51619                self.extra.insert(name.into(), value.into());
51620            }
51621            #[cfg(not(feature = "alloc"))]
51622            _ => {}
51623        }
51624    }
51625}
51626/// The <strong><code>&lt;option&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element is used to define an item contained in a <a href="/en-US/docs/Web/HTML/Element/select"><code>&lt;select&gt;</code></a>, an <a href="/en-US/docs/Web/HTML/Element/optgroup"><code>&lt;optgroup&gt;</code></a>, or a <a href="/en-US/docs/Web/HTML/Element/datalist"><code>&lt;datalist&gt;</code></a> element. As such, <code>&lt;option&gt;</code> can represent menu items in popups and other lists of items in an HTML document.
51627///
51628/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/option>
51629
51630#[cfg(feature = "alloc")]
51631#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
51632pub struct OptionOwned {
51633    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
51634    ///   
51635    pub accesskey: core::option::Option<AttributeValueOwned>,
51636    ///
51637    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
51638    ///     <ul>
51639    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
51640    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
51641    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
51642    ///       <li><code>characters</code>, all letters should default to uppercase</li>
51643    ///     </ul>
51644    ///   
51645    pub autocapitalize: core::option::Option<AttributeValueOwned>,
51646    ///
51647    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
51648    ///   
51649    pub autofocus: core::option::Option<AttributeValueOwned>,
51650    ///
51651    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
51652    ///   
51653    pub class: core::option::Option<AttributeValueOwned>,
51654    ///
51655    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
51656    ///     <ul>
51657    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
51658    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
51659    ///     </ul>
51660    ///   
51661    pub contenteditable: core::option::Option<AttributeValueOwned>,
51662    ///
51663    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
51664    ///   
51665    pub contextmenu: core::option::Option<AttributeValueOwned>,
51666    ///
51667    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
51668    ///   
51669    #[cfg(feature = "alloc")]
51670    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
51671    ///
51672    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
51673    ///     <ul>
51674    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
51675    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
51676    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
51677    ///     </ul>
51678    ///   
51679    pub dir: core::option::Option<AttributeValueOwned>,
51680    ///
51681    ///     <p>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 <a href="/en-US/docs/Web/HTML/Element/optgroup"><code>&lt;optgroup&gt;</code></a> element.</p>
51682    ///   
51683    pub disabled: core::option::Option<AttributeValueOwned>,
51684    ///
51685    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
51686    ///     <ul>
51687    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
51688    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
51689    ///     </ul>
51690    ///   
51691    pub draggable: core::option::Option<AttributeValueOwned>,
51692    ///
51693    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
51694    ///   
51695    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
51696    ///
51697    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
51698    ///   
51699    pub exportparts: core::option::Option<AttributeValueOwned>,
51700    /// /// Extra attributes of the element.
51701
51702    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
51703    #[cfg(feature = "alloc")]
51704    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
51705    ///
51706    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
51707    ///   
51708    pub hidden: core::option::Option<AttributeValueOwned>,
51709    ///
51710    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
51711    ///   
51712    pub id: core::option::Option<AttributeValueOwned>,
51713    ///
51714    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
51715    ///   
51716    pub inert: core::option::Option<AttributeValueOwned>,
51717    ///
51718    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
51719    ///   
51720    pub inputmode: core::option::Option<AttributeValueOwned>,
51721    ///
51722    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
51723    ///   
51724    pub is: core::option::Option<AttributeValueOwned>,
51725    ///
51726    ///     <p>The unique, global identifier of an item.</p>
51727    ///   
51728    pub itemid: core::option::Option<AttributeValueOwned>,
51729    ///
51730    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
51731    ///   
51732    pub itemprop: core::option::Option<AttributeValueOwned>,
51733    ///
51734    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
51735    ///   
51736    pub itemref: core::option::Option<AttributeValueOwned>,
51737    ///
51738    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
51739    ///   
51740    pub itemscope: core::option::Option<AttributeValueOwned>,
51741    ///
51742    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
51743    ///   
51744    pub itemtype: core::option::Option<AttributeValueOwned>,
51745    ///
51746    ///     <p>This attribute is text for the label indicating the meaning of the option. If the <code>label</code> attribute isn't defined, its value is that of the element text content.</p>
51747    ///   
51748    pub label: core::option::Option<AttributeValueOwned>,
51749    ///
51750    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
51751    ///   
51752    pub lang: core::option::Option<AttributeValueOwned>,
51753    ///
51754    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
51755    ///   
51756    pub nonce: core::option::Option<AttributeValueOwned>,
51757    ///
51758    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
51759    ///   
51760    pub part: core::option::Option<AttributeValueOwned>,
51761    ///
51762    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
51763    ///   
51764    pub popover: core::option::Option<AttributeValueOwned>,
51765    ///
51766    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
51767    ///   
51768    pub role: core::option::Option<AttributeValueOwned>,
51769    ///
51770    ///     <p>If present, this Boolean attribute indicates that the option is initially selected. If the <code>&lt;option&gt;</code> element is the descendant of a <a href="/en-US/docs/Web/HTML/Element/select"><code>&lt;select&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/select#multiple"><code>multiple</code></a> attribute is not set, only one single <code>&lt;option&gt;</code> of this <a href="/en-US/docs/Web/HTML/Element/select"><code>&lt;select&gt;</code></a> element may have the <code>selected</code> attribute.</p>
51771    ///   
51772    pub selected: core::option::Option<AttributeValueOwned>,
51773    ///
51774    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
51775    ///   
51776    pub slot: core::option::Option<AttributeValueOwned>,
51777    ///
51778    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
51779    ///     <ul>
51780    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
51781    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
51782    ///     </ul>
51783    ///   
51784    pub spellcheck: core::option::Option<AttributeValueOwned>,
51785    ///
51786    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
51787    ///   
51788    pub style: core::option::Option<AttributeValueOwned>,
51789    ///
51790    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
51791    ///     <ul>
51792    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
51793    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
51794    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
51795    ///     </ul>
51796    ///   
51797    pub tabindex: core::option::Option<AttributeValueOwned>,
51798    ///
51799    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
51800    ///   
51801    pub title: core::option::Option<AttributeValueOwned>,
51802    ///
51803    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
51804    ///     <ul>
51805    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
51806    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
51807    ///     </ul>
51808    ///   
51809    pub translate: core::option::Option<AttributeValueOwned>,
51810    ///
51811    ///     <p>The content of this attribute represents the value to be submitted with the form, should this option be selected. If this attribute is omitted, the value is taken from the text content of the option element.</p>
51812    ///   
51813    pub value: core::option::Option<AttributeValueOwned>,
51814    ///
51815    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
51816    ///     <ul>
51817    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
51818    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
51819    ///     </ul>
51820    ///   
51821    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
51822}
51823#[allow(deprecated)]
51824#[cfg(feature = "alloc")]
51825impl OptionOwned {
51826    /// Get the tag name of the element.
51827    /// This is the same as the name of the struct, in kebab-case.
51828    pub fn tag() -> &'static str {
51829        "option"
51830    }
51831    /// Sets an attribute of the element.
51832    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
51833    /// If the `alloc` feature is disabled, this function will silently fail.
51834    ///
51835    /// # Note
51836    /// This only works when the attribute is lowercase.
51837    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
51838        match name {
51839            "accesskey" => self.accesskey = Some(value.into()),
51840            "autocapitalize" => self.autocapitalize = Some(value.into()),
51841            "autofocus" => self.autofocus = Some(value.into()),
51842            "class" => self.class = Some(value.into()),
51843            "contenteditable" => self.contenteditable = Some(value.into()),
51844            "contextmenu" => self.contextmenu = Some(value.into()),
51845            "dir" => self.dir = Some(value.into()),
51846            "disabled" => self.disabled = Some(value.into()),
51847            "draggable" => self.draggable = Some(value.into()),
51848            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
51849            "exportparts" => self.exportparts = Some(value.into()),
51850            "hidden" => self.hidden = Some(value.into()),
51851            "id" => self.id = Some(value.into()),
51852            "inert" => self.inert = Some(value.into()),
51853            "inputmode" => self.inputmode = Some(value.into()),
51854            "is" => self.is = Some(value.into()),
51855            "itemid" => self.itemid = Some(value.into()),
51856            "itemprop" => self.itemprop = Some(value.into()),
51857            "itemref" => self.itemref = Some(value.into()),
51858            "itemscope" => self.itemscope = Some(value.into()),
51859            "itemtype" => self.itemtype = Some(value.into()),
51860            "label" => self.label = Some(value.into()),
51861            "lang" => self.lang = Some(value.into()),
51862            "nonce" => self.nonce = Some(value.into()),
51863            "part" => self.part = Some(value.into()),
51864            "popover" => self.popover = Some(value.into()),
51865            "role" => self.role = Some(value.into()),
51866            "selected" => self.selected = Some(value.into()),
51867            "slot" => self.slot = Some(value.into()),
51868            "spellcheck" => self.spellcheck = Some(value.into()),
51869            "style" => self.style = Some(value.into()),
51870            "tabindex" => self.tabindex = Some(value.into()),
51871            "title" => self.title = Some(value.into()),
51872            "translate" => self.translate = Some(value.into()),
51873            "value" => self.value = Some(value.into()),
51874            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
51875            #[cfg(feature = "alloc")]
51876            _ => {
51877                #[allow(clippy::useless_conversion)]
51878                self.extra.insert(name.into(), value.into());
51879            }
51880            #[cfg(not(feature = "alloc"))]
51881            _ => {}
51882        }
51883    }
51884}
51885/// The <strong><code>&lt;output&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element is a container element into which a site or app can inject the results of a calculation or the outcome of a user action.
51886///
51887/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/output>
51888
51889#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
51890pub struct Output<'life> {
51891    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
51892    ///   
51893    pub accesskey: core::option::Option<AttributeValue<'life>>,
51894    ///
51895    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
51896    ///     <ul>
51897    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
51898    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
51899    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
51900    ///       <li><code>characters</code>, all letters should default to uppercase</li>
51901    ///     </ul>
51902    ///   
51903    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
51904    ///
51905    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
51906    ///   
51907    pub autofocus: core::option::Option<AttributeValue<'life>>,
51908    ///
51909    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
51910    ///   
51911    pub class: core::option::Option<AttributeValue<'life>>,
51912    ///
51913    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
51914    ///     <ul>
51915    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
51916    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
51917    ///     </ul>
51918    ///   
51919    pub contenteditable: core::option::Option<AttributeValue<'life>>,
51920    ///
51921    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
51922    ///   
51923    pub contextmenu: core::option::Option<AttributeValue<'life>>,
51924    ///
51925    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
51926    ///   
51927    #[cfg(feature = "alloc")]
51928    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
51929    ///
51930    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
51931    ///     <ul>
51932    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
51933    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
51934    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
51935    ///     </ul>
51936    ///   
51937    pub dir: core::option::Option<AttributeValue<'life>>,
51938    ///
51939    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
51940    ///     <ul>
51941    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
51942    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
51943    ///     </ul>
51944    ///   
51945    pub draggable: core::option::Option<AttributeValue<'life>>,
51946    ///
51947    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
51948    ///   
51949    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
51950    ///
51951    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
51952    ///   
51953    pub exportparts: core::option::Option<AttributeValue<'life>>,
51954    /// /// Extra attributes of the element.
51955
51956    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
51957    #[cfg(feature = "alloc")]
51958    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
51959    ///
51960    ///     <p>A space-separated list of other elements' <a href="/en-US/docs/Web/HTML/Global_attributes#id"><code>id</code></a>s, indicating that those elements contributed input values to (or otherwise affected) the calculation.</p>
51961    ///   
51962    pub for_: core::option::Option<AttributeValue<'life>>,
51963    ///
51964    ///     <p>The <a href="/en-US/docs/Web/HTML/Element/form"><code>&lt;form&gt;</code></a> element to associate the output with (its <em>form owner</em>). The value of this attribute must be the <a href="/en-US/docs/Web/HTML/Global_attributes#id"><code>id</code></a> of a <code>&lt;form&gt;</code> in the same document. (If this attribute is not set, the <code>&lt;output&gt;</code> is associated with its ancestor <code>&lt;form&gt;</code> element, if any.)</p>
51965    ///     <p>This attribute lets you associate <code>&lt;output&gt;</code> elements to <code>&lt;form&gt;</code>s anywhere in the document, not just inside a <code>&lt;form&gt;</code>. It can also override an ancestor <code>&lt;form&gt;</code> element.</p>
51966    ///   
51967    pub form: core::option::Option<AttributeValue<'life>>,
51968    ///
51969    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
51970    ///   
51971    pub hidden: core::option::Option<AttributeValue<'life>>,
51972    ///
51973    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
51974    ///   
51975    pub id: core::option::Option<AttributeValue<'life>>,
51976    ///
51977    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
51978    ///   
51979    pub inert: core::option::Option<AttributeValue<'life>>,
51980    ///
51981    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
51982    ///   
51983    pub inputmode: core::option::Option<AttributeValue<'life>>,
51984    ///
51985    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
51986    ///   
51987    pub is: core::option::Option<AttributeValue<'life>>,
51988    ///
51989    ///     <p>The unique, global identifier of an item.</p>
51990    ///   
51991    pub itemid: core::option::Option<AttributeValue<'life>>,
51992    ///
51993    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
51994    ///   
51995    pub itemprop: core::option::Option<AttributeValue<'life>>,
51996    ///
51997    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
51998    ///   
51999    pub itemref: core::option::Option<AttributeValue<'life>>,
52000    ///
52001    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
52002    ///   
52003    pub itemscope: core::option::Option<AttributeValue<'life>>,
52004    ///
52005    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
52006    ///   
52007    pub itemtype: core::option::Option<AttributeValue<'life>>,
52008    ///
52009    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
52010    ///   
52011    pub lang: core::option::Option<AttributeValue<'life>>,
52012    ///
52013    ///     <p>The element's name. Used in the <a href="/en-US/docs/Web/API/HTMLFormElement/elements" title="form.elements"><code>form.elements</code></a> API.</p>
52014    ///   
52015    pub name: core::option::Option<AttributeValue<'life>>,
52016    ///
52017    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
52018    ///   
52019    pub nonce: core::option::Option<AttributeValue<'life>>,
52020    ///
52021    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
52022    ///   
52023    pub part: core::option::Option<AttributeValue<'life>>,
52024    ///
52025    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
52026    ///   
52027    pub popover: core::option::Option<AttributeValue<'life>>,
52028    ///
52029    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
52030    ///   
52031    pub role: core::option::Option<AttributeValue<'life>>,
52032    ///
52033    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
52034    ///   
52035    pub slot: core::option::Option<AttributeValue<'life>>,
52036    ///
52037    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
52038    ///     <ul>
52039    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
52040    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
52041    ///     </ul>
52042    ///   
52043    pub spellcheck: core::option::Option<AttributeValue<'life>>,
52044    ///
52045    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
52046    ///   
52047    pub style: core::option::Option<AttributeValue<'life>>,
52048    ///
52049    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
52050    ///     <ul>
52051    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
52052    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
52053    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
52054    ///     </ul>
52055    ///   
52056    pub tabindex: core::option::Option<AttributeValue<'life>>,
52057    ///
52058    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
52059    ///   
52060    pub title: core::option::Option<AttributeValue<'life>>,
52061    ///
52062    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
52063    ///     <ul>
52064    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
52065    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
52066    ///     </ul>
52067    ///   
52068    pub translate: core::option::Option<AttributeValue<'life>>,
52069    ///
52070    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
52071    ///     <ul>
52072    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
52073    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
52074    ///     </ul>
52075    ///   
52076    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
52077}
52078#[allow(deprecated)]
52079
52080impl<'life> Output<'life> {
52081    /// Get the tag name of the element.
52082    /// This is the same as the name of the struct, in kebab-case.
52083    pub fn tag() -> &'static str {
52084        "output"
52085    }
52086    /// Sets an attribute of the element.
52087    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
52088    /// If the `alloc` feature is disabled, this function will silently fail.
52089    ///
52090    /// # Note
52091    /// This only works when the attribute is lowercase.
52092    pub fn set_attr(
52093        &mut self,
52094        name: &'life str,
52095        value: impl core::convert::Into<AttributeValue<'life>>,
52096    ) {
52097        match name {
52098            "accesskey" => self.accesskey = Some(value.into()),
52099            "autocapitalize" => self.autocapitalize = Some(value.into()),
52100            "autofocus" => self.autofocus = Some(value.into()),
52101            "class" => self.class = Some(value.into()),
52102            "contenteditable" => self.contenteditable = Some(value.into()),
52103            "contextmenu" => self.contextmenu = Some(value.into()),
52104            "dir" => self.dir = Some(value.into()),
52105            "draggable" => self.draggable = Some(value.into()),
52106            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
52107            "exportparts" => self.exportparts = Some(value.into()),
52108            "for_" => self.for_ = Some(value.into()),
52109            "form" => self.form = Some(value.into()),
52110            "hidden" => self.hidden = Some(value.into()),
52111            "id" => self.id = Some(value.into()),
52112            "inert" => self.inert = Some(value.into()),
52113            "inputmode" => self.inputmode = Some(value.into()),
52114            "is" => self.is = Some(value.into()),
52115            "itemid" => self.itemid = Some(value.into()),
52116            "itemprop" => self.itemprop = Some(value.into()),
52117            "itemref" => self.itemref = Some(value.into()),
52118            "itemscope" => self.itemscope = Some(value.into()),
52119            "itemtype" => self.itemtype = Some(value.into()),
52120            "lang" => self.lang = Some(value.into()),
52121            "name" => self.name = Some(value.into()),
52122            "nonce" => self.nonce = Some(value.into()),
52123            "part" => self.part = Some(value.into()),
52124            "popover" => self.popover = Some(value.into()),
52125            "role" => self.role = Some(value.into()),
52126            "slot" => self.slot = Some(value.into()),
52127            "spellcheck" => self.spellcheck = Some(value.into()),
52128            "style" => self.style = Some(value.into()),
52129            "tabindex" => self.tabindex = Some(value.into()),
52130            "title" => self.title = Some(value.into()),
52131            "translate" => self.translate = Some(value.into()),
52132            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
52133            #[cfg(feature = "alloc")]
52134            _ => {
52135                #[allow(clippy::useless_conversion)]
52136                self.extra.insert(name.into(), value.into());
52137            }
52138            #[cfg(not(feature = "alloc"))]
52139            _ => {}
52140        }
52141    }
52142}
52143/// The <strong><code>&lt;output&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element is a container element into which a site or app can inject the results of a calculation or the outcome of a user action.
52144///
52145/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/output>
52146
52147#[cfg(feature = "alloc")]
52148#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
52149pub struct OutputOwned {
52150    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
52151    ///   
52152    pub accesskey: core::option::Option<AttributeValueOwned>,
52153    ///
52154    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
52155    ///     <ul>
52156    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
52157    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
52158    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
52159    ///       <li><code>characters</code>, all letters should default to uppercase</li>
52160    ///     </ul>
52161    ///   
52162    pub autocapitalize: core::option::Option<AttributeValueOwned>,
52163    ///
52164    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
52165    ///   
52166    pub autofocus: core::option::Option<AttributeValueOwned>,
52167    ///
52168    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
52169    ///   
52170    pub class: core::option::Option<AttributeValueOwned>,
52171    ///
52172    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
52173    ///     <ul>
52174    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
52175    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
52176    ///     </ul>
52177    ///   
52178    pub contenteditable: core::option::Option<AttributeValueOwned>,
52179    ///
52180    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
52181    ///   
52182    pub contextmenu: core::option::Option<AttributeValueOwned>,
52183    ///
52184    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
52185    ///   
52186    #[cfg(feature = "alloc")]
52187    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
52188    ///
52189    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
52190    ///     <ul>
52191    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
52192    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
52193    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
52194    ///     </ul>
52195    ///   
52196    pub dir: core::option::Option<AttributeValueOwned>,
52197    ///
52198    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
52199    ///     <ul>
52200    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
52201    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
52202    ///     </ul>
52203    ///   
52204    pub draggable: core::option::Option<AttributeValueOwned>,
52205    ///
52206    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
52207    ///   
52208    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
52209    ///
52210    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
52211    ///   
52212    pub exportparts: core::option::Option<AttributeValueOwned>,
52213    /// /// Extra attributes of the element.
52214
52215    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
52216    #[cfg(feature = "alloc")]
52217    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
52218    ///
52219    ///     <p>A space-separated list of other elements' <a href="/en-US/docs/Web/HTML/Global_attributes#id"><code>id</code></a>s, indicating that those elements contributed input values to (or otherwise affected) the calculation.</p>
52220    ///   
52221    pub for_: core::option::Option<AttributeValueOwned>,
52222    ///
52223    ///     <p>The <a href="/en-US/docs/Web/HTML/Element/form"><code>&lt;form&gt;</code></a> element to associate the output with (its <em>form owner</em>). The value of this attribute must be the <a href="/en-US/docs/Web/HTML/Global_attributes#id"><code>id</code></a> of a <code>&lt;form&gt;</code> in the same document. (If this attribute is not set, the <code>&lt;output&gt;</code> is associated with its ancestor <code>&lt;form&gt;</code> element, if any.)</p>
52224    ///     <p>This attribute lets you associate <code>&lt;output&gt;</code> elements to <code>&lt;form&gt;</code>s anywhere in the document, not just inside a <code>&lt;form&gt;</code>. It can also override an ancestor <code>&lt;form&gt;</code> element.</p>
52225    ///   
52226    pub form: core::option::Option<AttributeValueOwned>,
52227    ///
52228    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
52229    ///   
52230    pub hidden: core::option::Option<AttributeValueOwned>,
52231    ///
52232    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
52233    ///   
52234    pub id: core::option::Option<AttributeValueOwned>,
52235    ///
52236    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
52237    ///   
52238    pub inert: core::option::Option<AttributeValueOwned>,
52239    ///
52240    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
52241    ///   
52242    pub inputmode: core::option::Option<AttributeValueOwned>,
52243    ///
52244    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
52245    ///   
52246    pub is: core::option::Option<AttributeValueOwned>,
52247    ///
52248    ///     <p>The unique, global identifier of an item.</p>
52249    ///   
52250    pub itemid: core::option::Option<AttributeValueOwned>,
52251    ///
52252    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
52253    ///   
52254    pub itemprop: core::option::Option<AttributeValueOwned>,
52255    ///
52256    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
52257    ///   
52258    pub itemref: core::option::Option<AttributeValueOwned>,
52259    ///
52260    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
52261    ///   
52262    pub itemscope: core::option::Option<AttributeValueOwned>,
52263    ///
52264    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
52265    ///   
52266    pub itemtype: core::option::Option<AttributeValueOwned>,
52267    ///
52268    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
52269    ///   
52270    pub lang: core::option::Option<AttributeValueOwned>,
52271    ///
52272    ///     <p>The element's name. Used in the <a href="/en-US/docs/Web/API/HTMLFormElement/elements" title="form.elements"><code>form.elements</code></a> API.</p>
52273    ///   
52274    pub name: core::option::Option<AttributeValueOwned>,
52275    ///
52276    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
52277    ///   
52278    pub nonce: core::option::Option<AttributeValueOwned>,
52279    ///
52280    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
52281    ///   
52282    pub part: core::option::Option<AttributeValueOwned>,
52283    ///
52284    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
52285    ///   
52286    pub popover: core::option::Option<AttributeValueOwned>,
52287    ///
52288    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
52289    ///   
52290    pub role: core::option::Option<AttributeValueOwned>,
52291    ///
52292    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
52293    ///   
52294    pub slot: core::option::Option<AttributeValueOwned>,
52295    ///
52296    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
52297    ///     <ul>
52298    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
52299    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
52300    ///     </ul>
52301    ///   
52302    pub spellcheck: core::option::Option<AttributeValueOwned>,
52303    ///
52304    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
52305    ///   
52306    pub style: core::option::Option<AttributeValueOwned>,
52307    ///
52308    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
52309    ///     <ul>
52310    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
52311    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
52312    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
52313    ///     </ul>
52314    ///   
52315    pub tabindex: core::option::Option<AttributeValueOwned>,
52316    ///
52317    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
52318    ///   
52319    pub title: core::option::Option<AttributeValueOwned>,
52320    ///
52321    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
52322    ///     <ul>
52323    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
52324    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
52325    ///     </ul>
52326    ///   
52327    pub translate: core::option::Option<AttributeValueOwned>,
52328    ///
52329    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
52330    ///     <ul>
52331    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
52332    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
52333    ///     </ul>
52334    ///   
52335    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
52336}
52337#[allow(deprecated)]
52338#[cfg(feature = "alloc")]
52339impl OutputOwned {
52340    /// Get the tag name of the element.
52341    /// This is the same as the name of the struct, in kebab-case.
52342    pub fn tag() -> &'static str {
52343        "output"
52344    }
52345    /// Sets an attribute of the element.
52346    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
52347    /// If the `alloc` feature is disabled, this function will silently fail.
52348    ///
52349    /// # Note
52350    /// This only works when the attribute is lowercase.
52351    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
52352        match name {
52353            "accesskey" => self.accesskey = Some(value.into()),
52354            "autocapitalize" => self.autocapitalize = Some(value.into()),
52355            "autofocus" => self.autofocus = Some(value.into()),
52356            "class" => self.class = Some(value.into()),
52357            "contenteditable" => self.contenteditable = Some(value.into()),
52358            "contextmenu" => self.contextmenu = Some(value.into()),
52359            "dir" => self.dir = Some(value.into()),
52360            "draggable" => self.draggable = Some(value.into()),
52361            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
52362            "exportparts" => self.exportparts = Some(value.into()),
52363            "for_" => self.for_ = Some(value.into()),
52364            "form" => self.form = Some(value.into()),
52365            "hidden" => self.hidden = Some(value.into()),
52366            "id" => self.id = Some(value.into()),
52367            "inert" => self.inert = Some(value.into()),
52368            "inputmode" => self.inputmode = Some(value.into()),
52369            "is" => self.is = Some(value.into()),
52370            "itemid" => self.itemid = Some(value.into()),
52371            "itemprop" => self.itemprop = Some(value.into()),
52372            "itemref" => self.itemref = Some(value.into()),
52373            "itemscope" => self.itemscope = Some(value.into()),
52374            "itemtype" => self.itemtype = Some(value.into()),
52375            "lang" => self.lang = Some(value.into()),
52376            "name" => self.name = Some(value.into()),
52377            "nonce" => self.nonce = Some(value.into()),
52378            "part" => self.part = Some(value.into()),
52379            "popover" => self.popover = Some(value.into()),
52380            "role" => self.role = Some(value.into()),
52381            "slot" => self.slot = Some(value.into()),
52382            "spellcheck" => self.spellcheck = Some(value.into()),
52383            "style" => self.style = Some(value.into()),
52384            "tabindex" => self.tabindex = Some(value.into()),
52385            "title" => self.title = Some(value.into()),
52386            "translate" => self.translate = Some(value.into()),
52387            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
52388            #[cfg(feature = "alloc")]
52389            _ => {
52390                #[allow(clippy::useless_conversion)]
52391                self.extra.insert(name.into(), value.into());
52392            }
52393            #[cfg(not(feature = "alloc"))]
52394            _ => {}
52395        }
52396    }
52397}
52398/// The <strong><code>&lt;progress&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element displays an indicator showing the completion progress of a task, typically displayed as a progress bar.
52399///
52400/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/progress>
52401
52402#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
52403pub struct Progress<'life> {
52404    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
52405    ///   
52406    pub accesskey: core::option::Option<AttributeValue<'life>>,
52407    ///
52408    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
52409    ///     <ul>
52410    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
52411    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
52412    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
52413    ///       <li><code>characters</code>, all letters should default to uppercase</li>
52414    ///     </ul>
52415    ///   
52416    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
52417    ///
52418    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
52419    ///   
52420    pub autofocus: core::option::Option<AttributeValue<'life>>,
52421    ///
52422    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
52423    ///   
52424    pub class: core::option::Option<AttributeValue<'life>>,
52425    ///
52426    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
52427    ///     <ul>
52428    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
52429    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
52430    ///     </ul>
52431    ///   
52432    pub contenteditable: core::option::Option<AttributeValue<'life>>,
52433    ///
52434    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
52435    ///   
52436    pub contextmenu: core::option::Option<AttributeValue<'life>>,
52437    ///
52438    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
52439    ///   
52440    #[cfg(feature = "alloc")]
52441    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
52442    ///
52443    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
52444    ///     <ul>
52445    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
52446    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
52447    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
52448    ///     </ul>
52449    ///   
52450    pub dir: core::option::Option<AttributeValue<'life>>,
52451    ///
52452    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
52453    ///     <ul>
52454    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
52455    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
52456    ///     </ul>
52457    ///   
52458    pub draggable: core::option::Option<AttributeValue<'life>>,
52459    ///
52460    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
52461    ///   
52462    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
52463    ///
52464    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
52465    ///   
52466    pub exportparts: core::option::Option<AttributeValue<'life>>,
52467    /// /// Extra attributes of the element.
52468
52469    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
52470    #[cfg(feature = "alloc")]
52471    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
52472    ///
52473    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
52474    ///   
52475    pub hidden: core::option::Option<AttributeValue<'life>>,
52476    ///
52477    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
52478    ///   
52479    pub id: core::option::Option<AttributeValue<'life>>,
52480    ///
52481    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
52482    ///   
52483    pub inert: core::option::Option<AttributeValue<'life>>,
52484    ///
52485    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
52486    ///   
52487    pub inputmode: core::option::Option<AttributeValue<'life>>,
52488    ///
52489    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
52490    ///   
52491    pub is: core::option::Option<AttributeValue<'life>>,
52492    ///
52493    ///     <p>The unique, global identifier of an item.</p>
52494    ///   
52495    pub itemid: core::option::Option<AttributeValue<'life>>,
52496    ///
52497    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
52498    ///   
52499    pub itemprop: core::option::Option<AttributeValue<'life>>,
52500    ///
52501    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
52502    ///   
52503    pub itemref: core::option::Option<AttributeValue<'life>>,
52504    ///
52505    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
52506    ///   
52507    pub itemscope: core::option::Option<AttributeValue<'life>>,
52508    ///
52509    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
52510    ///   
52511    pub itemtype: core::option::Option<AttributeValue<'life>>,
52512    ///
52513    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
52514    ///   
52515    pub lang: core::option::Option<AttributeValue<'life>>,
52516    ///
52517    ///     <p>This attribute describes how much work the task indicated by the <code>progress</code> element requires. The <code>max</code> attribute, if present, must have a value greater than <code>0</code> and be a valid floating point number. The default value is <code>1</code>.</p>
52518    ///   
52519    pub max: core::option::Option<AttributeValue<'life>>,
52520    ///
52521    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
52522    ///   
52523    pub nonce: core::option::Option<AttributeValue<'life>>,
52524    ///
52525    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
52526    ///   
52527    pub part: core::option::Option<AttributeValue<'life>>,
52528    ///
52529    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
52530    ///   
52531    pub popover: core::option::Option<AttributeValue<'life>>,
52532    ///
52533    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
52534    ///   
52535    pub role: core::option::Option<AttributeValue<'life>>,
52536    ///
52537    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
52538    ///   
52539    pub slot: core::option::Option<AttributeValue<'life>>,
52540    ///
52541    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
52542    ///     <ul>
52543    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
52544    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
52545    ///     </ul>
52546    ///   
52547    pub spellcheck: core::option::Option<AttributeValue<'life>>,
52548    ///
52549    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
52550    ///   
52551    pub style: core::option::Option<AttributeValue<'life>>,
52552    ///
52553    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
52554    ///     <ul>
52555    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
52556    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
52557    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
52558    ///     </ul>
52559    ///   
52560    pub tabindex: core::option::Option<AttributeValue<'life>>,
52561    ///
52562    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
52563    ///   
52564    pub title: core::option::Option<AttributeValue<'life>>,
52565    ///
52566    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
52567    ///     <ul>
52568    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
52569    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
52570    ///     </ul>
52571    ///   
52572    pub translate: core::option::Option<AttributeValue<'life>>,
52573    ///
52574    ///     <p>This attribute specifies how much of the task that has been completed. It must be a valid floating point number between <code>0</code> and <code>max</code>, or between <code>0</code> and <code>1</code> if <code>max</code> is omitted. If there is no <code>value</code> attribute, the progress bar is indeterminate; this indicates that an activity is ongoing with no indication of how long it is expected to take.</p>
52575    ///   
52576    pub value: core::option::Option<AttributeValue<'life>>,
52577    ///
52578    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
52579    ///     <ul>
52580    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
52581    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
52582    ///     </ul>
52583    ///   
52584    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
52585}
52586#[allow(deprecated)]
52587
52588impl<'life> Progress<'life> {
52589    /// Get the tag name of the element.
52590    /// This is the same as the name of the struct, in kebab-case.
52591    pub fn tag() -> &'static str {
52592        "progress"
52593    }
52594    /// Sets an attribute of the element.
52595    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
52596    /// If the `alloc` feature is disabled, this function will silently fail.
52597    ///
52598    /// # Note
52599    /// This only works when the attribute is lowercase.
52600    pub fn set_attr(
52601        &mut self,
52602        name: &'life str,
52603        value: impl core::convert::Into<AttributeValue<'life>>,
52604    ) {
52605        match name {
52606            "accesskey" => self.accesskey = Some(value.into()),
52607            "autocapitalize" => self.autocapitalize = Some(value.into()),
52608            "autofocus" => self.autofocus = Some(value.into()),
52609            "class" => self.class = Some(value.into()),
52610            "contenteditable" => self.contenteditable = Some(value.into()),
52611            "contextmenu" => self.contextmenu = Some(value.into()),
52612            "dir" => self.dir = Some(value.into()),
52613            "draggable" => self.draggable = Some(value.into()),
52614            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
52615            "exportparts" => self.exportparts = Some(value.into()),
52616            "hidden" => self.hidden = Some(value.into()),
52617            "id" => self.id = Some(value.into()),
52618            "inert" => self.inert = Some(value.into()),
52619            "inputmode" => self.inputmode = Some(value.into()),
52620            "is" => self.is = Some(value.into()),
52621            "itemid" => self.itemid = Some(value.into()),
52622            "itemprop" => self.itemprop = Some(value.into()),
52623            "itemref" => self.itemref = Some(value.into()),
52624            "itemscope" => self.itemscope = Some(value.into()),
52625            "itemtype" => self.itemtype = Some(value.into()),
52626            "lang" => self.lang = Some(value.into()),
52627            "max" => self.max = Some(value.into()),
52628            "nonce" => self.nonce = Some(value.into()),
52629            "part" => self.part = Some(value.into()),
52630            "popover" => self.popover = Some(value.into()),
52631            "role" => self.role = Some(value.into()),
52632            "slot" => self.slot = Some(value.into()),
52633            "spellcheck" => self.spellcheck = Some(value.into()),
52634            "style" => self.style = Some(value.into()),
52635            "tabindex" => self.tabindex = Some(value.into()),
52636            "title" => self.title = Some(value.into()),
52637            "translate" => self.translate = Some(value.into()),
52638            "value" => self.value = Some(value.into()),
52639            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
52640            #[cfg(feature = "alloc")]
52641            _ => {
52642                #[allow(clippy::useless_conversion)]
52643                self.extra.insert(name.into(), value.into());
52644            }
52645            #[cfg(not(feature = "alloc"))]
52646            _ => {}
52647        }
52648    }
52649}
52650/// The <strong><code>&lt;progress&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element displays an indicator showing the completion progress of a task, typically displayed as a progress bar.
52651///
52652/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/progress>
52653
52654#[cfg(feature = "alloc")]
52655#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
52656pub struct ProgressOwned {
52657    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
52658    ///   
52659    pub accesskey: core::option::Option<AttributeValueOwned>,
52660    ///
52661    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
52662    ///     <ul>
52663    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
52664    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
52665    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
52666    ///       <li><code>characters</code>, all letters should default to uppercase</li>
52667    ///     </ul>
52668    ///   
52669    pub autocapitalize: core::option::Option<AttributeValueOwned>,
52670    ///
52671    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
52672    ///   
52673    pub autofocus: core::option::Option<AttributeValueOwned>,
52674    ///
52675    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
52676    ///   
52677    pub class: core::option::Option<AttributeValueOwned>,
52678    ///
52679    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
52680    ///     <ul>
52681    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
52682    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
52683    ///     </ul>
52684    ///   
52685    pub contenteditable: core::option::Option<AttributeValueOwned>,
52686    ///
52687    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
52688    ///   
52689    pub contextmenu: core::option::Option<AttributeValueOwned>,
52690    ///
52691    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
52692    ///   
52693    #[cfg(feature = "alloc")]
52694    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
52695    ///
52696    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
52697    ///     <ul>
52698    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
52699    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
52700    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
52701    ///     </ul>
52702    ///   
52703    pub dir: core::option::Option<AttributeValueOwned>,
52704    ///
52705    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
52706    ///     <ul>
52707    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
52708    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
52709    ///     </ul>
52710    ///   
52711    pub draggable: core::option::Option<AttributeValueOwned>,
52712    ///
52713    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
52714    ///   
52715    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
52716    ///
52717    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
52718    ///   
52719    pub exportparts: core::option::Option<AttributeValueOwned>,
52720    /// /// Extra attributes of the element.
52721
52722    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
52723    #[cfg(feature = "alloc")]
52724    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
52725    ///
52726    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
52727    ///   
52728    pub hidden: core::option::Option<AttributeValueOwned>,
52729    ///
52730    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
52731    ///   
52732    pub id: core::option::Option<AttributeValueOwned>,
52733    ///
52734    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
52735    ///   
52736    pub inert: core::option::Option<AttributeValueOwned>,
52737    ///
52738    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
52739    ///   
52740    pub inputmode: core::option::Option<AttributeValueOwned>,
52741    ///
52742    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
52743    ///   
52744    pub is: core::option::Option<AttributeValueOwned>,
52745    ///
52746    ///     <p>The unique, global identifier of an item.</p>
52747    ///   
52748    pub itemid: core::option::Option<AttributeValueOwned>,
52749    ///
52750    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
52751    ///   
52752    pub itemprop: core::option::Option<AttributeValueOwned>,
52753    ///
52754    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
52755    ///   
52756    pub itemref: core::option::Option<AttributeValueOwned>,
52757    ///
52758    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
52759    ///   
52760    pub itemscope: core::option::Option<AttributeValueOwned>,
52761    ///
52762    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
52763    ///   
52764    pub itemtype: core::option::Option<AttributeValueOwned>,
52765    ///
52766    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
52767    ///   
52768    pub lang: core::option::Option<AttributeValueOwned>,
52769    ///
52770    ///     <p>This attribute describes how much work the task indicated by the <code>progress</code> element requires. The <code>max</code> attribute, if present, must have a value greater than <code>0</code> and be a valid floating point number. The default value is <code>1</code>.</p>
52771    ///   
52772    pub max: core::option::Option<AttributeValueOwned>,
52773    ///
52774    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
52775    ///   
52776    pub nonce: core::option::Option<AttributeValueOwned>,
52777    ///
52778    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
52779    ///   
52780    pub part: core::option::Option<AttributeValueOwned>,
52781    ///
52782    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
52783    ///   
52784    pub popover: core::option::Option<AttributeValueOwned>,
52785    ///
52786    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
52787    ///   
52788    pub role: core::option::Option<AttributeValueOwned>,
52789    ///
52790    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
52791    ///   
52792    pub slot: core::option::Option<AttributeValueOwned>,
52793    ///
52794    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
52795    ///     <ul>
52796    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
52797    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
52798    ///     </ul>
52799    ///   
52800    pub spellcheck: core::option::Option<AttributeValueOwned>,
52801    ///
52802    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
52803    ///   
52804    pub style: core::option::Option<AttributeValueOwned>,
52805    ///
52806    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
52807    ///     <ul>
52808    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
52809    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
52810    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
52811    ///     </ul>
52812    ///   
52813    pub tabindex: core::option::Option<AttributeValueOwned>,
52814    ///
52815    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
52816    ///   
52817    pub title: core::option::Option<AttributeValueOwned>,
52818    ///
52819    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
52820    ///     <ul>
52821    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
52822    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
52823    ///     </ul>
52824    ///   
52825    pub translate: core::option::Option<AttributeValueOwned>,
52826    ///
52827    ///     <p>This attribute specifies how much of the task that has been completed. It must be a valid floating point number between <code>0</code> and <code>max</code>, or between <code>0</code> and <code>1</code> if <code>max</code> is omitted. If there is no <code>value</code> attribute, the progress bar is indeterminate; this indicates that an activity is ongoing with no indication of how long it is expected to take.</p>
52828    ///   
52829    pub value: core::option::Option<AttributeValueOwned>,
52830    ///
52831    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
52832    ///     <ul>
52833    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
52834    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
52835    ///     </ul>
52836    ///   
52837    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
52838}
52839#[allow(deprecated)]
52840#[cfg(feature = "alloc")]
52841impl ProgressOwned {
52842    /// Get the tag name of the element.
52843    /// This is the same as the name of the struct, in kebab-case.
52844    pub fn tag() -> &'static str {
52845        "progress"
52846    }
52847    /// Sets an attribute of the element.
52848    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
52849    /// If the `alloc` feature is disabled, this function will silently fail.
52850    ///
52851    /// # Note
52852    /// This only works when the attribute is lowercase.
52853    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
52854        match name {
52855            "accesskey" => self.accesskey = Some(value.into()),
52856            "autocapitalize" => self.autocapitalize = Some(value.into()),
52857            "autofocus" => self.autofocus = Some(value.into()),
52858            "class" => self.class = Some(value.into()),
52859            "contenteditable" => self.contenteditable = Some(value.into()),
52860            "contextmenu" => self.contextmenu = Some(value.into()),
52861            "dir" => self.dir = Some(value.into()),
52862            "draggable" => self.draggable = Some(value.into()),
52863            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
52864            "exportparts" => self.exportparts = Some(value.into()),
52865            "hidden" => self.hidden = Some(value.into()),
52866            "id" => self.id = Some(value.into()),
52867            "inert" => self.inert = Some(value.into()),
52868            "inputmode" => self.inputmode = Some(value.into()),
52869            "is" => self.is = Some(value.into()),
52870            "itemid" => self.itemid = Some(value.into()),
52871            "itemprop" => self.itemprop = Some(value.into()),
52872            "itemref" => self.itemref = Some(value.into()),
52873            "itemscope" => self.itemscope = Some(value.into()),
52874            "itemtype" => self.itemtype = Some(value.into()),
52875            "lang" => self.lang = Some(value.into()),
52876            "max" => self.max = Some(value.into()),
52877            "nonce" => self.nonce = Some(value.into()),
52878            "part" => self.part = Some(value.into()),
52879            "popover" => self.popover = Some(value.into()),
52880            "role" => self.role = Some(value.into()),
52881            "slot" => self.slot = Some(value.into()),
52882            "spellcheck" => self.spellcheck = Some(value.into()),
52883            "style" => self.style = Some(value.into()),
52884            "tabindex" => self.tabindex = Some(value.into()),
52885            "title" => self.title = Some(value.into()),
52886            "translate" => self.translate = Some(value.into()),
52887            "value" => self.value = Some(value.into()),
52888            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
52889            #[cfg(feature = "alloc")]
52890            _ => {
52891                #[allow(clippy::useless_conversion)]
52892                self.extra.insert(name.into(), value.into());
52893            }
52894            #[cfg(not(feature = "alloc"))]
52895            _ => {}
52896        }
52897    }
52898}
52899/// The <strong><code>&lt;select&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents a control that provides a menu of options.
52900///
52901/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select>
52902
52903#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
52904pub struct Select<'life> {
52905    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
52906    ///   
52907    pub accesskey: core::option::Option<AttributeValue<'life>>,
52908    ///
52909    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
52910    ///     <ul>
52911    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
52912    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
52913    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
52914    ///       <li><code>characters</code>, all letters should default to uppercase</li>
52915    ///     </ul>
52916    ///   
52917    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
52918    ///
52919    ///     <p>A string providing a hint for a <a href="/en-US/docs/Glossary/User_agent">user agent's</a> autocomplete feature. See <a href="/en-US/docs/Web/HTML/Attributes/autocomplete">The HTML autocomplete attribute</a> for a complete list of values and details on how to use autocomplete.</p>
52920    ///   
52921    pub autocomplete: core::option::Option<AttributeValue<'life>>,
52922    ///
52923    ///     <p>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 <code>autofocus</code> attribute.</p>
52924    ///   
52925    pub autofocus: core::option::Option<AttributeValue<'life>>,
52926    ///
52927    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
52928    ///   
52929    pub class: core::option::Option<AttributeValue<'life>>,
52930    ///
52931    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
52932    ///     <ul>
52933    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
52934    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
52935    ///     </ul>
52936    ///   
52937    pub contenteditable: core::option::Option<AttributeValue<'life>>,
52938    ///
52939    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
52940    ///   
52941    pub contextmenu: core::option::Option<AttributeValue<'life>>,
52942    ///
52943    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
52944    ///   
52945    #[cfg(feature = "alloc")]
52946    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
52947    ///
52948    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
52949    ///     <ul>
52950    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
52951    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
52952    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
52953    ///     </ul>
52954    ///   
52955    pub dir: core::option::Option<AttributeValue<'life>>,
52956    ///
52957    ///     <p>This Boolean attribute indicates that the user cannot interact with the control. If this attribute is not specified, the control inherits its setting from the containing element, for example <a href="/en-US/docs/Web/HTML/Element/fieldset"><code>&lt;fieldset&gt;</code></a>; if there is no containing element with the <code>disabled</code> attribute set, then the control is enabled.</p>
52958    ///   
52959    pub disabled: core::option::Option<AttributeValue<'life>>,
52960    ///
52961    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
52962    ///     <ul>
52963    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
52964    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
52965    ///     </ul>
52966    ///   
52967    pub draggable: core::option::Option<AttributeValue<'life>>,
52968    ///
52969    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
52970    ///   
52971    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
52972    ///
52973    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
52974    ///   
52975    pub exportparts: core::option::Option<AttributeValue<'life>>,
52976    /// /// Extra attributes of the element.
52977
52978    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
52979    #[cfg(feature = "alloc")]
52980    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
52981    ///
52982    ///     <p>The <a href="/en-US/docs/Web/HTML/Element/form"><code>&lt;form&gt;</code></a> element to associate the <code>&lt;select&gt;</code> with (its <em>form owner</em>). The value of this attribute must be the <a href="/en-US/docs/Web/HTML/Global_attributes#id"><code>id</code></a> of a <code>&lt;form&gt;</code> in the same document. (If this attribute is not set, the <code>&lt;select&gt;</code> is associated with its ancestor <code>&lt;form&gt;</code> element, if any.)</p>
52983    ///     <p>This attribute lets you associate <code>&lt;select&gt;</code> elements to <code>&lt;form&gt;</code>s anywhere in the document, not just inside a <code>&lt;form&gt;</code>. It can also override an ancestor <code>&lt;form&gt;</code> element.</p>
52984    ///   
52985    pub form: core::option::Option<AttributeValue<'life>>,
52986    ///
52987    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
52988    ///   
52989    pub hidden: core::option::Option<AttributeValue<'life>>,
52990    ///
52991    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
52992    ///   
52993    pub id: core::option::Option<AttributeValue<'life>>,
52994    ///
52995    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
52996    ///   
52997    pub inert: core::option::Option<AttributeValue<'life>>,
52998    ///
52999    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
53000    ///   
53001    pub inputmode: core::option::Option<AttributeValue<'life>>,
53002    ///
53003    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
53004    ///   
53005    pub is: core::option::Option<AttributeValue<'life>>,
53006    ///
53007    ///     <p>The unique, global identifier of an item.</p>
53008    ///   
53009    pub itemid: core::option::Option<AttributeValue<'life>>,
53010    ///
53011    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
53012    ///   
53013    pub itemprop: core::option::Option<AttributeValue<'life>>,
53014    ///
53015    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
53016    ///   
53017    pub itemref: core::option::Option<AttributeValue<'life>>,
53018    ///
53019    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
53020    ///   
53021    pub itemscope: core::option::Option<AttributeValue<'life>>,
53022    ///
53023    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
53024    ///   
53025    pub itemtype: core::option::Option<AttributeValue<'life>>,
53026    ///
53027    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
53028    ///   
53029    pub lang: core::option::Option<AttributeValue<'life>>,
53030    ///
53031    ///     <p>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 <code>multiple</code> is specified, most browsers will show a scrolling list box instead of a single line dropdown.</p>
53032    ///   
53033    pub multiple: core::option::Option<AttributeValue<'life>>,
53034    ///
53035    ///     <p>This attribute is used to specify the name of the control.</p>
53036    ///   
53037    pub name: core::option::Option<AttributeValue<'life>>,
53038    ///
53039    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
53040    ///   
53041    pub nonce: core::option::Option<AttributeValue<'life>>,
53042    ///
53043    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
53044    ///   
53045    pub part: core::option::Option<AttributeValue<'life>>,
53046    ///
53047    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
53048    ///   
53049    pub popover: core::option::Option<AttributeValue<'life>>,
53050    ///
53051    ///     <p>A Boolean attribute indicating that an option with a non-empty string value must be selected.</p>
53052    ///   
53053    pub required: core::option::Option<AttributeValue<'life>>,
53054    ///
53055    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
53056    ///   
53057    pub role: core::option::Option<AttributeValue<'life>>,
53058    ///
53059    ///     <p>If the control is presented as a scrolling list box (e.g. when <code>multiple</code> 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 <code>0</code>.</p>
53060    ///     <div class="notecard note" id="sect1">
53061    ///       <p><strong>Note:</strong> According to the HTML specification, the default value for size should be <code>1</code>; 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 <code>0</code> for the time being with Firefox.</p>
53062    ///     </div>
53063    ///   
53064    pub size: core::option::Option<AttributeValue<'life>>,
53065    ///
53066    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
53067    ///   
53068    pub slot: core::option::Option<AttributeValue<'life>>,
53069    ///
53070    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
53071    ///     <ul>
53072    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
53073    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
53074    ///     </ul>
53075    ///   
53076    pub spellcheck: core::option::Option<AttributeValue<'life>>,
53077    ///
53078    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
53079    ///   
53080    pub style: core::option::Option<AttributeValue<'life>>,
53081    ///
53082    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
53083    ///     <ul>
53084    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
53085    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
53086    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
53087    ///     </ul>
53088    ///   
53089    pub tabindex: core::option::Option<AttributeValue<'life>>,
53090    ///
53091    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
53092    ///   
53093    pub title: core::option::Option<AttributeValue<'life>>,
53094    ///
53095    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
53096    ///     <ul>
53097    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
53098    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
53099    ///     </ul>
53100    ///   
53101    pub translate: core::option::Option<AttributeValue<'life>>,
53102    ///
53103    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
53104    ///     <ul>
53105    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
53106    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
53107    ///     </ul>
53108    ///   
53109    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
53110}
53111#[allow(deprecated)]
53112
53113impl<'life> Select<'life> {
53114    /// Get the tag name of the element.
53115    /// This is the same as the name of the struct, in kebab-case.
53116    pub fn tag() -> &'static str {
53117        "select"
53118    }
53119    /// Sets an attribute of the element.
53120    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
53121    /// If the `alloc` feature is disabled, this function will silently fail.
53122    ///
53123    /// # Note
53124    /// This only works when the attribute is lowercase.
53125    pub fn set_attr(
53126        &mut self,
53127        name: &'life str,
53128        value: impl core::convert::Into<AttributeValue<'life>>,
53129    ) {
53130        match name {
53131            "accesskey" => self.accesskey = Some(value.into()),
53132            "autocapitalize" => self.autocapitalize = Some(value.into()),
53133            "autocomplete" => self.autocomplete = Some(value.into()),
53134            "autofocus" => self.autofocus = Some(value.into()),
53135            "class" => self.class = Some(value.into()),
53136            "contenteditable" => self.contenteditable = Some(value.into()),
53137            "contextmenu" => self.contextmenu = Some(value.into()),
53138            "dir" => self.dir = Some(value.into()),
53139            "disabled" => self.disabled = Some(value.into()),
53140            "draggable" => self.draggable = Some(value.into()),
53141            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
53142            "exportparts" => self.exportparts = Some(value.into()),
53143            "form" => self.form = Some(value.into()),
53144            "hidden" => self.hidden = Some(value.into()),
53145            "id" => self.id = Some(value.into()),
53146            "inert" => self.inert = Some(value.into()),
53147            "inputmode" => self.inputmode = Some(value.into()),
53148            "is" => self.is = Some(value.into()),
53149            "itemid" => self.itemid = Some(value.into()),
53150            "itemprop" => self.itemprop = Some(value.into()),
53151            "itemref" => self.itemref = Some(value.into()),
53152            "itemscope" => self.itemscope = Some(value.into()),
53153            "itemtype" => self.itemtype = Some(value.into()),
53154            "lang" => self.lang = Some(value.into()),
53155            "multiple" => self.multiple = Some(value.into()),
53156            "name" => self.name = Some(value.into()),
53157            "nonce" => self.nonce = Some(value.into()),
53158            "part" => self.part = Some(value.into()),
53159            "popover" => self.popover = Some(value.into()),
53160            "required" => self.required = Some(value.into()),
53161            "role" => self.role = Some(value.into()),
53162            "size" => self.size = Some(value.into()),
53163            "slot" => self.slot = Some(value.into()),
53164            "spellcheck" => self.spellcheck = Some(value.into()),
53165            "style" => self.style = Some(value.into()),
53166            "tabindex" => self.tabindex = Some(value.into()),
53167            "title" => self.title = Some(value.into()),
53168            "translate" => self.translate = Some(value.into()),
53169            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
53170            #[cfg(feature = "alloc")]
53171            _ => {
53172                #[allow(clippy::useless_conversion)]
53173                self.extra.insert(name.into(), value.into());
53174            }
53175            #[cfg(not(feature = "alloc"))]
53176            _ => {}
53177        }
53178    }
53179}
53180/// The <strong><code>&lt;select&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents a control that provides a menu of options.
53181///
53182/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select>
53183
53184#[cfg(feature = "alloc")]
53185#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
53186pub struct SelectOwned {
53187    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
53188    ///   
53189    pub accesskey: core::option::Option<AttributeValueOwned>,
53190    ///
53191    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
53192    ///     <ul>
53193    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
53194    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
53195    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
53196    ///       <li><code>characters</code>, all letters should default to uppercase</li>
53197    ///     </ul>
53198    ///   
53199    pub autocapitalize: core::option::Option<AttributeValueOwned>,
53200    ///
53201    ///     <p>A string providing a hint for a <a href="/en-US/docs/Glossary/User_agent">user agent's</a> autocomplete feature. See <a href="/en-US/docs/Web/HTML/Attributes/autocomplete">The HTML autocomplete attribute</a> for a complete list of values and details on how to use autocomplete.</p>
53202    ///   
53203    pub autocomplete: core::option::Option<AttributeValueOwned>,
53204    ///
53205    ///     <p>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 <code>autofocus</code> attribute.</p>
53206    ///   
53207    pub autofocus: core::option::Option<AttributeValueOwned>,
53208    ///
53209    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
53210    ///   
53211    pub class: core::option::Option<AttributeValueOwned>,
53212    ///
53213    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
53214    ///     <ul>
53215    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
53216    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
53217    ///     </ul>
53218    ///   
53219    pub contenteditable: core::option::Option<AttributeValueOwned>,
53220    ///
53221    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
53222    ///   
53223    pub contextmenu: core::option::Option<AttributeValueOwned>,
53224    ///
53225    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
53226    ///   
53227    #[cfg(feature = "alloc")]
53228    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
53229    ///
53230    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
53231    ///     <ul>
53232    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
53233    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
53234    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
53235    ///     </ul>
53236    ///   
53237    pub dir: core::option::Option<AttributeValueOwned>,
53238    ///
53239    ///     <p>This Boolean attribute indicates that the user cannot interact with the control. If this attribute is not specified, the control inherits its setting from the containing element, for example <a href="/en-US/docs/Web/HTML/Element/fieldset"><code>&lt;fieldset&gt;</code></a>; if there is no containing element with the <code>disabled</code> attribute set, then the control is enabled.</p>
53240    ///   
53241    pub disabled: core::option::Option<AttributeValueOwned>,
53242    ///
53243    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
53244    ///     <ul>
53245    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
53246    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
53247    ///     </ul>
53248    ///   
53249    pub draggable: core::option::Option<AttributeValueOwned>,
53250    ///
53251    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
53252    ///   
53253    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
53254    ///
53255    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
53256    ///   
53257    pub exportparts: core::option::Option<AttributeValueOwned>,
53258    /// /// Extra attributes of the element.
53259
53260    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
53261    #[cfg(feature = "alloc")]
53262    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
53263    ///
53264    ///     <p>The <a href="/en-US/docs/Web/HTML/Element/form"><code>&lt;form&gt;</code></a> element to associate the <code>&lt;select&gt;</code> with (its <em>form owner</em>). The value of this attribute must be the <a href="/en-US/docs/Web/HTML/Global_attributes#id"><code>id</code></a> of a <code>&lt;form&gt;</code> in the same document. (If this attribute is not set, the <code>&lt;select&gt;</code> is associated with its ancestor <code>&lt;form&gt;</code> element, if any.)</p>
53265    ///     <p>This attribute lets you associate <code>&lt;select&gt;</code> elements to <code>&lt;form&gt;</code>s anywhere in the document, not just inside a <code>&lt;form&gt;</code>. It can also override an ancestor <code>&lt;form&gt;</code> element.</p>
53266    ///   
53267    pub form: core::option::Option<AttributeValueOwned>,
53268    ///
53269    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
53270    ///   
53271    pub hidden: core::option::Option<AttributeValueOwned>,
53272    ///
53273    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
53274    ///   
53275    pub id: core::option::Option<AttributeValueOwned>,
53276    ///
53277    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
53278    ///   
53279    pub inert: core::option::Option<AttributeValueOwned>,
53280    ///
53281    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
53282    ///   
53283    pub inputmode: core::option::Option<AttributeValueOwned>,
53284    ///
53285    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
53286    ///   
53287    pub is: core::option::Option<AttributeValueOwned>,
53288    ///
53289    ///     <p>The unique, global identifier of an item.</p>
53290    ///   
53291    pub itemid: core::option::Option<AttributeValueOwned>,
53292    ///
53293    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
53294    ///   
53295    pub itemprop: core::option::Option<AttributeValueOwned>,
53296    ///
53297    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
53298    ///   
53299    pub itemref: core::option::Option<AttributeValueOwned>,
53300    ///
53301    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
53302    ///   
53303    pub itemscope: core::option::Option<AttributeValueOwned>,
53304    ///
53305    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
53306    ///   
53307    pub itemtype: core::option::Option<AttributeValueOwned>,
53308    ///
53309    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
53310    ///   
53311    pub lang: core::option::Option<AttributeValueOwned>,
53312    ///
53313    ///     <p>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 <code>multiple</code> is specified, most browsers will show a scrolling list box instead of a single line dropdown.</p>
53314    ///   
53315    pub multiple: core::option::Option<AttributeValueOwned>,
53316    ///
53317    ///     <p>This attribute is used to specify the name of the control.</p>
53318    ///   
53319    pub name: core::option::Option<AttributeValueOwned>,
53320    ///
53321    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
53322    ///   
53323    pub nonce: core::option::Option<AttributeValueOwned>,
53324    ///
53325    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
53326    ///   
53327    pub part: core::option::Option<AttributeValueOwned>,
53328    ///
53329    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
53330    ///   
53331    pub popover: core::option::Option<AttributeValueOwned>,
53332    ///
53333    ///     <p>A Boolean attribute indicating that an option with a non-empty string value must be selected.</p>
53334    ///   
53335    pub required: core::option::Option<AttributeValueOwned>,
53336    ///
53337    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
53338    ///   
53339    pub role: core::option::Option<AttributeValueOwned>,
53340    ///
53341    ///     <p>If the control is presented as a scrolling list box (e.g. when <code>multiple</code> 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 <code>0</code>.</p>
53342    ///     <div class="notecard note" id="sect1">
53343    ///       <p><strong>Note:</strong> According to the HTML specification, the default value for size should be <code>1</code>; 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 <code>0</code> for the time being with Firefox.</p>
53344    ///     </div>
53345    ///   
53346    pub size: core::option::Option<AttributeValueOwned>,
53347    ///
53348    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
53349    ///   
53350    pub slot: core::option::Option<AttributeValueOwned>,
53351    ///
53352    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
53353    ///     <ul>
53354    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
53355    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
53356    ///     </ul>
53357    ///   
53358    pub spellcheck: core::option::Option<AttributeValueOwned>,
53359    ///
53360    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
53361    ///   
53362    pub style: core::option::Option<AttributeValueOwned>,
53363    ///
53364    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
53365    ///     <ul>
53366    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
53367    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
53368    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
53369    ///     </ul>
53370    ///   
53371    pub tabindex: core::option::Option<AttributeValueOwned>,
53372    ///
53373    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
53374    ///   
53375    pub title: core::option::Option<AttributeValueOwned>,
53376    ///
53377    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
53378    ///     <ul>
53379    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
53380    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
53381    ///     </ul>
53382    ///   
53383    pub translate: core::option::Option<AttributeValueOwned>,
53384    ///
53385    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
53386    ///     <ul>
53387    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
53388    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
53389    ///     </ul>
53390    ///   
53391    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
53392}
53393#[allow(deprecated)]
53394#[cfg(feature = "alloc")]
53395impl SelectOwned {
53396    /// Get the tag name of the element.
53397    /// This is the same as the name of the struct, in kebab-case.
53398    pub fn tag() -> &'static str {
53399        "select"
53400    }
53401    /// Sets an attribute of the element.
53402    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
53403    /// If the `alloc` feature is disabled, this function will silently fail.
53404    ///
53405    /// # Note
53406    /// This only works when the attribute is lowercase.
53407    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
53408        match name {
53409            "accesskey" => self.accesskey = Some(value.into()),
53410            "autocapitalize" => self.autocapitalize = Some(value.into()),
53411            "autocomplete" => self.autocomplete = Some(value.into()),
53412            "autofocus" => self.autofocus = Some(value.into()),
53413            "class" => self.class = Some(value.into()),
53414            "contenteditable" => self.contenteditable = Some(value.into()),
53415            "contextmenu" => self.contextmenu = Some(value.into()),
53416            "dir" => self.dir = Some(value.into()),
53417            "disabled" => self.disabled = Some(value.into()),
53418            "draggable" => self.draggable = Some(value.into()),
53419            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
53420            "exportparts" => self.exportparts = Some(value.into()),
53421            "form" => self.form = Some(value.into()),
53422            "hidden" => self.hidden = Some(value.into()),
53423            "id" => self.id = Some(value.into()),
53424            "inert" => self.inert = Some(value.into()),
53425            "inputmode" => self.inputmode = Some(value.into()),
53426            "is" => self.is = Some(value.into()),
53427            "itemid" => self.itemid = Some(value.into()),
53428            "itemprop" => self.itemprop = Some(value.into()),
53429            "itemref" => self.itemref = Some(value.into()),
53430            "itemscope" => self.itemscope = Some(value.into()),
53431            "itemtype" => self.itemtype = Some(value.into()),
53432            "lang" => self.lang = Some(value.into()),
53433            "multiple" => self.multiple = Some(value.into()),
53434            "name" => self.name = Some(value.into()),
53435            "nonce" => self.nonce = Some(value.into()),
53436            "part" => self.part = Some(value.into()),
53437            "popover" => self.popover = Some(value.into()),
53438            "required" => self.required = Some(value.into()),
53439            "role" => self.role = Some(value.into()),
53440            "size" => self.size = Some(value.into()),
53441            "slot" => self.slot = Some(value.into()),
53442            "spellcheck" => self.spellcheck = Some(value.into()),
53443            "style" => self.style = Some(value.into()),
53444            "tabindex" => self.tabindex = Some(value.into()),
53445            "title" => self.title = Some(value.into()),
53446            "translate" => self.translate = Some(value.into()),
53447            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
53448            #[cfg(feature = "alloc")]
53449            _ => {
53450                #[allow(clippy::useless_conversion)]
53451                self.extra.insert(name.into(), value.into());
53452            }
53453            #[cfg(not(feature = "alloc"))]
53454            _ => {}
53455        }
53456    }
53457}
53458/// The <strong><code>&lt;textarea&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents a multi-line plain-text editing control, useful when you want to allow users to enter a sizeable amount of free-form text, for example a comment on a review or feedback form.
53459///
53460/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea>
53461
53462#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
53463pub struct Textarea<'life> {
53464    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
53465    ///   
53466    pub accesskey: core::option::Option<AttributeValue<'life>>,
53467    ///
53468    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
53469    ///     <ul>
53470    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
53471    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
53472    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
53473    ///       <li><code>characters</code>, all letters should default to uppercase</li>
53474    ///     </ul>
53475    ///   
53476    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
53477    ///
53478    ///     <p>This attribute indicates whether the value of the control can be automatically completed by the browser. Possible values are:</p>
53479    ///     <ul>
53480    ///       <li><code>off</code>: The user must explicitly enter a value into this field for every use, or the document provides its own auto-completion method; the browser does not automatically complete the entry.</li>
53481    ///       <li><code>on</code>: The browser can automatically complete the value based on values that the user has entered during previous uses.</li>
53482    ///     </ul>
53483    ///     <p>If the <code>autocomplete</code> attribute is not specified on a <code>&lt;textarea&gt;</code> element, then the browser uses the <code>autocomplete</code> attribute value of the <code>&lt;textarea&gt;</code> element's form owner. The form owner is either the <a href="/en-US/docs/Web/HTML/Element/form"><code>&lt;form&gt;</code></a> element that this <code>&lt;textarea&gt;</code> element is a descendant of or the form element whose <code>id</code> is specified by the <code>form</code> attribute of the input element. For more information, see the <a href="/en-US/docs/Web/HTML/Element/form#autocomplete"><code>autocomplete</code></a> attribute in <a href="/en-US/docs/Web/HTML/Element/form"><code>&lt;form&gt;</code></a>.</p>
53484    ///   
53485    pub autocomplete: core::option::Option<AttributeValue<'life>>,
53486    ///
53487    ///     <p>A string which indicates whether to activate automatic spelling correction and processing of text substitutions (if any are configured) while the user is editing this <code>textarea</code>. Permitted values are:</p>
53488    ///     <dl>
53489    ///       <dt id="on"><code>on</code></dt>
53490    ///       <dd>
53491    ///         <p>Enable automatic spelling correction and text substitutions.</p>
53492    ///       </dd>
53493    ///       <dt id="off"><code>off</code></dt>
53494    ///       <dd>
53495    ///         <p>Disable automatic spelling correction and text substitutions.</p>
53496    ///       </dd>
53497    ///     </dl>
53498    ///   
53499    pub autocorrect: core::option::Option<AttributeValue<'life>>,
53500    ///
53501    ///     <p>This Boolean attribute lets you specify that a form control should have input focus when the page loads. Only one form-associated element in a document can have this attribute specified.</p>
53502    ///   
53503    pub autofocus: core::option::Option<AttributeValue<'life>>,
53504    ///
53505    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
53506    ///   
53507    pub class: core::option::Option<AttributeValue<'life>>,
53508    ///
53509    ///     <p>The visible width of the text control, in average character widths. If it is specified, it must be a positive integer. If it is not specified, the default value is <code>20</code>.</p>
53510    ///   
53511    pub cols: core::option::Option<AttributeValue<'life>>,
53512    ///
53513    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
53514    ///     <ul>
53515    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
53516    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
53517    ///     </ul>
53518    ///   
53519    pub contenteditable: core::option::Option<AttributeValue<'life>>,
53520    ///
53521    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
53522    ///   
53523    pub contextmenu: core::option::Option<AttributeValue<'life>>,
53524    ///
53525    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
53526    ///   
53527    #[cfg(feature = "alloc")]
53528    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
53529    ///
53530    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
53531    ///     <ul>
53532    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
53533    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
53534    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
53535    ///     </ul>
53536    ///   
53537    pub dir: core::option::Option<AttributeValue<'life>>,
53538    ///
53539    ///     <p>This Boolean attribute indicates that the user cannot interact with the control. If this attribute is not specified, the control inherits its setting from the containing element, for example <a href="/en-US/docs/Web/HTML/Element/fieldset"><code>&lt;fieldset&gt;</code></a>; if there is no containing element when the <code>disabled</code> attribute is set, the control is enabled.</p>
53540    ///   
53541    pub disabled: core::option::Option<AttributeValue<'life>>,
53542    ///
53543    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
53544    ///     <ul>
53545    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
53546    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
53547    ///     </ul>
53548    ///   
53549    pub draggable: core::option::Option<AttributeValue<'life>>,
53550    ///
53551    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
53552    ///   
53553    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
53554    ///
53555    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
53556    ///   
53557    pub exportparts: core::option::Option<AttributeValue<'life>>,
53558    /// /// Extra attributes of the element.
53559
53560    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
53561    #[cfg(feature = "alloc")]
53562    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
53563    ///
53564    ///     <p>The form element that the <code>&lt;textarea&gt;</code> element is associated with (its "form owner"). The value of the attribute must be the <code>id</code> of a form element in the same document. If this attribute is not specified, the <code>&lt;textarea&gt;</code> element must be a descendant of a form element. This attribute enables you to place <code>&lt;textarea&gt;</code> elements anywhere within a document, not just as descendants of form elements.</p>
53565    ///   
53566    pub form: core::option::Option<AttributeValue<'life>>,
53567    ///
53568    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
53569    ///   
53570    pub hidden: core::option::Option<AttributeValue<'life>>,
53571    ///
53572    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
53573    ///   
53574    pub id: core::option::Option<AttributeValue<'life>>,
53575    ///
53576    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
53577    ///   
53578    pub inert: core::option::Option<AttributeValue<'life>>,
53579    ///
53580    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
53581    ///   
53582    pub inputmode: core::option::Option<AttributeValue<'life>>,
53583    ///
53584    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
53585    ///   
53586    pub is: core::option::Option<AttributeValue<'life>>,
53587    ///
53588    ///     <p>The unique, global identifier of an item.</p>
53589    ///   
53590    pub itemid: core::option::Option<AttributeValue<'life>>,
53591    ///
53592    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
53593    ///   
53594    pub itemprop: core::option::Option<AttributeValue<'life>>,
53595    ///
53596    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
53597    ///   
53598    pub itemref: core::option::Option<AttributeValue<'life>>,
53599    ///
53600    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
53601    ///   
53602    pub itemscope: core::option::Option<AttributeValue<'life>>,
53603    ///
53604    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
53605    ///   
53606    pub itemtype: core::option::Option<AttributeValue<'life>>,
53607    ///
53608    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
53609    ///   
53610    pub lang: core::option::Option<AttributeValue<'life>>,
53611    ///
53612    ///     <p>The maximum number of characters (UTF-16 code units) that the user can enter. If this value isn't specified, the user can enter an unlimited number of characters.</p>
53613    ///   
53614    pub maxlength: core::option::Option<AttributeValue<'life>>,
53615    ///
53616    ///     <p>The minimum number of characters (UTF-16 code units) required that the user should enter.</p>
53617    ///   
53618    pub minlength: core::option::Option<AttributeValue<'life>>,
53619    ///
53620    ///     <p>The name of the control.</p>
53621    ///   
53622    pub name: core::option::Option<AttributeValue<'life>>,
53623    ///
53624    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
53625    ///   
53626    pub nonce: core::option::Option<AttributeValue<'life>>,
53627    ///
53628    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
53629    ///   
53630    pub part: core::option::Option<AttributeValue<'life>>,
53631    ///
53632    ///     <p>A hint to the user of what can be entered in the control. Carriage returns or line-feeds within the placeholder text must be treated as line breaks when rendering the hint.</p>
53633    ///     <div id="sect1" class="notecard note">
53634    ///       <p><strong>Note:</strong> Placeholders should only be used to show an example of the type of data that should be entered into a form; they are <em>not</em> a substitute for a proper <a href="/en-US/docs/Web/HTML/Element/label"><code>&lt;label&gt;</code></a> element tied to the input. See <a href="/en-US/docs/Web/HTML/Element/input#labels"><code>&lt;input&gt;</code> labels</a> for a full explanation.</p>
53635    ///     </div>
53636    ///   
53637    pub placeholder: core::option::Option<AttributeValue<'life>>,
53638    ///
53639    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
53640    ///   
53641    pub popover: core::option::Option<AttributeValue<'life>>,
53642    ///
53643    ///     <p>This Boolean attribute indicates that the user cannot modify the value of the control. Unlike the <code>disabled</code> attribute, the <code>readonly</code> attribute does not prevent the user from clicking or selecting in the control. The value of a read-only control is still submitted with the form.</p>
53644    ///   
53645    pub readonly: core::option::Option<AttributeValue<'life>>,
53646    ///
53647    ///     <p>This attribute specifies that the user must fill in a value before submitting a form.</p>
53648    ///   
53649    pub required: core::option::Option<AttributeValue<'life>>,
53650    ///
53651    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
53652    ///   
53653    pub role: core::option::Option<AttributeValue<'life>>,
53654    ///
53655    ///     <p>The number of visible text lines for the control. If it is specified, it must be a positive integer. If it is not specified, the default value is 2.</p>
53656    ///   
53657    pub rows: core::option::Option<AttributeValue<'life>>,
53658    ///
53659    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
53660    ///   
53661    pub slot: core::option::Option<AttributeValue<'life>>,
53662    ///
53663    ///     <p>Specifies whether the <code>&lt;textarea&gt;</code> is subject to spell checking by the underlying browser/OS. The value can be:</p>
53664    ///     <ul>
53665    ///       <li><code>true</code>: Indicates that the element needs to have its spelling and grammar checked.</li>
53666    ///       <li><code>default</code> : Indicates that the element is to act according to a default behavior, possibly based on the parent element's own <code>spellcheck</code> value.</li>
53667    ///       <li><code>false</code> : Indicates that the element should not be spell checked.</li>
53668    ///     </ul>
53669    ///   
53670    pub spellcheck: core::option::Option<AttributeValue<'life>>,
53671    ///
53672    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
53673    ///   
53674    pub style: core::option::Option<AttributeValue<'life>>,
53675    ///
53676    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
53677    ///     <ul>
53678    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
53679    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
53680    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
53681    ///     </ul>
53682    ///   
53683    pub tabindex: core::option::Option<AttributeValue<'life>>,
53684    ///
53685    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
53686    ///   
53687    pub title: core::option::Option<AttributeValue<'life>>,
53688    ///
53689    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
53690    ///     <ul>
53691    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
53692    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
53693    ///     </ul>
53694    ///   
53695    pub translate: core::option::Option<AttributeValue<'life>>,
53696    ///
53697    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
53698    ///     <ul>
53699    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
53700    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
53701    ///     </ul>
53702    ///   
53703    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
53704    ///
53705    ///     <p>Indicates how the control should wrap the value for form submission. Possible values are:</p>
53706    ///     <ul>
53707    ///       <li><code>hard</code>: The browser automatically inserts line breaks (CR+LF) so that each line is no longer than the width of the control; the <a href="#cols"><code>cols</code></a> attribute must be specified for this to take effect</li>
53708    ///       <li><code>soft</code>: The browser ensures that all line breaks in the entered value are a <code>CR+LF</code> pair, but no additional line breaks are added to the value.</li>
53709    ///       <li><code>off</code> <abbr title="Non-standard. Check cross-browser support before using." class="icon icon-nonstandard">
53710    ///     <span class="visually-hidden">Non-standard</span>
53711    /// </abbr>: Like <code>soft</code> but changes appearance to <code>white-space: pre</code> so line segments exceeding <code>cols</code> are not wrapped and the <code>&lt;textarea&gt;</code> becomes horizontally scrollable.</li>
53712    ///     </ul>
53713    ///     <p>If this attribute is not specified, <code>soft</code> is its default value.</p>
53714    ///   
53715    pub wrap: core::option::Option<AttributeValue<'life>>,
53716}
53717#[allow(deprecated)]
53718
53719impl<'life> Textarea<'life> {
53720    /// Get the tag name of the element.
53721    /// This is the same as the name of the struct, in kebab-case.
53722    pub fn tag() -> &'static str {
53723        "textarea"
53724    }
53725    /// Sets an attribute of the element.
53726    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
53727    /// If the `alloc` feature is disabled, this function will silently fail.
53728    ///
53729    /// # Note
53730    /// This only works when the attribute is lowercase.
53731    pub fn set_attr(
53732        &mut self,
53733        name: &'life str,
53734        value: impl core::convert::Into<AttributeValue<'life>>,
53735    ) {
53736        match name {
53737            "accesskey" => self.accesskey = Some(value.into()),
53738            "autocapitalize" => self.autocapitalize = Some(value.into()),
53739            "autocomplete" => self.autocomplete = Some(value.into()),
53740            "autocorrect" => self.autocorrect = Some(value.into()),
53741            "autofocus" => self.autofocus = Some(value.into()),
53742            "class" => self.class = Some(value.into()),
53743            "cols" => self.cols = Some(value.into()),
53744            "contenteditable" => self.contenteditable = Some(value.into()),
53745            "contextmenu" => self.contextmenu = Some(value.into()),
53746            "dir" => self.dir = Some(value.into()),
53747            "disabled" => self.disabled = Some(value.into()),
53748            "draggable" => self.draggable = Some(value.into()),
53749            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
53750            "exportparts" => self.exportparts = Some(value.into()),
53751            "form" => self.form = Some(value.into()),
53752            "hidden" => self.hidden = Some(value.into()),
53753            "id" => self.id = Some(value.into()),
53754            "inert" => self.inert = Some(value.into()),
53755            "inputmode" => self.inputmode = Some(value.into()),
53756            "is" => self.is = Some(value.into()),
53757            "itemid" => self.itemid = Some(value.into()),
53758            "itemprop" => self.itemprop = Some(value.into()),
53759            "itemref" => self.itemref = Some(value.into()),
53760            "itemscope" => self.itemscope = Some(value.into()),
53761            "itemtype" => self.itemtype = Some(value.into()),
53762            "lang" => self.lang = Some(value.into()),
53763            "maxlength" => self.maxlength = Some(value.into()),
53764            "minlength" => self.minlength = Some(value.into()),
53765            "name" => self.name = Some(value.into()),
53766            "nonce" => self.nonce = Some(value.into()),
53767            "part" => self.part = Some(value.into()),
53768            "placeholder" => self.placeholder = Some(value.into()),
53769            "popover" => self.popover = Some(value.into()),
53770            "readonly" => self.readonly = Some(value.into()),
53771            "required" => self.required = Some(value.into()),
53772            "role" => self.role = Some(value.into()),
53773            "rows" => self.rows = Some(value.into()),
53774            "slot" => self.slot = Some(value.into()),
53775            "spellcheck" => self.spellcheck = Some(value.into()),
53776            "style" => self.style = Some(value.into()),
53777            "tabindex" => self.tabindex = Some(value.into()),
53778            "title" => self.title = Some(value.into()),
53779            "translate" => self.translate = Some(value.into()),
53780            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
53781            "wrap" => self.wrap = Some(value.into()),
53782            #[cfg(feature = "alloc")]
53783            _ => {
53784                #[allow(clippy::useless_conversion)]
53785                self.extra.insert(name.into(), value.into());
53786            }
53787            #[cfg(not(feature = "alloc"))]
53788            _ => {}
53789        }
53790    }
53791}
53792/// The <strong><code>&lt;textarea&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents a multi-line plain-text editing control, useful when you want to allow users to enter a sizeable amount of free-form text, for example a comment on a review or feedback form.
53793///
53794/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea>
53795
53796#[cfg(feature = "alloc")]
53797#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
53798pub struct TextareaOwned {
53799    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
53800    ///   
53801    pub accesskey: core::option::Option<AttributeValueOwned>,
53802    ///
53803    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
53804    ///     <ul>
53805    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
53806    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
53807    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
53808    ///       <li><code>characters</code>, all letters should default to uppercase</li>
53809    ///     </ul>
53810    ///   
53811    pub autocapitalize: core::option::Option<AttributeValueOwned>,
53812    ///
53813    ///     <p>This attribute indicates whether the value of the control can be automatically completed by the browser. Possible values are:</p>
53814    ///     <ul>
53815    ///       <li><code>off</code>: The user must explicitly enter a value into this field for every use, or the document provides its own auto-completion method; the browser does not automatically complete the entry.</li>
53816    ///       <li><code>on</code>: The browser can automatically complete the value based on values that the user has entered during previous uses.</li>
53817    ///     </ul>
53818    ///     <p>If the <code>autocomplete</code> attribute is not specified on a <code>&lt;textarea&gt;</code> element, then the browser uses the <code>autocomplete</code> attribute value of the <code>&lt;textarea&gt;</code> element's form owner. The form owner is either the <a href="/en-US/docs/Web/HTML/Element/form"><code>&lt;form&gt;</code></a> element that this <code>&lt;textarea&gt;</code> element is a descendant of or the form element whose <code>id</code> is specified by the <code>form</code> attribute of the input element. For more information, see the <a href="/en-US/docs/Web/HTML/Element/form#autocomplete"><code>autocomplete</code></a> attribute in <a href="/en-US/docs/Web/HTML/Element/form"><code>&lt;form&gt;</code></a>.</p>
53819    ///   
53820    pub autocomplete: core::option::Option<AttributeValueOwned>,
53821    ///
53822    ///     <p>A string which indicates whether to activate automatic spelling correction and processing of text substitutions (if any are configured) while the user is editing this <code>textarea</code>. Permitted values are:</p>
53823    ///     <dl>
53824    ///       <dt id="on"><code>on</code></dt>
53825    ///       <dd>
53826    ///         <p>Enable automatic spelling correction and text substitutions.</p>
53827    ///       </dd>
53828    ///       <dt id="off"><code>off</code></dt>
53829    ///       <dd>
53830    ///         <p>Disable automatic spelling correction and text substitutions.</p>
53831    ///       </dd>
53832    ///     </dl>
53833    ///   
53834    pub autocorrect: core::option::Option<AttributeValueOwned>,
53835    ///
53836    ///     <p>This Boolean attribute lets you specify that a form control should have input focus when the page loads. Only one form-associated element in a document can have this attribute specified.</p>
53837    ///   
53838    pub autofocus: core::option::Option<AttributeValueOwned>,
53839    ///
53840    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
53841    ///   
53842    pub class: core::option::Option<AttributeValueOwned>,
53843    ///
53844    ///     <p>The visible width of the text control, in average character widths. If it is specified, it must be a positive integer. If it is not specified, the default value is <code>20</code>.</p>
53845    ///   
53846    pub cols: core::option::Option<AttributeValueOwned>,
53847    ///
53848    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
53849    ///     <ul>
53850    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
53851    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
53852    ///     </ul>
53853    ///   
53854    pub contenteditable: core::option::Option<AttributeValueOwned>,
53855    ///
53856    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
53857    ///   
53858    pub contextmenu: core::option::Option<AttributeValueOwned>,
53859    ///
53860    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
53861    ///   
53862    #[cfg(feature = "alloc")]
53863    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
53864    ///
53865    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
53866    ///     <ul>
53867    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
53868    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
53869    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
53870    ///     </ul>
53871    ///   
53872    pub dir: core::option::Option<AttributeValueOwned>,
53873    ///
53874    ///     <p>This Boolean attribute indicates that the user cannot interact with the control. If this attribute is not specified, the control inherits its setting from the containing element, for example <a href="/en-US/docs/Web/HTML/Element/fieldset"><code>&lt;fieldset&gt;</code></a>; if there is no containing element when the <code>disabled</code> attribute is set, the control is enabled.</p>
53875    ///   
53876    pub disabled: core::option::Option<AttributeValueOwned>,
53877    ///
53878    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
53879    ///     <ul>
53880    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
53881    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
53882    ///     </ul>
53883    ///   
53884    pub draggable: core::option::Option<AttributeValueOwned>,
53885    ///
53886    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
53887    ///   
53888    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
53889    ///
53890    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
53891    ///   
53892    pub exportparts: core::option::Option<AttributeValueOwned>,
53893    /// /// Extra attributes of the element.
53894
53895    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
53896    #[cfg(feature = "alloc")]
53897    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
53898    ///
53899    ///     <p>The form element that the <code>&lt;textarea&gt;</code> element is associated with (its "form owner"). The value of the attribute must be the <code>id</code> of a form element in the same document. If this attribute is not specified, the <code>&lt;textarea&gt;</code> element must be a descendant of a form element. This attribute enables you to place <code>&lt;textarea&gt;</code> elements anywhere within a document, not just as descendants of form elements.</p>
53900    ///   
53901    pub form: core::option::Option<AttributeValueOwned>,
53902    ///
53903    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
53904    ///   
53905    pub hidden: core::option::Option<AttributeValueOwned>,
53906    ///
53907    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
53908    ///   
53909    pub id: core::option::Option<AttributeValueOwned>,
53910    ///
53911    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
53912    ///   
53913    pub inert: core::option::Option<AttributeValueOwned>,
53914    ///
53915    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
53916    ///   
53917    pub inputmode: core::option::Option<AttributeValueOwned>,
53918    ///
53919    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
53920    ///   
53921    pub is: core::option::Option<AttributeValueOwned>,
53922    ///
53923    ///     <p>The unique, global identifier of an item.</p>
53924    ///   
53925    pub itemid: core::option::Option<AttributeValueOwned>,
53926    ///
53927    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
53928    ///   
53929    pub itemprop: core::option::Option<AttributeValueOwned>,
53930    ///
53931    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
53932    ///   
53933    pub itemref: core::option::Option<AttributeValueOwned>,
53934    ///
53935    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
53936    ///   
53937    pub itemscope: core::option::Option<AttributeValueOwned>,
53938    ///
53939    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
53940    ///   
53941    pub itemtype: core::option::Option<AttributeValueOwned>,
53942    ///
53943    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
53944    ///   
53945    pub lang: core::option::Option<AttributeValueOwned>,
53946    ///
53947    ///     <p>The maximum number of characters (UTF-16 code units) that the user can enter. If this value isn't specified, the user can enter an unlimited number of characters.</p>
53948    ///   
53949    pub maxlength: core::option::Option<AttributeValueOwned>,
53950    ///
53951    ///     <p>The minimum number of characters (UTF-16 code units) required that the user should enter.</p>
53952    ///   
53953    pub minlength: core::option::Option<AttributeValueOwned>,
53954    ///
53955    ///     <p>The name of the control.</p>
53956    ///   
53957    pub name: core::option::Option<AttributeValueOwned>,
53958    ///
53959    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
53960    ///   
53961    pub nonce: core::option::Option<AttributeValueOwned>,
53962    ///
53963    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
53964    ///   
53965    pub part: core::option::Option<AttributeValueOwned>,
53966    ///
53967    ///     <p>A hint to the user of what can be entered in the control. Carriage returns or line-feeds within the placeholder text must be treated as line breaks when rendering the hint.</p>
53968    ///     <div id="sect1" class="notecard note">
53969    ///       <p><strong>Note:</strong> Placeholders should only be used to show an example of the type of data that should be entered into a form; they are <em>not</em> a substitute for a proper <a href="/en-US/docs/Web/HTML/Element/label"><code>&lt;label&gt;</code></a> element tied to the input. See <a href="/en-US/docs/Web/HTML/Element/input#labels"><code>&lt;input&gt;</code> labels</a> for a full explanation.</p>
53970    ///     </div>
53971    ///   
53972    pub placeholder: core::option::Option<AttributeValueOwned>,
53973    ///
53974    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
53975    ///   
53976    pub popover: core::option::Option<AttributeValueOwned>,
53977    ///
53978    ///     <p>This Boolean attribute indicates that the user cannot modify the value of the control. Unlike the <code>disabled</code> attribute, the <code>readonly</code> attribute does not prevent the user from clicking or selecting in the control. The value of a read-only control is still submitted with the form.</p>
53979    ///   
53980    pub readonly: core::option::Option<AttributeValueOwned>,
53981    ///
53982    ///     <p>This attribute specifies that the user must fill in a value before submitting a form.</p>
53983    ///   
53984    pub required: core::option::Option<AttributeValueOwned>,
53985    ///
53986    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
53987    ///   
53988    pub role: core::option::Option<AttributeValueOwned>,
53989    ///
53990    ///     <p>The number of visible text lines for the control. If it is specified, it must be a positive integer. If it is not specified, the default value is 2.</p>
53991    ///   
53992    pub rows: core::option::Option<AttributeValueOwned>,
53993    ///
53994    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
53995    ///   
53996    pub slot: core::option::Option<AttributeValueOwned>,
53997    ///
53998    ///     <p>Specifies whether the <code>&lt;textarea&gt;</code> is subject to spell checking by the underlying browser/OS. The value can be:</p>
53999    ///     <ul>
54000    ///       <li><code>true</code>: Indicates that the element needs to have its spelling and grammar checked.</li>
54001    ///       <li><code>default</code> : Indicates that the element is to act according to a default behavior, possibly based on the parent element's own <code>spellcheck</code> value.</li>
54002    ///       <li><code>false</code> : Indicates that the element should not be spell checked.</li>
54003    ///     </ul>
54004    ///   
54005    pub spellcheck: core::option::Option<AttributeValueOwned>,
54006    ///
54007    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
54008    ///   
54009    pub style: core::option::Option<AttributeValueOwned>,
54010    ///
54011    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
54012    ///     <ul>
54013    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
54014    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
54015    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
54016    ///     </ul>
54017    ///   
54018    pub tabindex: core::option::Option<AttributeValueOwned>,
54019    ///
54020    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
54021    ///   
54022    pub title: core::option::Option<AttributeValueOwned>,
54023    ///
54024    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
54025    ///     <ul>
54026    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
54027    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
54028    ///     </ul>
54029    ///   
54030    pub translate: core::option::Option<AttributeValueOwned>,
54031    ///
54032    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
54033    ///     <ul>
54034    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
54035    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
54036    ///     </ul>
54037    ///   
54038    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
54039    ///
54040    ///     <p>Indicates how the control should wrap the value for form submission. Possible values are:</p>
54041    ///     <ul>
54042    ///       <li><code>hard</code>: The browser automatically inserts line breaks (CR+LF) so that each line is no longer than the width of the control; the <a href="#cols"><code>cols</code></a> attribute must be specified for this to take effect</li>
54043    ///       <li><code>soft</code>: The browser ensures that all line breaks in the entered value are a <code>CR+LF</code> pair, but no additional line breaks are added to the value.</li>
54044    ///       <li><code>off</code> <abbr title="Non-standard. Check cross-browser support before using." class="icon icon-nonstandard">
54045    ///     <span class="visually-hidden">Non-standard</span>
54046    /// </abbr>: Like <code>soft</code> but changes appearance to <code>white-space: pre</code> so line segments exceeding <code>cols</code> are not wrapped and the <code>&lt;textarea&gt;</code> becomes horizontally scrollable.</li>
54047    ///     </ul>
54048    ///     <p>If this attribute is not specified, <code>soft</code> is its default value.</p>
54049    ///   
54050    pub wrap: core::option::Option<AttributeValueOwned>,
54051}
54052#[allow(deprecated)]
54053#[cfg(feature = "alloc")]
54054impl TextareaOwned {
54055    /// Get the tag name of the element.
54056    /// This is the same as the name of the struct, in kebab-case.
54057    pub fn tag() -> &'static str {
54058        "textarea"
54059    }
54060    /// Sets an attribute of the element.
54061    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
54062    /// If the `alloc` feature is disabled, this function will silently fail.
54063    ///
54064    /// # Note
54065    /// This only works when the attribute is lowercase.
54066    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
54067        match name {
54068            "accesskey" => self.accesskey = Some(value.into()),
54069            "autocapitalize" => self.autocapitalize = Some(value.into()),
54070            "autocomplete" => self.autocomplete = Some(value.into()),
54071            "autocorrect" => self.autocorrect = Some(value.into()),
54072            "autofocus" => self.autofocus = Some(value.into()),
54073            "class" => self.class = Some(value.into()),
54074            "cols" => self.cols = Some(value.into()),
54075            "contenteditable" => self.contenteditable = Some(value.into()),
54076            "contextmenu" => self.contextmenu = Some(value.into()),
54077            "dir" => self.dir = Some(value.into()),
54078            "disabled" => self.disabled = Some(value.into()),
54079            "draggable" => self.draggable = Some(value.into()),
54080            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
54081            "exportparts" => self.exportparts = Some(value.into()),
54082            "form" => self.form = Some(value.into()),
54083            "hidden" => self.hidden = Some(value.into()),
54084            "id" => self.id = Some(value.into()),
54085            "inert" => self.inert = Some(value.into()),
54086            "inputmode" => self.inputmode = Some(value.into()),
54087            "is" => self.is = Some(value.into()),
54088            "itemid" => self.itemid = Some(value.into()),
54089            "itemprop" => self.itemprop = Some(value.into()),
54090            "itemref" => self.itemref = Some(value.into()),
54091            "itemscope" => self.itemscope = Some(value.into()),
54092            "itemtype" => self.itemtype = Some(value.into()),
54093            "lang" => self.lang = Some(value.into()),
54094            "maxlength" => self.maxlength = Some(value.into()),
54095            "minlength" => self.minlength = Some(value.into()),
54096            "name" => self.name = Some(value.into()),
54097            "nonce" => self.nonce = Some(value.into()),
54098            "part" => self.part = Some(value.into()),
54099            "placeholder" => self.placeholder = Some(value.into()),
54100            "popover" => self.popover = Some(value.into()),
54101            "readonly" => self.readonly = Some(value.into()),
54102            "required" => self.required = Some(value.into()),
54103            "role" => self.role = Some(value.into()),
54104            "rows" => self.rows = Some(value.into()),
54105            "slot" => self.slot = Some(value.into()),
54106            "spellcheck" => self.spellcheck = Some(value.into()),
54107            "style" => self.style = Some(value.into()),
54108            "tabindex" => self.tabindex = Some(value.into()),
54109            "title" => self.title = Some(value.into()),
54110            "translate" => self.translate = Some(value.into()),
54111            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
54112            "wrap" => self.wrap = Some(value.into()),
54113            #[cfg(feature = "alloc")]
54114            _ => {
54115                #[allow(clippy::useless_conversion)]
54116                self.extra.insert(name.into(), value.into());
54117            }
54118            #[cfg(not(feature = "alloc"))]
54119            _ => {}
54120        }
54121    }
54122}
54123/// The <strong><code>&lt;details&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element creates a disclosure widget in which information is visible only when the widget is toggled into an "open" state. A summary or label must be provided using the <a href="/en-US/docs/Web/HTML/Element/summary"><code>&lt;summary&gt;</code></a> element.
54124///
54125/// A disclosure widget is typically presented onscreen using a small triangle which rotates (or twists) to indicate open/closed status, with a label next to the triangle. The contents of the <code>&lt;summary&gt;</code> element are used as the label for the disclosure widget.
54126///
54127/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/details>
54128
54129#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
54130pub struct Details<'life> {
54131    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
54132    ///   
54133    pub accesskey: core::option::Option<AttributeValue<'life>>,
54134    ///
54135    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
54136    ///     <ul>
54137    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
54138    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
54139    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
54140    ///       <li><code>characters</code>, all letters should default to uppercase</li>
54141    ///     </ul>
54142    ///   
54143    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
54144    ///
54145    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
54146    ///   
54147    pub autofocus: core::option::Option<AttributeValue<'life>>,
54148    ///
54149    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
54150    ///   
54151    pub class: core::option::Option<AttributeValue<'life>>,
54152    ///
54153    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
54154    ///     <ul>
54155    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
54156    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
54157    ///     </ul>
54158    ///   
54159    pub contenteditable: core::option::Option<AttributeValue<'life>>,
54160    ///
54161    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
54162    ///   
54163    pub contextmenu: core::option::Option<AttributeValue<'life>>,
54164    ///
54165    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
54166    ///   
54167    #[cfg(feature = "alloc")]
54168    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
54169    ///
54170    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
54171    ///     <ul>
54172    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
54173    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
54174    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
54175    ///     </ul>
54176    ///   
54177    pub dir: core::option::Option<AttributeValue<'life>>,
54178    ///
54179    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
54180    ///     <ul>
54181    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
54182    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
54183    ///     </ul>
54184    ///   
54185    pub draggable: core::option::Option<AttributeValue<'life>>,
54186    ///
54187    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
54188    ///   
54189    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
54190    ///
54191    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
54192    ///   
54193    pub exportparts: core::option::Option<AttributeValue<'life>>,
54194    /// /// Extra attributes of the element.
54195
54196    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
54197    #[cfg(feature = "alloc")]
54198    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
54199    ///
54200    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
54201    ///   
54202    pub hidden: core::option::Option<AttributeValue<'life>>,
54203    ///
54204    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
54205    ///   
54206    pub id: core::option::Option<AttributeValue<'life>>,
54207    ///
54208    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
54209    ///   
54210    pub inert: core::option::Option<AttributeValue<'life>>,
54211    ///
54212    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
54213    ///   
54214    pub inputmode: core::option::Option<AttributeValue<'life>>,
54215    ///
54216    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
54217    ///   
54218    pub is: core::option::Option<AttributeValue<'life>>,
54219    ///
54220    ///     <p>The unique, global identifier of an item.</p>
54221    ///   
54222    pub itemid: core::option::Option<AttributeValue<'life>>,
54223    ///
54224    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
54225    ///   
54226    pub itemprop: core::option::Option<AttributeValue<'life>>,
54227    ///
54228    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
54229    ///   
54230    pub itemref: core::option::Option<AttributeValue<'life>>,
54231    ///
54232    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
54233    ///   
54234    pub itemscope: core::option::Option<AttributeValue<'life>>,
54235    ///
54236    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
54237    ///   
54238    pub itemtype: core::option::Option<AttributeValue<'life>>,
54239    ///
54240    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
54241    ///   
54242    pub lang: core::option::Option<AttributeValue<'life>>,
54243    ///
54244    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
54245    ///   
54246    pub nonce: core::option::Option<AttributeValue<'life>>,
54247    ///
54248    ///     <p>This Boolean attribute indicates whether the details — that is, the contents of the <code>&lt;details&gt;</code> element — are currently visible. The details are shown when this attribute exists, or hidden when this attribute is absent. By default this attribute is absent which means the details are not visible.</p>
54249    ///     <div id="sect1" class="notecard note">
54250    ///       <p><strong>Note:</strong> You have to remove this attribute entirely to make the details hidden. <code>open="false"</code> makes the details visible because this attribute is Boolean.</p>
54251    ///     </div>
54252    ///   
54253    pub open: core::option::Option<AttributeValue<'life>>,
54254    ///
54255    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
54256    ///   
54257    pub part: core::option::Option<AttributeValue<'life>>,
54258    ///
54259    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
54260    ///   
54261    pub popover: core::option::Option<AttributeValue<'life>>,
54262    ///
54263    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
54264    ///   
54265    pub role: core::option::Option<AttributeValue<'life>>,
54266    ///
54267    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
54268    ///   
54269    pub slot: core::option::Option<AttributeValue<'life>>,
54270    ///
54271    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
54272    ///     <ul>
54273    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
54274    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
54275    ///     </ul>
54276    ///   
54277    pub spellcheck: core::option::Option<AttributeValue<'life>>,
54278    ///
54279    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
54280    ///   
54281    pub style: core::option::Option<AttributeValue<'life>>,
54282    ///
54283    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
54284    ///     <ul>
54285    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
54286    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
54287    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
54288    ///     </ul>
54289    ///   
54290    pub tabindex: core::option::Option<AttributeValue<'life>>,
54291    ///
54292    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
54293    ///   
54294    pub title: core::option::Option<AttributeValue<'life>>,
54295    ///
54296    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
54297    ///     <ul>
54298    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
54299    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
54300    ///     </ul>
54301    ///   
54302    pub translate: core::option::Option<AttributeValue<'life>>,
54303    ///
54304    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
54305    ///     <ul>
54306    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
54307    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
54308    ///     </ul>
54309    ///   
54310    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
54311}
54312#[allow(deprecated)]
54313
54314impl<'life> Details<'life> {
54315    /// Get the tag name of the element.
54316    /// This is the same as the name of the struct, in kebab-case.
54317    pub fn tag() -> &'static str {
54318        "details"
54319    }
54320    /// Sets an attribute of the element.
54321    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
54322    /// If the `alloc` feature is disabled, this function will silently fail.
54323    ///
54324    /// # Note
54325    /// This only works when the attribute is lowercase.
54326    pub fn set_attr(
54327        &mut self,
54328        name: &'life str,
54329        value: impl core::convert::Into<AttributeValue<'life>>,
54330    ) {
54331        match name {
54332            "accesskey" => self.accesskey = Some(value.into()),
54333            "autocapitalize" => self.autocapitalize = Some(value.into()),
54334            "autofocus" => self.autofocus = Some(value.into()),
54335            "class" => self.class = Some(value.into()),
54336            "contenteditable" => self.contenteditable = Some(value.into()),
54337            "contextmenu" => self.contextmenu = Some(value.into()),
54338            "dir" => self.dir = Some(value.into()),
54339            "draggable" => self.draggable = Some(value.into()),
54340            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
54341            "exportparts" => self.exportparts = Some(value.into()),
54342            "hidden" => self.hidden = Some(value.into()),
54343            "id" => self.id = Some(value.into()),
54344            "inert" => self.inert = Some(value.into()),
54345            "inputmode" => self.inputmode = Some(value.into()),
54346            "is" => self.is = Some(value.into()),
54347            "itemid" => self.itemid = Some(value.into()),
54348            "itemprop" => self.itemprop = Some(value.into()),
54349            "itemref" => self.itemref = Some(value.into()),
54350            "itemscope" => self.itemscope = Some(value.into()),
54351            "itemtype" => self.itemtype = Some(value.into()),
54352            "lang" => self.lang = Some(value.into()),
54353            "nonce" => self.nonce = Some(value.into()),
54354            "open" => self.open = Some(value.into()),
54355            "part" => self.part = Some(value.into()),
54356            "popover" => self.popover = Some(value.into()),
54357            "role" => self.role = Some(value.into()),
54358            "slot" => self.slot = Some(value.into()),
54359            "spellcheck" => self.spellcheck = Some(value.into()),
54360            "style" => self.style = Some(value.into()),
54361            "tabindex" => self.tabindex = Some(value.into()),
54362            "title" => self.title = Some(value.into()),
54363            "translate" => self.translate = Some(value.into()),
54364            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
54365            #[cfg(feature = "alloc")]
54366            _ => {
54367                #[allow(clippy::useless_conversion)]
54368                self.extra.insert(name.into(), value.into());
54369            }
54370            #[cfg(not(feature = "alloc"))]
54371            _ => {}
54372        }
54373    }
54374}
54375/// The <strong><code>&lt;details&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element creates a disclosure widget in which information is visible only when the widget is toggled into an "open" state. A summary or label must be provided using the <a href="/en-US/docs/Web/HTML/Element/summary"><code>&lt;summary&gt;</code></a> element.
54376///
54377/// A disclosure widget is typically presented onscreen using a small triangle which rotates (or twists) to indicate open/closed status, with a label next to the triangle. The contents of the <code>&lt;summary&gt;</code> element are used as the label for the disclosure widget.
54378///
54379/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/details>
54380
54381#[cfg(feature = "alloc")]
54382#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
54383pub struct DetailsOwned {
54384    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
54385    ///   
54386    pub accesskey: core::option::Option<AttributeValueOwned>,
54387    ///
54388    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
54389    ///     <ul>
54390    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
54391    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
54392    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
54393    ///       <li><code>characters</code>, all letters should default to uppercase</li>
54394    ///     </ul>
54395    ///   
54396    pub autocapitalize: core::option::Option<AttributeValueOwned>,
54397    ///
54398    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
54399    ///   
54400    pub autofocus: core::option::Option<AttributeValueOwned>,
54401    ///
54402    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
54403    ///   
54404    pub class: core::option::Option<AttributeValueOwned>,
54405    ///
54406    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
54407    ///     <ul>
54408    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
54409    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
54410    ///     </ul>
54411    ///   
54412    pub contenteditable: core::option::Option<AttributeValueOwned>,
54413    ///
54414    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
54415    ///   
54416    pub contextmenu: core::option::Option<AttributeValueOwned>,
54417    ///
54418    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
54419    ///   
54420    #[cfg(feature = "alloc")]
54421    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
54422    ///
54423    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
54424    ///     <ul>
54425    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
54426    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
54427    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
54428    ///     </ul>
54429    ///   
54430    pub dir: core::option::Option<AttributeValueOwned>,
54431    ///
54432    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
54433    ///     <ul>
54434    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
54435    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
54436    ///     </ul>
54437    ///   
54438    pub draggable: core::option::Option<AttributeValueOwned>,
54439    ///
54440    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
54441    ///   
54442    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
54443    ///
54444    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
54445    ///   
54446    pub exportparts: core::option::Option<AttributeValueOwned>,
54447    /// /// Extra attributes of the element.
54448
54449    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
54450    #[cfg(feature = "alloc")]
54451    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
54452    ///
54453    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
54454    ///   
54455    pub hidden: core::option::Option<AttributeValueOwned>,
54456    ///
54457    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
54458    ///   
54459    pub id: core::option::Option<AttributeValueOwned>,
54460    ///
54461    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
54462    ///   
54463    pub inert: core::option::Option<AttributeValueOwned>,
54464    ///
54465    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
54466    ///   
54467    pub inputmode: core::option::Option<AttributeValueOwned>,
54468    ///
54469    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
54470    ///   
54471    pub is: core::option::Option<AttributeValueOwned>,
54472    ///
54473    ///     <p>The unique, global identifier of an item.</p>
54474    ///   
54475    pub itemid: core::option::Option<AttributeValueOwned>,
54476    ///
54477    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
54478    ///   
54479    pub itemprop: core::option::Option<AttributeValueOwned>,
54480    ///
54481    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
54482    ///   
54483    pub itemref: core::option::Option<AttributeValueOwned>,
54484    ///
54485    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
54486    ///   
54487    pub itemscope: core::option::Option<AttributeValueOwned>,
54488    ///
54489    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
54490    ///   
54491    pub itemtype: core::option::Option<AttributeValueOwned>,
54492    ///
54493    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
54494    ///   
54495    pub lang: core::option::Option<AttributeValueOwned>,
54496    ///
54497    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
54498    ///   
54499    pub nonce: core::option::Option<AttributeValueOwned>,
54500    ///
54501    ///     <p>This Boolean attribute indicates whether the details — that is, the contents of the <code>&lt;details&gt;</code> element — are currently visible. The details are shown when this attribute exists, or hidden when this attribute is absent. By default this attribute is absent which means the details are not visible.</p>
54502    ///     <div id="sect1" class="notecard note">
54503    ///       <p><strong>Note:</strong> You have to remove this attribute entirely to make the details hidden. <code>open="false"</code> makes the details visible because this attribute is Boolean.</p>
54504    ///     </div>
54505    ///   
54506    pub open: core::option::Option<AttributeValueOwned>,
54507    ///
54508    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
54509    ///   
54510    pub part: core::option::Option<AttributeValueOwned>,
54511    ///
54512    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
54513    ///   
54514    pub popover: core::option::Option<AttributeValueOwned>,
54515    ///
54516    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
54517    ///   
54518    pub role: core::option::Option<AttributeValueOwned>,
54519    ///
54520    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
54521    ///   
54522    pub slot: core::option::Option<AttributeValueOwned>,
54523    ///
54524    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
54525    ///     <ul>
54526    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
54527    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
54528    ///     </ul>
54529    ///   
54530    pub spellcheck: core::option::Option<AttributeValueOwned>,
54531    ///
54532    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
54533    ///   
54534    pub style: core::option::Option<AttributeValueOwned>,
54535    ///
54536    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
54537    ///     <ul>
54538    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
54539    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
54540    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
54541    ///     </ul>
54542    ///   
54543    pub tabindex: core::option::Option<AttributeValueOwned>,
54544    ///
54545    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
54546    ///   
54547    pub title: core::option::Option<AttributeValueOwned>,
54548    ///
54549    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
54550    ///     <ul>
54551    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
54552    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
54553    ///     </ul>
54554    ///   
54555    pub translate: core::option::Option<AttributeValueOwned>,
54556    ///
54557    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
54558    ///     <ul>
54559    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
54560    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
54561    ///     </ul>
54562    ///   
54563    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
54564}
54565#[allow(deprecated)]
54566#[cfg(feature = "alloc")]
54567impl DetailsOwned {
54568    /// Get the tag name of the element.
54569    /// This is the same as the name of the struct, in kebab-case.
54570    pub fn tag() -> &'static str {
54571        "details"
54572    }
54573    /// Sets an attribute of the element.
54574    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
54575    /// If the `alloc` feature is disabled, this function will silently fail.
54576    ///
54577    /// # Note
54578    /// This only works when the attribute is lowercase.
54579    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
54580        match name {
54581            "accesskey" => self.accesskey = Some(value.into()),
54582            "autocapitalize" => self.autocapitalize = Some(value.into()),
54583            "autofocus" => self.autofocus = Some(value.into()),
54584            "class" => self.class = Some(value.into()),
54585            "contenteditable" => self.contenteditable = Some(value.into()),
54586            "contextmenu" => self.contextmenu = Some(value.into()),
54587            "dir" => self.dir = Some(value.into()),
54588            "draggable" => self.draggable = Some(value.into()),
54589            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
54590            "exportparts" => self.exportparts = Some(value.into()),
54591            "hidden" => self.hidden = Some(value.into()),
54592            "id" => self.id = Some(value.into()),
54593            "inert" => self.inert = Some(value.into()),
54594            "inputmode" => self.inputmode = Some(value.into()),
54595            "is" => self.is = Some(value.into()),
54596            "itemid" => self.itemid = Some(value.into()),
54597            "itemprop" => self.itemprop = Some(value.into()),
54598            "itemref" => self.itemref = Some(value.into()),
54599            "itemscope" => self.itemscope = Some(value.into()),
54600            "itemtype" => self.itemtype = Some(value.into()),
54601            "lang" => self.lang = Some(value.into()),
54602            "nonce" => self.nonce = Some(value.into()),
54603            "open" => self.open = Some(value.into()),
54604            "part" => self.part = Some(value.into()),
54605            "popover" => self.popover = Some(value.into()),
54606            "role" => self.role = Some(value.into()),
54607            "slot" => self.slot = Some(value.into()),
54608            "spellcheck" => self.spellcheck = Some(value.into()),
54609            "style" => self.style = Some(value.into()),
54610            "tabindex" => self.tabindex = Some(value.into()),
54611            "title" => self.title = Some(value.into()),
54612            "translate" => self.translate = Some(value.into()),
54613            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
54614            #[cfg(feature = "alloc")]
54615            _ => {
54616                #[allow(clippy::useless_conversion)]
54617                self.extra.insert(name.into(), value.into());
54618            }
54619            #[cfg(not(feature = "alloc"))]
54620            _ => {}
54621        }
54622    }
54623}
54624/// The <strong><code>&lt;dialog&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents a dialog box or other interactive component, such as a dismissible alert, inspector, or subwindow.
54625///
54626/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dialog>
54627
54628#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
54629pub struct Dialog<'life> {
54630    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
54631    ///   
54632    pub accesskey: core::option::Option<AttributeValue<'life>>,
54633    ///
54634    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
54635    ///     <ul>
54636    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
54637    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
54638    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
54639    ///       <li><code>characters</code>, all letters should default to uppercase</li>
54640    ///     </ul>
54641    ///   
54642    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
54643    ///
54644    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
54645    ///   
54646    pub autofocus: core::option::Option<AttributeValue<'life>>,
54647    ///
54648    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
54649    ///   
54650    pub class: core::option::Option<AttributeValue<'life>>,
54651    ///
54652    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
54653    ///     <ul>
54654    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
54655    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
54656    ///     </ul>
54657    ///   
54658    pub contenteditable: core::option::Option<AttributeValue<'life>>,
54659    ///
54660    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
54661    ///   
54662    pub contextmenu: core::option::Option<AttributeValue<'life>>,
54663    ///
54664    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
54665    ///   
54666    #[cfg(feature = "alloc")]
54667    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
54668    ///
54669    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
54670    ///     <ul>
54671    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
54672    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
54673    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
54674    ///     </ul>
54675    ///   
54676    pub dir: core::option::Option<AttributeValue<'life>>,
54677    ///
54678    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
54679    ///     <ul>
54680    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
54681    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
54682    ///     </ul>
54683    ///   
54684    pub draggable: core::option::Option<AttributeValue<'life>>,
54685    ///
54686    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
54687    ///   
54688    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
54689    ///
54690    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
54691    ///   
54692    pub exportparts: core::option::Option<AttributeValue<'life>>,
54693    /// /// Extra attributes of the element.
54694
54695    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
54696    #[cfg(feature = "alloc")]
54697    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
54698    ///
54699    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
54700    ///   
54701    pub hidden: core::option::Option<AttributeValue<'life>>,
54702    ///
54703    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
54704    ///   
54705    pub id: core::option::Option<AttributeValue<'life>>,
54706    ///
54707    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
54708    ///   
54709    pub inert: core::option::Option<AttributeValue<'life>>,
54710    ///
54711    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
54712    ///   
54713    pub inputmode: core::option::Option<AttributeValue<'life>>,
54714    ///
54715    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
54716    ///   
54717    pub is: core::option::Option<AttributeValue<'life>>,
54718    ///
54719    ///     <p>The unique, global identifier of an item.</p>
54720    ///   
54721    pub itemid: core::option::Option<AttributeValue<'life>>,
54722    ///
54723    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
54724    ///   
54725    pub itemprop: core::option::Option<AttributeValue<'life>>,
54726    ///
54727    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
54728    ///   
54729    pub itemref: core::option::Option<AttributeValue<'life>>,
54730    ///
54731    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
54732    ///   
54733    pub itemscope: core::option::Option<AttributeValue<'life>>,
54734    ///
54735    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
54736    ///   
54737    pub itemtype: core::option::Option<AttributeValue<'life>>,
54738    ///
54739    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
54740    ///   
54741    pub lang: core::option::Option<AttributeValue<'life>>,
54742    ///
54743    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
54744    ///   
54745    pub nonce: core::option::Option<AttributeValue<'life>>,
54746    ///
54747    ///     <p>
54748    ///       Indicates that the dialog is active and can be interacted with. When the <code>open</code> attribute is not set, the dialog <em>shouldn't</em> be shown to the user.
54749    ///       It is recommended to use the <code>.show()</code> or <code>.showModal()</code> methods to render dialogs, rather than the <code>open</code> attribute. If a <code>&lt;dialog&gt;</code> is opened using the <code>open</code> attribute, it will be non-modal.
54750    ///     </p>
54751    ///   
54752    pub open: core::option::Option<AttributeValue<'life>>,
54753    ///
54754    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
54755    ///   
54756    pub part: core::option::Option<AttributeValue<'life>>,
54757    ///
54758    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
54759    ///   
54760    pub popover: core::option::Option<AttributeValue<'life>>,
54761    ///
54762    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
54763    ///   
54764    pub role: core::option::Option<AttributeValue<'life>>,
54765    ///
54766    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
54767    ///   
54768    pub slot: core::option::Option<AttributeValue<'life>>,
54769    ///
54770    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
54771    ///     <ul>
54772    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
54773    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
54774    ///     </ul>
54775    ///   
54776    pub spellcheck: core::option::Option<AttributeValue<'life>>,
54777    ///
54778    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
54779    ///   
54780    pub style: core::option::Option<AttributeValue<'life>>,
54781    ///
54782    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
54783    ///     <ul>
54784    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
54785    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
54786    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
54787    ///     </ul>
54788    ///   
54789    pub tabindex: core::option::Option<AttributeValue<'life>>,
54790    ///
54791    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
54792    ///   
54793    pub title: core::option::Option<AttributeValue<'life>>,
54794    ///
54795    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
54796    ///     <ul>
54797    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
54798    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
54799    ///     </ul>
54800    ///   
54801    pub translate: core::option::Option<AttributeValue<'life>>,
54802    ///
54803    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
54804    ///     <ul>
54805    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
54806    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
54807    ///     </ul>
54808    ///   
54809    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
54810}
54811#[allow(deprecated)]
54812
54813impl<'life> Dialog<'life> {
54814    /// Get the tag name of the element.
54815    /// This is the same as the name of the struct, in kebab-case.
54816    pub fn tag() -> &'static str {
54817        "dialog"
54818    }
54819    /// Sets an attribute of the element.
54820    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
54821    /// If the `alloc` feature is disabled, this function will silently fail.
54822    ///
54823    /// # Note
54824    /// This only works when the attribute is lowercase.
54825    pub fn set_attr(
54826        &mut self,
54827        name: &'life str,
54828        value: impl core::convert::Into<AttributeValue<'life>>,
54829    ) {
54830        match name {
54831            "accesskey" => self.accesskey = Some(value.into()),
54832            "autocapitalize" => self.autocapitalize = Some(value.into()),
54833            "autofocus" => self.autofocus = Some(value.into()),
54834            "class" => self.class = Some(value.into()),
54835            "contenteditable" => self.contenteditable = Some(value.into()),
54836            "contextmenu" => self.contextmenu = Some(value.into()),
54837            "dir" => self.dir = Some(value.into()),
54838            "draggable" => self.draggable = Some(value.into()),
54839            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
54840            "exportparts" => self.exportparts = Some(value.into()),
54841            "hidden" => self.hidden = Some(value.into()),
54842            "id" => self.id = Some(value.into()),
54843            "inert" => self.inert = Some(value.into()),
54844            "inputmode" => self.inputmode = Some(value.into()),
54845            "is" => self.is = Some(value.into()),
54846            "itemid" => self.itemid = Some(value.into()),
54847            "itemprop" => self.itemprop = Some(value.into()),
54848            "itemref" => self.itemref = Some(value.into()),
54849            "itemscope" => self.itemscope = Some(value.into()),
54850            "itemtype" => self.itemtype = Some(value.into()),
54851            "lang" => self.lang = Some(value.into()),
54852            "nonce" => self.nonce = Some(value.into()),
54853            "open" => self.open = Some(value.into()),
54854            "part" => self.part = Some(value.into()),
54855            "popover" => self.popover = Some(value.into()),
54856            "role" => self.role = Some(value.into()),
54857            "slot" => self.slot = Some(value.into()),
54858            "spellcheck" => self.spellcheck = Some(value.into()),
54859            "style" => self.style = Some(value.into()),
54860            "tabindex" => self.tabindex = Some(value.into()),
54861            "title" => self.title = Some(value.into()),
54862            "translate" => self.translate = Some(value.into()),
54863            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
54864            #[cfg(feature = "alloc")]
54865            _ => {
54866                #[allow(clippy::useless_conversion)]
54867                self.extra.insert(name.into(), value.into());
54868            }
54869            #[cfg(not(feature = "alloc"))]
54870            _ => {}
54871        }
54872    }
54873}
54874/// The <strong><code>&lt;dialog&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents a dialog box or other interactive component, such as a dismissible alert, inspector, or subwindow.
54875///
54876/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dialog>
54877
54878#[cfg(feature = "alloc")]
54879#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
54880pub struct DialogOwned {
54881    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
54882    ///   
54883    pub accesskey: core::option::Option<AttributeValueOwned>,
54884    ///
54885    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
54886    ///     <ul>
54887    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
54888    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
54889    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
54890    ///       <li><code>characters</code>, all letters should default to uppercase</li>
54891    ///     </ul>
54892    ///   
54893    pub autocapitalize: core::option::Option<AttributeValueOwned>,
54894    ///
54895    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
54896    ///   
54897    pub autofocus: core::option::Option<AttributeValueOwned>,
54898    ///
54899    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
54900    ///   
54901    pub class: core::option::Option<AttributeValueOwned>,
54902    ///
54903    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
54904    ///     <ul>
54905    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
54906    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
54907    ///     </ul>
54908    ///   
54909    pub contenteditable: core::option::Option<AttributeValueOwned>,
54910    ///
54911    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
54912    ///   
54913    pub contextmenu: core::option::Option<AttributeValueOwned>,
54914    ///
54915    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
54916    ///   
54917    #[cfg(feature = "alloc")]
54918    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
54919    ///
54920    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
54921    ///     <ul>
54922    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
54923    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
54924    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
54925    ///     </ul>
54926    ///   
54927    pub dir: core::option::Option<AttributeValueOwned>,
54928    ///
54929    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
54930    ///     <ul>
54931    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
54932    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
54933    ///     </ul>
54934    ///   
54935    pub draggable: core::option::Option<AttributeValueOwned>,
54936    ///
54937    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
54938    ///   
54939    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
54940    ///
54941    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
54942    ///   
54943    pub exportparts: core::option::Option<AttributeValueOwned>,
54944    /// /// Extra attributes of the element.
54945
54946    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
54947    #[cfg(feature = "alloc")]
54948    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
54949    ///
54950    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
54951    ///   
54952    pub hidden: core::option::Option<AttributeValueOwned>,
54953    ///
54954    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
54955    ///   
54956    pub id: core::option::Option<AttributeValueOwned>,
54957    ///
54958    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
54959    ///   
54960    pub inert: core::option::Option<AttributeValueOwned>,
54961    ///
54962    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
54963    ///   
54964    pub inputmode: core::option::Option<AttributeValueOwned>,
54965    ///
54966    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
54967    ///   
54968    pub is: core::option::Option<AttributeValueOwned>,
54969    ///
54970    ///     <p>The unique, global identifier of an item.</p>
54971    ///   
54972    pub itemid: core::option::Option<AttributeValueOwned>,
54973    ///
54974    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
54975    ///   
54976    pub itemprop: core::option::Option<AttributeValueOwned>,
54977    ///
54978    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
54979    ///   
54980    pub itemref: core::option::Option<AttributeValueOwned>,
54981    ///
54982    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
54983    ///   
54984    pub itemscope: core::option::Option<AttributeValueOwned>,
54985    ///
54986    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
54987    ///   
54988    pub itemtype: core::option::Option<AttributeValueOwned>,
54989    ///
54990    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
54991    ///   
54992    pub lang: core::option::Option<AttributeValueOwned>,
54993    ///
54994    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
54995    ///   
54996    pub nonce: core::option::Option<AttributeValueOwned>,
54997    ///
54998    ///     <p>
54999    ///       Indicates that the dialog is active and can be interacted with. When the <code>open</code> attribute is not set, the dialog <em>shouldn't</em> be shown to the user.
55000    ///       It is recommended to use the <code>.show()</code> or <code>.showModal()</code> methods to render dialogs, rather than the <code>open</code> attribute. If a <code>&lt;dialog&gt;</code> is opened using the <code>open</code> attribute, it will be non-modal.
55001    ///     </p>
55002    ///   
55003    pub open: core::option::Option<AttributeValueOwned>,
55004    ///
55005    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
55006    ///   
55007    pub part: core::option::Option<AttributeValueOwned>,
55008    ///
55009    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
55010    ///   
55011    pub popover: core::option::Option<AttributeValueOwned>,
55012    ///
55013    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
55014    ///   
55015    pub role: core::option::Option<AttributeValueOwned>,
55016    ///
55017    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
55018    ///   
55019    pub slot: core::option::Option<AttributeValueOwned>,
55020    ///
55021    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
55022    ///     <ul>
55023    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
55024    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
55025    ///     </ul>
55026    ///   
55027    pub spellcheck: core::option::Option<AttributeValueOwned>,
55028    ///
55029    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
55030    ///   
55031    pub style: core::option::Option<AttributeValueOwned>,
55032    ///
55033    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
55034    ///     <ul>
55035    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
55036    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
55037    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
55038    ///     </ul>
55039    ///   
55040    pub tabindex: core::option::Option<AttributeValueOwned>,
55041    ///
55042    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
55043    ///   
55044    pub title: core::option::Option<AttributeValueOwned>,
55045    ///
55046    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
55047    ///     <ul>
55048    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
55049    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
55050    ///     </ul>
55051    ///   
55052    pub translate: core::option::Option<AttributeValueOwned>,
55053    ///
55054    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
55055    ///     <ul>
55056    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
55057    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
55058    ///     </ul>
55059    ///   
55060    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
55061}
55062#[allow(deprecated)]
55063#[cfg(feature = "alloc")]
55064impl DialogOwned {
55065    /// Get the tag name of the element.
55066    /// This is the same as the name of the struct, in kebab-case.
55067    pub fn tag() -> &'static str {
55068        "dialog"
55069    }
55070    /// Sets an attribute of the element.
55071    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
55072    /// If the `alloc` feature is disabled, this function will silently fail.
55073    ///
55074    /// # Note
55075    /// This only works when the attribute is lowercase.
55076    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
55077        match name {
55078            "accesskey" => self.accesskey = Some(value.into()),
55079            "autocapitalize" => self.autocapitalize = Some(value.into()),
55080            "autofocus" => self.autofocus = Some(value.into()),
55081            "class" => self.class = Some(value.into()),
55082            "contenteditable" => self.contenteditable = Some(value.into()),
55083            "contextmenu" => self.contextmenu = Some(value.into()),
55084            "dir" => self.dir = Some(value.into()),
55085            "draggable" => self.draggable = Some(value.into()),
55086            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
55087            "exportparts" => self.exportparts = Some(value.into()),
55088            "hidden" => self.hidden = Some(value.into()),
55089            "id" => self.id = Some(value.into()),
55090            "inert" => self.inert = Some(value.into()),
55091            "inputmode" => self.inputmode = Some(value.into()),
55092            "is" => self.is = Some(value.into()),
55093            "itemid" => self.itemid = Some(value.into()),
55094            "itemprop" => self.itemprop = Some(value.into()),
55095            "itemref" => self.itemref = Some(value.into()),
55096            "itemscope" => self.itemscope = Some(value.into()),
55097            "itemtype" => self.itemtype = Some(value.into()),
55098            "lang" => self.lang = Some(value.into()),
55099            "nonce" => self.nonce = Some(value.into()),
55100            "open" => self.open = Some(value.into()),
55101            "part" => self.part = Some(value.into()),
55102            "popover" => self.popover = Some(value.into()),
55103            "role" => self.role = Some(value.into()),
55104            "slot" => self.slot = Some(value.into()),
55105            "spellcheck" => self.spellcheck = Some(value.into()),
55106            "style" => self.style = Some(value.into()),
55107            "tabindex" => self.tabindex = Some(value.into()),
55108            "title" => self.title = Some(value.into()),
55109            "translate" => self.translate = Some(value.into()),
55110            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
55111            #[cfg(feature = "alloc")]
55112            _ => {
55113                #[allow(clippy::useless_conversion)]
55114                self.extra.insert(name.into(), value.into());
55115            }
55116            #[cfg(not(feature = "alloc"))]
55117            _ => {}
55118        }
55119    }
55120}
55121/// The <strong><code>&lt;summary&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element specifies a summary, caption, or legend for a <a href="/en-US/docs/Web/HTML/Element/details"><code>&lt;details&gt;</code></a> element's disclosure box. Clicking the <code>&lt;summary&gt;</code> element toggles the state of the parent <code>&lt;details&gt;</code> element open and closed.
55122///
55123/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/summary>
55124
55125#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
55126pub struct Summary<'life> {
55127    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
55128    ///   
55129    pub accesskey: core::option::Option<AttributeValue<'life>>,
55130    ///
55131    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
55132    ///     <ul>
55133    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
55134    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
55135    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
55136    ///       <li><code>characters</code>, all letters should default to uppercase</li>
55137    ///     </ul>
55138    ///   
55139    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
55140    ///
55141    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
55142    ///   
55143    pub autofocus: core::option::Option<AttributeValue<'life>>,
55144    ///
55145    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
55146    ///   
55147    pub class: core::option::Option<AttributeValue<'life>>,
55148    ///
55149    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
55150    ///     <ul>
55151    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
55152    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
55153    ///     </ul>
55154    ///   
55155    pub contenteditable: core::option::Option<AttributeValue<'life>>,
55156    ///
55157    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
55158    ///   
55159    pub contextmenu: core::option::Option<AttributeValue<'life>>,
55160    ///
55161    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
55162    ///   
55163    #[cfg(feature = "alloc")]
55164    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
55165    ///
55166    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
55167    ///     <ul>
55168    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
55169    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
55170    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
55171    ///     </ul>
55172    ///   
55173    pub dir: core::option::Option<AttributeValue<'life>>,
55174    ///
55175    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
55176    ///     <ul>
55177    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
55178    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
55179    ///     </ul>
55180    ///   
55181    pub draggable: core::option::Option<AttributeValue<'life>>,
55182    ///
55183    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
55184    ///   
55185    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
55186    ///
55187    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
55188    ///   
55189    pub exportparts: core::option::Option<AttributeValue<'life>>,
55190    /// /// Extra attributes of the element.
55191
55192    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
55193    #[cfg(feature = "alloc")]
55194    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
55195    ///
55196    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
55197    ///   
55198    pub hidden: core::option::Option<AttributeValue<'life>>,
55199    ///
55200    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
55201    ///   
55202    pub id: core::option::Option<AttributeValue<'life>>,
55203    ///
55204    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
55205    ///   
55206    pub inert: core::option::Option<AttributeValue<'life>>,
55207    ///
55208    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
55209    ///   
55210    pub inputmode: core::option::Option<AttributeValue<'life>>,
55211    ///
55212    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
55213    ///   
55214    pub is: core::option::Option<AttributeValue<'life>>,
55215    ///
55216    ///     <p>The unique, global identifier of an item.</p>
55217    ///   
55218    pub itemid: core::option::Option<AttributeValue<'life>>,
55219    ///
55220    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
55221    ///   
55222    pub itemprop: core::option::Option<AttributeValue<'life>>,
55223    ///
55224    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
55225    ///   
55226    pub itemref: core::option::Option<AttributeValue<'life>>,
55227    ///
55228    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
55229    ///   
55230    pub itemscope: core::option::Option<AttributeValue<'life>>,
55231    ///
55232    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
55233    ///   
55234    pub itemtype: core::option::Option<AttributeValue<'life>>,
55235    ///
55236    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
55237    ///   
55238    pub lang: core::option::Option<AttributeValue<'life>>,
55239    ///
55240    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
55241    ///   
55242    pub nonce: core::option::Option<AttributeValue<'life>>,
55243    ///
55244    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
55245    ///   
55246    pub part: core::option::Option<AttributeValue<'life>>,
55247    ///
55248    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
55249    ///   
55250    pub popover: core::option::Option<AttributeValue<'life>>,
55251    ///
55252    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
55253    ///   
55254    pub role: core::option::Option<AttributeValue<'life>>,
55255    ///
55256    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
55257    ///   
55258    pub slot: core::option::Option<AttributeValue<'life>>,
55259    ///
55260    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
55261    ///     <ul>
55262    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
55263    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
55264    ///     </ul>
55265    ///   
55266    pub spellcheck: core::option::Option<AttributeValue<'life>>,
55267    ///
55268    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
55269    ///   
55270    pub style: core::option::Option<AttributeValue<'life>>,
55271    ///
55272    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
55273    ///     <ul>
55274    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
55275    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
55276    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
55277    ///     </ul>
55278    ///   
55279    pub tabindex: core::option::Option<AttributeValue<'life>>,
55280    ///
55281    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
55282    ///   
55283    pub title: core::option::Option<AttributeValue<'life>>,
55284    ///
55285    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
55286    ///     <ul>
55287    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
55288    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
55289    ///     </ul>
55290    ///   
55291    pub translate: core::option::Option<AttributeValue<'life>>,
55292    ///
55293    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
55294    ///     <ul>
55295    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
55296    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
55297    ///     </ul>
55298    ///   
55299    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
55300}
55301#[allow(deprecated)]
55302
55303impl<'life> Summary<'life> {
55304    /// Get the tag name of the element.
55305    /// This is the same as the name of the struct, in kebab-case.
55306    pub fn tag() -> &'static str {
55307        "summary"
55308    }
55309    /// Sets an attribute of the element.
55310    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
55311    /// If the `alloc` feature is disabled, this function will silently fail.
55312    ///
55313    /// # Note
55314    /// This only works when the attribute is lowercase.
55315    pub fn set_attr(
55316        &mut self,
55317        name: &'life str,
55318        value: impl core::convert::Into<AttributeValue<'life>>,
55319    ) {
55320        match name {
55321            "accesskey" => self.accesskey = Some(value.into()),
55322            "autocapitalize" => self.autocapitalize = Some(value.into()),
55323            "autofocus" => self.autofocus = Some(value.into()),
55324            "class" => self.class = Some(value.into()),
55325            "contenteditable" => self.contenteditable = Some(value.into()),
55326            "contextmenu" => self.contextmenu = Some(value.into()),
55327            "dir" => self.dir = Some(value.into()),
55328            "draggable" => self.draggable = Some(value.into()),
55329            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
55330            "exportparts" => self.exportparts = Some(value.into()),
55331            "hidden" => self.hidden = Some(value.into()),
55332            "id" => self.id = Some(value.into()),
55333            "inert" => self.inert = Some(value.into()),
55334            "inputmode" => self.inputmode = Some(value.into()),
55335            "is" => self.is = Some(value.into()),
55336            "itemid" => self.itemid = Some(value.into()),
55337            "itemprop" => self.itemprop = Some(value.into()),
55338            "itemref" => self.itemref = Some(value.into()),
55339            "itemscope" => self.itemscope = Some(value.into()),
55340            "itemtype" => self.itemtype = Some(value.into()),
55341            "lang" => self.lang = Some(value.into()),
55342            "nonce" => self.nonce = Some(value.into()),
55343            "part" => self.part = Some(value.into()),
55344            "popover" => self.popover = Some(value.into()),
55345            "role" => self.role = Some(value.into()),
55346            "slot" => self.slot = Some(value.into()),
55347            "spellcheck" => self.spellcheck = Some(value.into()),
55348            "style" => self.style = Some(value.into()),
55349            "tabindex" => self.tabindex = Some(value.into()),
55350            "title" => self.title = Some(value.into()),
55351            "translate" => self.translate = Some(value.into()),
55352            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
55353            #[cfg(feature = "alloc")]
55354            _ => {
55355                #[allow(clippy::useless_conversion)]
55356                self.extra.insert(name.into(), value.into());
55357            }
55358            #[cfg(not(feature = "alloc"))]
55359            _ => {}
55360        }
55361    }
55362}
55363/// The <strong><code>&lt;summary&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element specifies a summary, caption, or legend for a <a href="/en-US/docs/Web/HTML/Element/details"><code>&lt;details&gt;</code></a> element's disclosure box. Clicking the <code>&lt;summary&gt;</code> element toggles the state of the parent <code>&lt;details&gt;</code> element open and closed.
55364///
55365/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/summary>
55366
55367#[cfg(feature = "alloc")]
55368#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
55369pub struct SummaryOwned {
55370    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
55371    ///   
55372    pub accesskey: core::option::Option<AttributeValueOwned>,
55373    ///
55374    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
55375    ///     <ul>
55376    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
55377    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
55378    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
55379    ///       <li><code>characters</code>, all letters should default to uppercase</li>
55380    ///     </ul>
55381    ///   
55382    pub autocapitalize: core::option::Option<AttributeValueOwned>,
55383    ///
55384    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
55385    ///   
55386    pub autofocus: core::option::Option<AttributeValueOwned>,
55387    ///
55388    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
55389    ///   
55390    pub class: core::option::Option<AttributeValueOwned>,
55391    ///
55392    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
55393    ///     <ul>
55394    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
55395    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
55396    ///     </ul>
55397    ///   
55398    pub contenteditable: core::option::Option<AttributeValueOwned>,
55399    ///
55400    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
55401    ///   
55402    pub contextmenu: core::option::Option<AttributeValueOwned>,
55403    ///
55404    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
55405    ///   
55406    #[cfg(feature = "alloc")]
55407    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
55408    ///
55409    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
55410    ///     <ul>
55411    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
55412    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
55413    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
55414    ///     </ul>
55415    ///   
55416    pub dir: core::option::Option<AttributeValueOwned>,
55417    ///
55418    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
55419    ///     <ul>
55420    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
55421    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
55422    ///     </ul>
55423    ///   
55424    pub draggable: core::option::Option<AttributeValueOwned>,
55425    ///
55426    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
55427    ///   
55428    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
55429    ///
55430    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
55431    ///   
55432    pub exportparts: core::option::Option<AttributeValueOwned>,
55433    /// /// Extra attributes of the element.
55434
55435    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
55436    #[cfg(feature = "alloc")]
55437    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
55438    ///
55439    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
55440    ///   
55441    pub hidden: core::option::Option<AttributeValueOwned>,
55442    ///
55443    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
55444    ///   
55445    pub id: core::option::Option<AttributeValueOwned>,
55446    ///
55447    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
55448    ///   
55449    pub inert: core::option::Option<AttributeValueOwned>,
55450    ///
55451    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
55452    ///   
55453    pub inputmode: core::option::Option<AttributeValueOwned>,
55454    ///
55455    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
55456    ///   
55457    pub is: core::option::Option<AttributeValueOwned>,
55458    ///
55459    ///     <p>The unique, global identifier of an item.</p>
55460    ///   
55461    pub itemid: core::option::Option<AttributeValueOwned>,
55462    ///
55463    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
55464    ///   
55465    pub itemprop: core::option::Option<AttributeValueOwned>,
55466    ///
55467    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
55468    ///   
55469    pub itemref: core::option::Option<AttributeValueOwned>,
55470    ///
55471    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
55472    ///   
55473    pub itemscope: core::option::Option<AttributeValueOwned>,
55474    ///
55475    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
55476    ///   
55477    pub itemtype: core::option::Option<AttributeValueOwned>,
55478    ///
55479    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
55480    ///   
55481    pub lang: core::option::Option<AttributeValueOwned>,
55482    ///
55483    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
55484    ///   
55485    pub nonce: core::option::Option<AttributeValueOwned>,
55486    ///
55487    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
55488    ///   
55489    pub part: core::option::Option<AttributeValueOwned>,
55490    ///
55491    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
55492    ///   
55493    pub popover: core::option::Option<AttributeValueOwned>,
55494    ///
55495    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
55496    ///   
55497    pub role: core::option::Option<AttributeValueOwned>,
55498    ///
55499    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
55500    ///   
55501    pub slot: core::option::Option<AttributeValueOwned>,
55502    ///
55503    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
55504    ///     <ul>
55505    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
55506    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
55507    ///     </ul>
55508    ///   
55509    pub spellcheck: core::option::Option<AttributeValueOwned>,
55510    ///
55511    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
55512    ///   
55513    pub style: core::option::Option<AttributeValueOwned>,
55514    ///
55515    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
55516    ///     <ul>
55517    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
55518    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
55519    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
55520    ///     </ul>
55521    ///   
55522    pub tabindex: core::option::Option<AttributeValueOwned>,
55523    ///
55524    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
55525    ///   
55526    pub title: core::option::Option<AttributeValueOwned>,
55527    ///
55528    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
55529    ///     <ul>
55530    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
55531    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
55532    ///     </ul>
55533    ///   
55534    pub translate: core::option::Option<AttributeValueOwned>,
55535    ///
55536    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
55537    ///     <ul>
55538    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
55539    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
55540    ///     </ul>
55541    ///   
55542    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
55543}
55544#[allow(deprecated)]
55545#[cfg(feature = "alloc")]
55546impl SummaryOwned {
55547    /// Get the tag name of the element.
55548    /// This is the same as the name of the struct, in kebab-case.
55549    pub fn tag() -> &'static str {
55550        "summary"
55551    }
55552    /// Sets an attribute of the element.
55553    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
55554    /// If the `alloc` feature is disabled, this function will silently fail.
55555    ///
55556    /// # Note
55557    /// This only works when the attribute is lowercase.
55558    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
55559        match name {
55560            "accesskey" => self.accesskey = Some(value.into()),
55561            "autocapitalize" => self.autocapitalize = Some(value.into()),
55562            "autofocus" => self.autofocus = Some(value.into()),
55563            "class" => self.class = Some(value.into()),
55564            "contenteditable" => self.contenteditable = Some(value.into()),
55565            "contextmenu" => self.contextmenu = Some(value.into()),
55566            "dir" => self.dir = Some(value.into()),
55567            "draggable" => self.draggable = Some(value.into()),
55568            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
55569            "exportparts" => self.exportparts = Some(value.into()),
55570            "hidden" => self.hidden = Some(value.into()),
55571            "id" => self.id = Some(value.into()),
55572            "inert" => self.inert = Some(value.into()),
55573            "inputmode" => self.inputmode = Some(value.into()),
55574            "is" => self.is = Some(value.into()),
55575            "itemid" => self.itemid = Some(value.into()),
55576            "itemprop" => self.itemprop = Some(value.into()),
55577            "itemref" => self.itemref = Some(value.into()),
55578            "itemscope" => self.itemscope = Some(value.into()),
55579            "itemtype" => self.itemtype = Some(value.into()),
55580            "lang" => self.lang = Some(value.into()),
55581            "nonce" => self.nonce = Some(value.into()),
55582            "part" => self.part = Some(value.into()),
55583            "popover" => self.popover = Some(value.into()),
55584            "role" => self.role = Some(value.into()),
55585            "slot" => self.slot = Some(value.into()),
55586            "spellcheck" => self.spellcheck = Some(value.into()),
55587            "style" => self.style = Some(value.into()),
55588            "tabindex" => self.tabindex = Some(value.into()),
55589            "title" => self.title = Some(value.into()),
55590            "translate" => self.translate = Some(value.into()),
55591            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
55592            #[cfg(feature = "alloc")]
55593            _ => {
55594                #[allow(clippy::useless_conversion)]
55595                self.extra.insert(name.into(), value.into());
55596            }
55597            #[cfg(not(feature = "alloc"))]
55598            _ => {}
55599        }
55600    }
55601}
55602/// The <strong><code>&lt;slot&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element—part of the <a href="/en-US/docs/Web/API/Web_components">Web Components</a> 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.
55603///
55604/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/slot>
55605
55606#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
55607pub struct Slot<'life> {
55608    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
55609    ///   
55610    pub accesskey: core::option::Option<AttributeValue<'life>>,
55611    ///
55612    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
55613    ///     <ul>
55614    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
55615    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
55616    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
55617    ///       <li><code>characters</code>, all letters should default to uppercase</li>
55618    ///     </ul>
55619    ///   
55620    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
55621    ///
55622    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
55623    ///   
55624    pub autofocus: core::option::Option<AttributeValue<'life>>,
55625    ///
55626    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
55627    ///   
55628    pub class: core::option::Option<AttributeValue<'life>>,
55629    ///
55630    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
55631    ///     <ul>
55632    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
55633    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
55634    ///     </ul>
55635    ///   
55636    pub contenteditable: core::option::Option<AttributeValue<'life>>,
55637    ///
55638    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
55639    ///   
55640    pub contextmenu: core::option::Option<AttributeValue<'life>>,
55641    ///
55642    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
55643    ///   
55644    #[cfg(feature = "alloc")]
55645    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
55646    ///
55647    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
55648    ///     <ul>
55649    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
55650    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
55651    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
55652    ///     </ul>
55653    ///   
55654    pub dir: core::option::Option<AttributeValue<'life>>,
55655    ///
55656    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
55657    ///     <ul>
55658    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
55659    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
55660    ///     </ul>
55661    ///   
55662    pub draggable: core::option::Option<AttributeValue<'life>>,
55663    ///
55664    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
55665    ///   
55666    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
55667    ///
55668    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
55669    ///   
55670    pub exportparts: core::option::Option<AttributeValue<'life>>,
55671    /// /// Extra attributes of the element.
55672
55673    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
55674    #[cfg(feature = "alloc")]
55675    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
55676    ///
55677    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
55678    ///   
55679    pub hidden: core::option::Option<AttributeValue<'life>>,
55680    ///
55681    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
55682    ///   
55683    pub id: core::option::Option<AttributeValue<'life>>,
55684    ///
55685    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
55686    ///   
55687    pub inert: core::option::Option<AttributeValue<'life>>,
55688    ///
55689    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
55690    ///   
55691    pub inputmode: core::option::Option<AttributeValue<'life>>,
55692    ///
55693    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
55694    ///   
55695    pub is: core::option::Option<AttributeValue<'life>>,
55696    ///
55697    ///     <p>The unique, global identifier of an item.</p>
55698    ///   
55699    pub itemid: core::option::Option<AttributeValue<'life>>,
55700    ///
55701    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
55702    ///   
55703    pub itemprop: core::option::Option<AttributeValue<'life>>,
55704    ///
55705    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
55706    ///   
55707    pub itemref: core::option::Option<AttributeValue<'life>>,
55708    ///
55709    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
55710    ///   
55711    pub itemscope: core::option::Option<AttributeValue<'life>>,
55712    ///
55713    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
55714    ///   
55715    pub itemtype: core::option::Option<AttributeValue<'life>>,
55716    ///
55717    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
55718    ///   
55719    pub lang: core::option::Option<AttributeValue<'life>>,
55720    ///
55721    ///     <p>The slot's name.</p>
55722    ///     <p>A <strong><em>named slot</em></strong> is a <code>&lt;slot&gt;</code> element with a <code>name</code> attribute.</p>
55723    ///   
55724    pub name: core::option::Option<AttributeValue<'life>>,
55725    ///
55726    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
55727    ///   
55728    pub nonce: core::option::Option<AttributeValue<'life>>,
55729    ///
55730    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
55731    ///   
55732    pub part: core::option::Option<AttributeValue<'life>>,
55733    ///
55734    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
55735    ///   
55736    pub popover: core::option::Option<AttributeValue<'life>>,
55737    ///
55738    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
55739    ///   
55740    pub role: core::option::Option<AttributeValue<'life>>,
55741    ///
55742    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
55743    ///   
55744    pub slot: core::option::Option<AttributeValue<'life>>,
55745    ///
55746    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
55747    ///     <ul>
55748    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
55749    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
55750    ///     </ul>
55751    ///   
55752    pub spellcheck: core::option::Option<AttributeValue<'life>>,
55753    ///
55754    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
55755    ///   
55756    pub style: core::option::Option<AttributeValue<'life>>,
55757    ///
55758    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
55759    ///     <ul>
55760    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
55761    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
55762    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
55763    ///     </ul>
55764    ///   
55765    pub tabindex: core::option::Option<AttributeValue<'life>>,
55766    ///
55767    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
55768    ///   
55769    pub title: core::option::Option<AttributeValue<'life>>,
55770    ///
55771    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
55772    ///     <ul>
55773    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
55774    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
55775    ///     </ul>
55776    ///   
55777    pub translate: core::option::Option<AttributeValue<'life>>,
55778    ///
55779    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
55780    ///     <ul>
55781    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
55782    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
55783    ///     </ul>
55784    ///   
55785    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
55786}
55787#[allow(deprecated)]
55788
55789impl<'life> Slot<'life> {
55790    /// Get the tag name of the element.
55791    /// This is the same as the name of the struct, in kebab-case.
55792    pub fn tag() -> &'static str {
55793        "slot"
55794    }
55795    /// Sets an attribute of the element.
55796    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
55797    /// If the `alloc` feature is disabled, this function will silently fail.
55798    ///
55799    /// # Note
55800    /// This only works when the attribute is lowercase.
55801    pub fn set_attr(
55802        &mut self,
55803        name: &'life str,
55804        value: impl core::convert::Into<AttributeValue<'life>>,
55805    ) {
55806        match name {
55807            "accesskey" => self.accesskey = Some(value.into()),
55808            "autocapitalize" => self.autocapitalize = Some(value.into()),
55809            "autofocus" => self.autofocus = Some(value.into()),
55810            "class" => self.class = Some(value.into()),
55811            "contenteditable" => self.contenteditable = Some(value.into()),
55812            "contextmenu" => self.contextmenu = Some(value.into()),
55813            "dir" => self.dir = Some(value.into()),
55814            "draggable" => self.draggable = Some(value.into()),
55815            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
55816            "exportparts" => self.exportparts = Some(value.into()),
55817            "hidden" => self.hidden = Some(value.into()),
55818            "id" => self.id = Some(value.into()),
55819            "inert" => self.inert = Some(value.into()),
55820            "inputmode" => self.inputmode = Some(value.into()),
55821            "is" => self.is = Some(value.into()),
55822            "itemid" => self.itemid = Some(value.into()),
55823            "itemprop" => self.itemprop = Some(value.into()),
55824            "itemref" => self.itemref = Some(value.into()),
55825            "itemscope" => self.itemscope = Some(value.into()),
55826            "itemtype" => self.itemtype = Some(value.into()),
55827            "lang" => self.lang = Some(value.into()),
55828            "name" => self.name = Some(value.into()),
55829            "nonce" => self.nonce = Some(value.into()),
55830            "part" => self.part = Some(value.into()),
55831            "popover" => self.popover = Some(value.into()),
55832            "role" => self.role = Some(value.into()),
55833            "slot" => self.slot = Some(value.into()),
55834            "spellcheck" => self.spellcheck = Some(value.into()),
55835            "style" => self.style = Some(value.into()),
55836            "tabindex" => self.tabindex = Some(value.into()),
55837            "title" => self.title = Some(value.into()),
55838            "translate" => self.translate = Some(value.into()),
55839            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
55840            #[cfg(feature = "alloc")]
55841            _ => {
55842                #[allow(clippy::useless_conversion)]
55843                self.extra.insert(name.into(), value.into());
55844            }
55845            #[cfg(not(feature = "alloc"))]
55846            _ => {}
55847        }
55848    }
55849}
55850/// The <strong><code>&lt;slot&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element—part of the <a href="/en-US/docs/Web/API/Web_components">Web Components</a> 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.
55851///
55852/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/slot>
55853
55854#[cfg(feature = "alloc")]
55855#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
55856pub struct SlotOwned {
55857    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
55858    ///   
55859    pub accesskey: core::option::Option<AttributeValueOwned>,
55860    ///
55861    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
55862    ///     <ul>
55863    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
55864    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
55865    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
55866    ///       <li><code>characters</code>, all letters should default to uppercase</li>
55867    ///     </ul>
55868    ///   
55869    pub autocapitalize: core::option::Option<AttributeValueOwned>,
55870    ///
55871    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
55872    ///   
55873    pub autofocus: core::option::Option<AttributeValueOwned>,
55874    ///
55875    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
55876    ///   
55877    pub class: core::option::Option<AttributeValueOwned>,
55878    ///
55879    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
55880    ///     <ul>
55881    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
55882    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
55883    ///     </ul>
55884    ///   
55885    pub contenteditable: core::option::Option<AttributeValueOwned>,
55886    ///
55887    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
55888    ///   
55889    pub contextmenu: core::option::Option<AttributeValueOwned>,
55890    ///
55891    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
55892    ///   
55893    #[cfg(feature = "alloc")]
55894    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
55895    ///
55896    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
55897    ///     <ul>
55898    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
55899    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
55900    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
55901    ///     </ul>
55902    ///   
55903    pub dir: core::option::Option<AttributeValueOwned>,
55904    ///
55905    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
55906    ///     <ul>
55907    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
55908    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
55909    ///     </ul>
55910    ///   
55911    pub draggable: core::option::Option<AttributeValueOwned>,
55912    ///
55913    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
55914    ///   
55915    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
55916    ///
55917    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
55918    ///   
55919    pub exportparts: core::option::Option<AttributeValueOwned>,
55920    /// /// Extra attributes of the element.
55921
55922    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
55923    #[cfg(feature = "alloc")]
55924    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
55925    ///
55926    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
55927    ///   
55928    pub hidden: core::option::Option<AttributeValueOwned>,
55929    ///
55930    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
55931    ///   
55932    pub id: core::option::Option<AttributeValueOwned>,
55933    ///
55934    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
55935    ///   
55936    pub inert: core::option::Option<AttributeValueOwned>,
55937    ///
55938    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
55939    ///   
55940    pub inputmode: core::option::Option<AttributeValueOwned>,
55941    ///
55942    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
55943    ///   
55944    pub is: core::option::Option<AttributeValueOwned>,
55945    ///
55946    ///     <p>The unique, global identifier of an item.</p>
55947    ///   
55948    pub itemid: core::option::Option<AttributeValueOwned>,
55949    ///
55950    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
55951    ///   
55952    pub itemprop: core::option::Option<AttributeValueOwned>,
55953    ///
55954    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
55955    ///   
55956    pub itemref: core::option::Option<AttributeValueOwned>,
55957    ///
55958    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
55959    ///   
55960    pub itemscope: core::option::Option<AttributeValueOwned>,
55961    ///
55962    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
55963    ///   
55964    pub itemtype: core::option::Option<AttributeValueOwned>,
55965    ///
55966    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
55967    ///   
55968    pub lang: core::option::Option<AttributeValueOwned>,
55969    ///
55970    ///     <p>The slot's name.</p>
55971    ///     <p>A <strong><em>named slot</em></strong> is a <code>&lt;slot&gt;</code> element with a <code>name</code> attribute.</p>
55972    ///   
55973    pub name: core::option::Option<AttributeValueOwned>,
55974    ///
55975    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
55976    ///   
55977    pub nonce: core::option::Option<AttributeValueOwned>,
55978    ///
55979    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
55980    ///   
55981    pub part: core::option::Option<AttributeValueOwned>,
55982    ///
55983    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
55984    ///   
55985    pub popover: core::option::Option<AttributeValueOwned>,
55986    ///
55987    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
55988    ///   
55989    pub role: core::option::Option<AttributeValueOwned>,
55990    ///
55991    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
55992    ///   
55993    pub slot: core::option::Option<AttributeValueOwned>,
55994    ///
55995    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
55996    ///     <ul>
55997    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
55998    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
55999    ///     </ul>
56000    ///   
56001    pub spellcheck: core::option::Option<AttributeValueOwned>,
56002    ///
56003    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
56004    ///   
56005    pub style: core::option::Option<AttributeValueOwned>,
56006    ///
56007    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
56008    ///     <ul>
56009    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
56010    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
56011    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
56012    ///     </ul>
56013    ///   
56014    pub tabindex: core::option::Option<AttributeValueOwned>,
56015    ///
56016    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
56017    ///   
56018    pub title: core::option::Option<AttributeValueOwned>,
56019    ///
56020    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
56021    ///     <ul>
56022    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
56023    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
56024    ///     </ul>
56025    ///   
56026    pub translate: core::option::Option<AttributeValueOwned>,
56027    ///
56028    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
56029    ///     <ul>
56030    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
56031    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
56032    ///     </ul>
56033    ///   
56034    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
56035}
56036#[allow(deprecated)]
56037#[cfg(feature = "alloc")]
56038impl SlotOwned {
56039    /// Get the tag name of the element.
56040    /// This is the same as the name of the struct, in kebab-case.
56041    pub fn tag() -> &'static str {
56042        "slot"
56043    }
56044    /// Sets an attribute of the element.
56045    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
56046    /// If the `alloc` feature is disabled, this function will silently fail.
56047    ///
56048    /// # Note
56049    /// This only works when the attribute is lowercase.
56050    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
56051        match name {
56052            "accesskey" => self.accesskey = Some(value.into()),
56053            "autocapitalize" => self.autocapitalize = Some(value.into()),
56054            "autofocus" => self.autofocus = Some(value.into()),
56055            "class" => self.class = Some(value.into()),
56056            "contenteditable" => self.contenteditable = Some(value.into()),
56057            "contextmenu" => self.contextmenu = Some(value.into()),
56058            "dir" => self.dir = Some(value.into()),
56059            "draggable" => self.draggable = Some(value.into()),
56060            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
56061            "exportparts" => self.exportparts = Some(value.into()),
56062            "hidden" => self.hidden = Some(value.into()),
56063            "id" => self.id = Some(value.into()),
56064            "inert" => self.inert = Some(value.into()),
56065            "inputmode" => self.inputmode = Some(value.into()),
56066            "is" => self.is = Some(value.into()),
56067            "itemid" => self.itemid = Some(value.into()),
56068            "itemprop" => self.itemprop = Some(value.into()),
56069            "itemref" => self.itemref = Some(value.into()),
56070            "itemscope" => self.itemscope = Some(value.into()),
56071            "itemtype" => self.itemtype = Some(value.into()),
56072            "lang" => self.lang = Some(value.into()),
56073            "name" => self.name = Some(value.into()),
56074            "nonce" => self.nonce = Some(value.into()),
56075            "part" => self.part = Some(value.into()),
56076            "popover" => self.popover = Some(value.into()),
56077            "role" => self.role = Some(value.into()),
56078            "slot" => self.slot = Some(value.into()),
56079            "spellcheck" => self.spellcheck = Some(value.into()),
56080            "style" => self.style = Some(value.into()),
56081            "tabindex" => self.tabindex = Some(value.into()),
56082            "title" => self.title = Some(value.into()),
56083            "translate" => self.translate = Some(value.into()),
56084            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
56085            #[cfg(feature = "alloc")]
56086            _ => {
56087                #[allow(clippy::useless_conversion)]
56088                self.extra.insert(name.into(), value.into());
56089            }
56090            #[cfg(not(feature = "alloc"))]
56091            _ => {}
56092        }
56093    }
56094}
56095/// The <strong><code>&lt;template&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element is a mechanism for holding <a href="/en-US/docs/Glossary/HTML">HTML</a> that is not to be rendered immediately when a page is loaded but may be instantiated subsequently during runtime using JavaScript.
56096///
56097/// Think of a template as a content fragment that is being stored for subsequent use in the document. While the parser does process the contents of the <strong><code>&lt;template&gt;</code></strong> element while loading the page, it does so only to ensure that those contents are valid; the element's contents are not rendered, however.
56098///
56099/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/template>
56100
56101#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
56102pub struct Template<'life> {
56103    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
56104    ///   
56105    pub accesskey: core::option::Option<AttributeValue<'life>>,
56106    ///
56107    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
56108    ///     <ul>
56109    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
56110    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
56111    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
56112    ///       <li><code>characters</code>, all letters should default to uppercase</li>
56113    ///     </ul>
56114    ///   
56115    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
56116    ///
56117    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
56118    ///   
56119    pub autofocus: core::option::Option<AttributeValue<'life>>,
56120    ///
56121    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
56122    ///   
56123    pub class: core::option::Option<AttributeValue<'life>>,
56124    ///
56125    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
56126    ///     <ul>
56127    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
56128    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
56129    ///     </ul>
56130    ///   
56131    pub contenteditable: core::option::Option<AttributeValue<'life>>,
56132    ///
56133    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
56134    ///   
56135    pub contextmenu: core::option::Option<AttributeValue<'life>>,
56136    ///
56137    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
56138    ///   
56139    #[cfg(feature = "alloc")]
56140    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
56141    ///
56142    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
56143    ///     <ul>
56144    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
56145    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
56146    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
56147    ///     </ul>
56148    ///   
56149    pub dir: core::option::Option<AttributeValue<'life>>,
56150    ///
56151    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
56152    ///     <ul>
56153    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
56154    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
56155    ///     </ul>
56156    ///   
56157    pub draggable: core::option::Option<AttributeValue<'life>>,
56158    ///
56159    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
56160    ///   
56161    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
56162    ///
56163    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
56164    ///   
56165    pub exportparts: core::option::Option<AttributeValue<'life>>,
56166    /// /// Extra attributes of the element.
56167
56168    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
56169    #[cfg(feature = "alloc")]
56170    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
56171    ///
56172    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
56173    ///   
56174    pub hidden: core::option::Option<AttributeValue<'life>>,
56175    ///
56176    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
56177    ///   
56178    pub id: core::option::Option<AttributeValue<'life>>,
56179    ///
56180    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
56181    ///   
56182    pub inert: core::option::Option<AttributeValue<'life>>,
56183    ///
56184    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
56185    ///   
56186    pub inputmode: core::option::Option<AttributeValue<'life>>,
56187    ///
56188    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
56189    ///   
56190    pub is: core::option::Option<AttributeValue<'life>>,
56191    ///
56192    ///     <p>The unique, global identifier of an item.</p>
56193    ///   
56194    pub itemid: core::option::Option<AttributeValue<'life>>,
56195    ///
56196    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
56197    ///   
56198    pub itemprop: core::option::Option<AttributeValue<'life>>,
56199    ///
56200    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
56201    ///   
56202    pub itemref: core::option::Option<AttributeValue<'life>>,
56203    ///
56204    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
56205    ///   
56206    pub itemscope: core::option::Option<AttributeValue<'life>>,
56207    ///
56208    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
56209    ///   
56210    pub itemtype: core::option::Option<AttributeValue<'life>>,
56211    ///
56212    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
56213    ///   
56214    pub lang: core::option::Option<AttributeValue<'life>>,
56215    ///
56216    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
56217    ///   
56218    pub nonce: core::option::Option<AttributeValue<'life>>,
56219    ///
56220    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
56221    ///   
56222    pub part: core::option::Option<AttributeValue<'life>>,
56223    ///
56224    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
56225    ///   
56226    pub popover: core::option::Option<AttributeValue<'life>>,
56227    ///
56228    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
56229    ///   
56230    pub role: core::option::Option<AttributeValue<'life>>,
56231    ///
56232    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
56233    ///   
56234    pub slot: core::option::Option<AttributeValue<'life>>,
56235    ///
56236    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
56237    ///     <ul>
56238    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
56239    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
56240    ///     </ul>
56241    ///   
56242    pub spellcheck: core::option::Option<AttributeValue<'life>>,
56243    ///
56244    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
56245    ///   
56246    pub style: core::option::Option<AttributeValue<'life>>,
56247    ///
56248    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
56249    ///     <ul>
56250    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
56251    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
56252    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
56253    ///     </ul>
56254    ///   
56255    pub tabindex: core::option::Option<AttributeValue<'life>>,
56256    ///
56257    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
56258    ///   
56259    pub title: core::option::Option<AttributeValue<'life>>,
56260    ///
56261    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
56262    ///     <ul>
56263    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
56264    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
56265    ///     </ul>
56266    ///   
56267    pub translate: core::option::Option<AttributeValue<'life>>,
56268    ///
56269    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
56270    ///     <ul>
56271    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
56272    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
56273    ///     </ul>
56274    ///   
56275    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
56276}
56277#[allow(deprecated)]
56278
56279impl<'life> Template<'life> {
56280    /// Get the tag name of the element.
56281    /// This is the same as the name of the struct, in kebab-case.
56282    pub fn tag() -> &'static str {
56283        "template"
56284    }
56285    /// Sets an attribute of the element.
56286    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
56287    /// If the `alloc` feature is disabled, this function will silently fail.
56288    ///
56289    /// # Note
56290    /// This only works when the attribute is lowercase.
56291    pub fn set_attr(
56292        &mut self,
56293        name: &'life str,
56294        value: impl core::convert::Into<AttributeValue<'life>>,
56295    ) {
56296        match name {
56297            "accesskey" => self.accesskey = Some(value.into()),
56298            "autocapitalize" => self.autocapitalize = Some(value.into()),
56299            "autofocus" => self.autofocus = Some(value.into()),
56300            "class" => self.class = Some(value.into()),
56301            "contenteditable" => self.contenteditable = Some(value.into()),
56302            "contextmenu" => self.contextmenu = Some(value.into()),
56303            "dir" => self.dir = Some(value.into()),
56304            "draggable" => self.draggable = Some(value.into()),
56305            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
56306            "exportparts" => self.exportparts = Some(value.into()),
56307            "hidden" => self.hidden = Some(value.into()),
56308            "id" => self.id = Some(value.into()),
56309            "inert" => self.inert = Some(value.into()),
56310            "inputmode" => self.inputmode = Some(value.into()),
56311            "is" => self.is = Some(value.into()),
56312            "itemid" => self.itemid = Some(value.into()),
56313            "itemprop" => self.itemprop = Some(value.into()),
56314            "itemref" => self.itemref = Some(value.into()),
56315            "itemscope" => self.itemscope = Some(value.into()),
56316            "itemtype" => self.itemtype = Some(value.into()),
56317            "lang" => self.lang = Some(value.into()),
56318            "nonce" => self.nonce = Some(value.into()),
56319            "part" => self.part = Some(value.into()),
56320            "popover" => self.popover = Some(value.into()),
56321            "role" => self.role = Some(value.into()),
56322            "slot" => self.slot = Some(value.into()),
56323            "spellcheck" => self.spellcheck = Some(value.into()),
56324            "style" => self.style = Some(value.into()),
56325            "tabindex" => self.tabindex = Some(value.into()),
56326            "title" => self.title = Some(value.into()),
56327            "translate" => self.translate = Some(value.into()),
56328            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
56329            #[cfg(feature = "alloc")]
56330            _ => {
56331                #[allow(clippy::useless_conversion)]
56332                self.extra.insert(name.into(), value.into());
56333            }
56334            #[cfg(not(feature = "alloc"))]
56335            _ => {}
56336        }
56337    }
56338}
56339/// The <strong><code>&lt;template&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element is a mechanism for holding <a href="/en-US/docs/Glossary/HTML">HTML</a> that is not to be rendered immediately when a page is loaded but may be instantiated subsequently during runtime using JavaScript.
56340///
56341/// Think of a template as a content fragment that is being stored for subsequent use in the document. While the parser does process the contents of the <strong><code>&lt;template&gt;</code></strong> element while loading the page, it does so only to ensure that those contents are valid; the element's contents are not rendered, however.
56342///
56343/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/template>
56344
56345#[cfg(feature = "alloc")]
56346#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
56347pub struct TemplateOwned {
56348    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
56349    ///   
56350    pub accesskey: core::option::Option<AttributeValueOwned>,
56351    ///
56352    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
56353    ///     <ul>
56354    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
56355    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
56356    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
56357    ///       <li><code>characters</code>, all letters should default to uppercase</li>
56358    ///     </ul>
56359    ///   
56360    pub autocapitalize: core::option::Option<AttributeValueOwned>,
56361    ///
56362    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
56363    ///   
56364    pub autofocus: core::option::Option<AttributeValueOwned>,
56365    ///
56366    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
56367    ///   
56368    pub class: core::option::Option<AttributeValueOwned>,
56369    ///
56370    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
56371    ///     <ul>
56372    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
56373    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
56374    ///     </ul>
56375    ///   
56376    pub contenteditable: core::option::Option<AttributeValueOwned>,
56377    ///
56378    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
56379    ///   
56380    pub contextmenu: core::option::Option<AttributeValueOwned>,
56381    ///
56382    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
56383    ///   
56384    #[cfg(feature = "alloc")]
56385    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
56386    ///
56387    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
56388    ///     <ul>
56389    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
56390    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
56391    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
56392    ///     </ul>
56393    ///   
56394    pub dir: core::option::Option<AttributeValueOwned>,
56395    ///
56396    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
56397    ///     <ul>
56398    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
56399    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
56400    ///     </ul>
56401    ///   
56402    pub draggable: core::option::Option<AttributeValueOwned>,
56403    ///
56404    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
56405    ///   
56406    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
56407    ///
56408    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
56409    ///   
56410    pub exportparts: core::option::Option<AttributeValueOwned>,
56411    /// /// Extra attributes of the element.
56412
56413    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
56414    #[cfg(feature = "alloc")]
56415    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
56416    ///
56417    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
56418    ///   
56419    pub hidden: core::option::Option<AttributeValueOwned>,
56420    ///
56421    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
56422    ///   
56423    pub id: core::option::Option<AttributeValueOwned>,
56424    ///
56425    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
56426    ///   
56427    pub inert: core::option::Option<AttributeValueOwned>,
56428    ///
56429    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
56430    ///   
56431    pub inputmode: core::option::Option<AttributeValueOwned>,
56432    ///
56433    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
56434    ///   
56435    pub is: core::option::Option<AttributeValueOwned>,
56436    ///
56437    ///     <p>The unique, global identifier of an item.</p>
56438    ///   
56439    pub itemid: core::option::Option<AttributeValueOwned>,
56440    ///
56441    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
56442    ///   
56443    pub itemprop: core::option::Option<AttributeValueOwned>,
56444    ///
56445    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
56446    ///   
56447    pub itemref: core::option::Option<AttributeValueOwned>,
56448    ///
56449    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
56450    ///   
56451    pub itemscope: core::option::Option<AttributeValueOwned>,
56452    ///
56453    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
56454    ///   
56455    pub itemtype: core::option::Option<AttributeValueOwned>,
56456    ///
56457    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
56458    ///   
56459    pub lang: core::option::Option<AttributeValueOwned>,
56460    ///
56461    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
56462    ///   
56463    pub nonce: core::option::Option<AttributeValueOwned>,
56464    ///
56465    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
56466    ///   
56467    pub part: core::option::Option<AttributeValueOwned>,
56468    ///
56469    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
56470    ///   
56471    pub popover: core::option::Option<AttributeValueOwned>,
56472    ///
56473    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
56474    ///   
56475    pub role: core::option::Option<AttributeValueOwned>,
56476    ///
56477    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
56478    ///   
56479    pub slot: core::option::Option<AttributeValueOwned>,
56480    ///
56481    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
56482    ///     <ul>
56483    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
56484    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
56485    ///     </ul>
56486    ///   
56487    pub spellcheck: core::option::Option<AttributeValueOwned>,
56488    ///
56489    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
56490    ///   
56491    pub style: core::option::Option<AttributeValueOwned>,
56492    ///
56493    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
56494    ///     <ul>
56495    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
56496    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
56497    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
56498    ///     </ul>
56499    ///   
56500    pub tabindex: core::option::Option<AttributeValueOwned>,
56501    ///
56502    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
56503    ///   
56504    pub title: core::option::Option<AttributeValueOwned>,
56505    ///
56506    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
56507    ///     <ul>
56508    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
56509    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
56510    ///     </ul>
56511    ///   
56512    pub translate: core::option::Option<AttributeValueOwned>,
56513    ///
56514    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
56515    ///     <ul>
56516    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
56517    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
56518    ///     </ul>
56519    ///   
56520    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
56521}
56522#[allow(deprecated)]
56523#[cfg(feature = "alloc")]
56524impl TemplateOwned {
56525    /// Get the tag name of the element.
56526    /// This is the same as the name of the struct, in kebab-case.
56527    pub fn tag() -> &'static str {
56528        "template"
56529    }
56530    /// Sets an attribute of the element.
56531    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
56532    /// If the `alloc` feature is disabled, this function will silently fail.
56533    ///
56534    /// # Note
56535    /// This only works when the attribute is lowercase.
56536    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
56537        match name {
56538            "accesskey" => self.accesskey = Some(value.into()),
56539            "autocapitalize" => self.autocapitalize = Some(value.into()),
56540            "autofocus" => self.autofocus = Some(value.into()),
56541            "class" => self.class = Some(value.into()),
56542            "contenteditable" => self.contenteditable = Some(value.into()),
56543            "contextmenu" => self.contextmenu = Some(value.into()),
56544            "dir" => self.dir = Some(value.into()),
56545            "draggable" => self.draggable = Some(value.into()),
56546            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
56547            "exportparts" => self.exportparts = Some(value.into()),
56548            "hidden" => self.hidden = Some(value.into()),
56549            "id" => self.id = Some(value.into()),
56550            "inert" => self.inert = Some(value.into()),
56551            "inputmode" => self.inputmode = Some(value.into()),
56552            "is" => self.is = Some(value.into()),
56553            "itemid" => self.itemid = Some(value.into()),
56554            "itemprop" => self.itemprop = Some(value.into()),
56555            "itemref" => self.itemref = Some(value.into()),
56556            "itemscope" => self.itemscope = Some(value.into()),
56557            "itemtype" => self.itemtype = Some(value.into()),
56558            "lang" => self.lang = Some(value.into()),
56559            "nonce" => self.nonce = Some(value.into()),
56560            "part" => self.part = Some(value.into()),
56561            "popover" => self.popover = Some(value.into()),
56562            "role" => self.role = Some(value.into()),
56563            "slot" => self.slot = Some(value.into()),
56564            "spellcheck" => self.spellcheck = Some(value.into()),
56565            "style" => self.style = Some(value.into()),
56566            "tabindex" => self.tabindex = Some(value.into()),
56567            "title" => self.title = Some(value.into()),
56568            "translate" => self.translate = Some(value.into()),
56569            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
56570            #[cfg(feature = "alloc")]
56571            _ => {
56572                #[allow(clippy::useless_conversion)]
56573                self.extra.insert(name.into(), value.into());
56574            }
56575            #[cfg(not(feature = "alloc"))]
56576            _ => {}
56577        }
56578    }
56579}
56580/// <p>The <strong><code>&lt;acronym&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element allows authors to clearly indicate a sequence of characters that compose an acronym or abbreviation for a word.</p>
56581/// <div class="notecard warning" id="sect2">
56582///   <p><strong>Warning:</strong> Don't use this element. Use the <a href="/en-US/docs/Web/HTML/Element/abbr"><code>&lt;abbr&gt;</code></a> element instead.</p>
56583/// </div>
56584///
56585/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/acronym>
56586#[deprecated]
56587#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
56588pub struct Acronym<'life> {
56589    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
56590    ///   
56591    pub accesskey: core::option::Option<AttributeValue<'life>>,
56592    ///
56593    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
56594    ///     <ul>
56595    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
56596    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
56597    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
56598    ///       <li><code>characters</code>, all letters should default to uppercase</li>
56599    ///     </ul>
56600    ///   
56601    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
56602    ///
56603    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
56604    ///   
56605    pub autofocus: core::option::Option<AttributeValue<'life>>,
56606    ///
56607    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
56608    ///   
56609    pub class: core::option::Option<AttributeValue<'life>>,
56610    ///
56611    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
56612    ///     <ul>
56613    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
56614    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
56615    ///     </ul>
56616    ///   
56617    pub contenteditable: core::option::Option<AttributeValue<'life>>,
56618    ///
56619    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
56620    ///   
56621    pub contextmenu: core::option::Option<AttributeValue<'life>>,
56622    ///
56623    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
56624    ///   
56625    #[cfg(feature = "alloc")]
56626    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
56627    ///
56628    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
56629    ///     <ul>
56630    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
56631    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
56632    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
56633    ///     </ul>
56634    ///   
56635    pub dir: core::option::Option<AttributeValue<'life>>,
56636    ///
56637    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
56638    ///     <ul>
56639    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
56640    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
56641    ///     </ul>
56642    ///   
56643    pub draggable: core::option::Option<AttributeValue<'life>>,
56644    ///
56645    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
56646    ///   
56647    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
56648    ///
56649    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
56650    ///   
56651    pub exportparts: core::option::Option<AttributeValue<'life>>,
56652    /// /// Extra attributes of the element.
56653
56654    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
56655    #[cfg(feature = "alloc")]
56656    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
56657    ///
56658    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
56659    ///   
56660    pub hidden: core::option::Option<AttributeValue<'life>>,
56661    ///
56662    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
56663    ///   
56664    pub id: core::option::Option<AttributeValue<'life>>,
56665    ///
56666    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
56667    ///   
56668    pub inert: core::option::Option<AttributeValue<'life>>,
56669    ///
56670    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
56671    ///   
56672    pub inputmode: core::option::Option<AttributeValue<'life>>,
56673    ///
56674    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
56675    ///   
56676    pub is: core::option::Option<AttributeValue<'life>>,
56677    ///
56678    ///     <p>The unique, global identifier of an item.</p>
56679    ///   
56680    pub itemid: core::option::Option<AttributeValue<'life>>,
56681    ///
56682    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
56683    ///   
56684    pub itemprop: core::option::Option<AttributeValue<'life>>,
56685    ///
56686    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
56687    ///   
56688    pub itemref: core::option::Option<AttributeValue<'life>>,
56689    ///
56690    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
56691    ///   
56692    pub itemscope: core::option::Option<AttributeValue<'life>>,
56693    ///
56694    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
56695    ///   
56696    pub itemtype: core::option::Option<AttributeValue<'life>>,
56697    ///
56698    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
56699    ///   
56700    pub lang: core::option::Option<AttributeValue<'life>>,
56701    ///
56702    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
56703    ///   
56704    pub nonce: core::option::Option<AttributeValue<'life>>,
56705    ///
56706    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
56707    ///   
56708    pub part: core::option::Option<AttributeValue<'life>>,
56709    ///
56710    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
56711    ///   
56712    pub popover: core::option::Option<AttributeValue<'life>>,
56713    ///
56714    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
56715    ///   
56716    pub role: core::option::Option<AttributeValue<'life>>,
56717    ///
56718    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
56719    ///   
56720    pub slot: core::option::Option<AttributeValue<'life>>,
56721    ///
56722    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
56723    ///     <ul>
56724    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
56725    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
56726    ///     </ul>
56727    ///   
56728    pub spellcheck: core::option::Option<AttributeValue<'life>>,
56729    ///
56730    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
56731    ///   
56732    pub style: core::option::Option<AttributeValue<'life>>,
56733    ///
56734    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
56735    ///     <ul>
56736    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
56737    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
56738    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
56739    ///     </ul>
56740    ///   
56741    pub tabindex: core::option::Option<AttributeValue<'life>>,
56742    ///
56743    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
56744    ///   
56745    pub title: core::option::Option<AttributeValue<'life>>,
56746    ///
56747    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
56748    ///     <ul>
56749    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
56750    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
56751    ///     </ul>
56752    ///   
56753    pub translate: core::option::Option<AttributeValue<'life>>,
56754    ///
56755    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
56756    ///     <ul>
56757    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
56758    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
56759    ///     </ul>
56760    ///   
56761    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
56762}
56763#[allow(deprecated)]
56764
56765impl<'life> Acronym<'life> {
56766    /// Get the tag name of the element.
56767    /// This is the same as the name of the struct, in kebab-case.
56768    pub fn tag() -> &'static str {
56769        "acronym"
56770    }
56771    /// Sets an attribute of the element.
56772    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
56773    /// If the `alloc` feature is disabled, this function will silently fail.
56774    ///
56775    /// # Note
56776    /// This only works when the attribute is lowercase.
56777    pub fn set_attr(
56778        &mut self,
56779        name: &'life str,
56780        value: impl core::convert::Into<AttributeValue<'life>>,
56781    ) {
56782        match name {
56783            "accesskey" => self.accesskey = Some(value.into()),
56784            "autocapitalize" => self.autocapitalize = Some(value.into()),
56785            "autofocus" => self.autofocus = Some(value.into()),
56786            "class" => self.class = Some(value.into()),
56787            "contenteditable" => self.contenteditable = Some(value.into()),
56788            "contextmenu" => self.contextmenu = Some(value.into()),
56789            "dir" => self.dir = Some(value.into()),
56790            "draggable" => self.draggable = Some(value.into()),
56791            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
56792            "exportparts" => self.exportparts = Some(value.into()),
56793            "hidden" => self.hidden = Some(value.into()),
56794            "id" => self.id = Some(value.into()),
56795            "inert" => self.inert = Some(value.into()),
56796            "inputmode" => self.inputmode = Some(value.into()),
56797            "is" => self.is = Some(value.into()),
56798            "itemid" => self.itemid = Some(value.into()),
56799            "itemprop" => self.itemprop = Some(value.into()),
56800            "itemref" => self.itemref = Some(value.into()),
56801            "itemscope" => self.itemscope = Some(value.into()),
56802            "itemtype" => self.itemtype = Some(value.into()),
56803            "lang" => self.lang = Some(value.into()),
56804            "nonce" => self.nonce = Some(value.into()),
56805            "part" => self.part = Some(value.into()),
56806            "popover" => self.popover = Some(value.into()),
56807            "role" => self.role = Some(value.into()),
56808            "slot" => self.slot = Some(value.into()),
56809            "spellcheck" => self.spellcheck = Some(value.into()),
56810            "style" => self.style = Some(value.into()),
56811            "tabindex" => self.tabindex = Some(value.into()),
56812            "title" => self.title = Some(value.into()),
56813            "translate" => self.translate = Some(value.into()),
56814            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
56815            #[cfg(feature = "alloc")]
56816            _ => {
56817                #[allow(clippy::useless_conversion)]
56818                self.extra.insert(name.into(), value.into());
56819            }
56820            #[cfg(not(feature = "alloc"))]
56821            _ => {}
56822        }
56823    }
56824}
56825/// <p>The <strong><code>&lt;acronym&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element allows authors to clearly indicate a sequence of characters that compose an acronym or abbreviation for a word.</p>
56826/// <div class="notecard warning" id="sect2">
56827///   <p><strong>Warning:</strong> Don't use this element. Use the <a href="/en-US/docs/Web/HTML/Element/abbr"><code>&lt;abbr&gt;</code></a> element instead.</p>
56828/// </div>
56829///
56830/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/acronym>
56831#[deprecated]
56832#[cfg(feature = "alloc")]
56833#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
56834pub struct AcronymOwned {
56835    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
56836    ///   
56837    pub accesskey: core::option::Option<AttributeValueOwned>,
56838    ///
56839    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
56840    ///     <ul>
56841    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
56842    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
56843    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
56844    ///       <li><code>characters</code>, all letters should default to uppercase</li>
56845    ///     </ul>
56846    ///   
56847    pub autocapitalize: core::option::Option<AttributeValueOwned>,
56848    ///
56849    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
56850    ///   
56851    pub autofocus: core::option::Option<AttributeValueOwned>,
56852    ///
56853    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
56854    ///   
56855    pub class: core::option::Option<AttributeValueOwned>,
56856    ///
56857    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
56858    ///     <ul>
56859    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
56860    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
56861    ///     </ul>
56862    ///   
56863    pub contenteditable: core::option::Option<AttributeValueOwned>,
56864    ///
56865    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
56866    ///   
56867    pub contextmenu: core::option::Option<AttributeValueOwned>,
56868    ///
56869    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
56870    ///   
56871    #[cfg(feature = "alloc")]
56872    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
56873    ///
56874    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
56875    ///     <ul>
56876    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
56877    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
56878    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
56879    ///     </ul>
56880    ///   
56881    pub dir: core::option::Option<AttributeValueOwned>,
56882    ///
56883    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
56884    ///     <ul>
56885    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
56886    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
56887    ///     </ul>
56888    ///   
56889    pub draggable: core::option::Option<AttributeValueOwned>,
56890    ///
56891    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
56892    ///   
56893    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
56894    ///
56895    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
56896    ///   
56897    pub exportparts: core::option::Option<AttributeValueOwned>,
56898    /// /// Extra attributes of the element.
56899
56900    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
56901    #[cfg(feature = "alloc")]
56902    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
56903    ///
56904    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
56905    ///   
56906    pub hidden: core::option::Option<AttributeValueOwned>,
56907    ///
56908    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
56909    ///   
56910    pub id: core::option::Option<AttributeValueOwned>,
56911    ///
56912    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
56913    ///   
56914    pub inert: core::option::Option<AttributeValueOwned>,
56915    ///
56916    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
56917    ///   
56918    pub inputmode: core::option::Option<AttributeValueOwned>,
56919    ///
56920    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
56921    ///   
56922    pub is: core::option::Option<AttributeValueOwned>,
56923    ///
56924    ///     <p>The unique, global identifier of an item.</p>
56925    ///   
56926    pub itemid: core::option::Option<AttributeValueOwned>,
56927    ///
56928    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
56929    ///   
56930    pub itemprop: core::option::Option<AttributeValueOwned>,
56931    ///
56932    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
56933    ///   
56934    pub itemref: core::option::Option<AttributeValueOwned>,
56935    ///
56936    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
56937    ///   
56938    pub itemscope: core::option::Option<AttributeValueOwned>,
56939    ///
56940    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
56941    ///   
56942    pub itemtype: core::option::Option<AttributeValueOwned>,
56943    ///
56944    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
56945    ///   
56946    pub lang: core::option::Option<AttributeValueOwned>,
56947    ///
56948    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
56949    ///   
56950    pub nonce: core::option::Option<AttributeValueOwned>,
56951    ///
56952    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
56953    ///   
56954    pub part: core::option::Option<AttributeValueOwned>,
56955    ///
56956    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
56957    ///   
56958    pub popover: core::option::Option<AttributeValueOwned>,
56959    ///
56960    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
56961    ///   
56962    pub role: core::option::Option<AttributeValueOwned>,
56963    ///
56964    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
56965    ///   
56966    pub slot: core::option::Option<AttributeValueOwned>,
56967    ///
56968    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
56969    ///     <ul>
56970    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
56971    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
56972    ///     </ul>
56973    ///   
56974    pub spellcheck: core::option::Option<AttributeValueOwned>,
56975    ///
56976    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
56977    ///   
56978    pub style: core::option::Option<AttributeValueOwned>,
56979    ///
56980    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
56981    ///     <ul>
56982    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
56983    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
56984    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
56985    ///     </ul>
56986    ///   
56987    pub tabindex: core::option::Option<AttributeValueOwned>,
56988    ///
56989    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
56990    ///   
56991    pub title: core::option::Option<AttributeValueOwned>,
56992    ///
56993    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
56994    ///     <ul>
56995    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
56996    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
56997    ///     </ul>
56998    ///   
56999    pub translate: core::option::Option<AttributeValueOwned>,
57000    ///
57001    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
57002    ///     <ul>
57003    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
57004    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
57005    ///     </ul>
57006    ///   
57007    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
57008}
57009#[allow(deprecated)]
57010#[cfg(feature = "alloc")]
57011impl AcronymOwned {
57012    /// Get the tag name of the element.
57013    /// This is the same as the name of the struct, in kebab-case.
57014    pub fn tag() -> &'static str {
57015        "acronym"
57016    }
57017    /// Sets an attribute of the element.
57018    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
57019    /// If the `alloc` feature is disabled, this function will silently fail.
57020    ///
57021    /// # Note
57022    /// This only works when the attribute is lowercase.
57023    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
57024        match name {
57025            "accesskey" => self.accesskey = Some(value.into()),
57026            "autocapitalize" => self.autocapitalize = Some(value.into()),
57027            "autofocus" => self.autofocus = Some(value.into()),
57028            "class" => self.class = Some(value.into()),
57029            "contenteditable" => self.contenteditable = Some(value.into()),
57030            "contextmenu" => self.contextmenu = Some(value.into()),
57031            "dir" => self.dir = Some(value.into()),
57032            "draggable" => self.draggable = Some(value.into()),
57033            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
57034            "exportparts" => self.exportparts = Some(value.into()),
57035            "hidden" => self.hidden = Some(value.into()),
57036            "id" => self.id = Some(value.into()),
57037            "inert" => self.inert = Some(value.into()),
57038            "inputmode" => self.inputmode = Some(value.into()),
57039            "is" => self.is = Some(value.into()),
57040            "itemid" => self.itemid = Some(value.into()),
57041            "itemprop" => self.itemprop = Some(value.into()),
57042            "itemref" => self.itemref = Some(value.into()),
57043            "itemscope" => self.itemscope = Some(value.into()),
57044            "itemtype" => self.itemtype = Some(value.into()),
57045            "lang" => self.lang = Some(value.into()),
57046            "nonce" => self.nonce = Some(value.into()),
57047            "part" => self.part = Some(value.into()),
57048            "popover" => self.popover = Some(value.into()),
57049            "role" => self.role = Some(value.into()),
57050            "slot" => self.slot = Some(value.into()),
57051            "spellcheck" => self.spellcheck = Some(value.into()),
57052            "style" => self.style = Some(value.into()),
57053            "tabindex" => self.tabindex = Some(value.into()),
57054            "title" => self.title = Some(value.into()),
57055            "translate" => self.translate = Some(value.into()),
57056            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
57057            #[cfg(feature = "alloc")]
57058            _ => {
57059                #[allow(clippy::useless_conversion)]
57060                self.extra.insert(name.into(), value.into());
57061            }
57062            #[cfg(not(feature = "alloc"))]
57063            _ => {}
57064        }
57065    }
57066}
57067/// The obsolete <strong>HTML Applet Element</strong> (<strong><code>&lt;applet&gt;</code></strong>) embeds a Java applet into the document; this element has been deprecated in favor of <a href="/en-US/docs/Web/HTML/Element/object"><code>&lt;object&gt;</code></a>.
57068///
57069/// Use of Java applets on the Web is deprecated; most browsers no longer support use of plug-ins, including the Java plug-in.
57070///
57071/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/applet>
57072#[deprecated]
57073#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
57074pub struct Applet<'life> {
57075    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
57076    ///   
57077    pub accesskey: core::option::Option<AttributeValue<'life>>,
57078    ///
57079    ///     <p>This attribute is used to position the applet on the page relative to content that might flow around it. The HTML 4.01 specification defines values of <code>bottom</code>, <code>left</code>, <code>middle</code>, <code>right</code>, and <code>top</code>, whereas Microsoft and Netscape also might support <code>absbottom</code>, <code>absmiddle</code>, <code>baseline</code>, <code>center</code>, and <code>texttop</code>.</p>
57080    ///   
57081    pub align: core::option::Option<AttributeValue<'life>>,
57082    ///
57083    ///     <p>This attribute causes a descriptive text alternate to be displayed on browsers that do not support Java. Page designers should also remember that content enclosed within the <code>&lt;applet&gt;</code> element may also be rendered as alternative text.</p>
57084    ///   
57085    pub alt: core::option::Option<AttributeValue<'life>>,
57086    ///
57087    ///     <p>This attribute refers to an archived or compressed version of the applet and its associated class files, which might help reduce download time.</p>
57088    ///   
57089    pub archive: core::option::Option<AttributeValue<'life>>,
57090    ///
57091    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
57092    ///     <ul>
57093    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
57094    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
57095    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
57096    ///       <li><code>characters</code>, all letters should default to uppercase</li>
57097    ///     </ul>
57098    ///   
57099    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
57100    ///
57101    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
57102    ///   
57103    pub autofocus: core::option::Option<AttributeValue<'life>>,
57104    ///
57105    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
57106    ///   
57107    pub class: core::option::Option<AttributeValue<'life>>,
57108    ///
57109    ///     <p>This attribute specifies the URL of the applet's class file to be loaded and executed. Applet filenames are identified by a .class filename extension. The URL specified by code might be relative to the <code>codebase</code> attribute.</p>
57110    ///   
57111    pub code: core::option::Option<AttributeValue<'life>>,
57112    ///
57113    ///     <p>This attribute gives the absolute or relative URL of the directory where applets' .class files referenced by the code attribute are stored.</p>
57114    ///   
57115    pub codebase: core::option::Option<AttributeValue<'life>>,
57116    ///
57117    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
57118    ///     <ul>
57119    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
57120    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
57121    ///     </ul>
57122    ///   
57123    pub contenteditable: core::option::Option<AttributeValue<'life>>,
57124    ///
57125    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
57126    ///   
57127    pub contextmenu: core::option::Option<AttributeValue<'life>>,
57128    ///
57129    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
57130    ///   
57131    #[cfg(feature = "alloc")]
57132    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
57133    ///
57134    ///     <p>This attribute, supported by Internet Explorer 4 and higher, specifies the column name from the data source object that supplies the bound data. This attribute might be used to specify the various <a href="/en-US/docs/Web/HTML/Element/param"><code>&lt;param&gt;</code></a> elements passed to the Java applet.</p>
57135    ///   
57136    pub datafld: core::option::Option<AttributeValue<'life>>,
57137    ///
57138    ///     <p>Like <code>datafld</code>, this attribute is used for data binding under Internet Explorer 4. It indicates the id of the data source object that supplies the data that is bound to the <a href="/en-US/docs/Web/HTML/Element/param"><code>&lt;param&gt;</code></a> elements associated with the applet.</p>
57139    ///   
57140    pub datasrc: core::option::Option<AttributeValue<'life>>,
57141    ///
57142    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
57143    ///     <ul>
57144    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
57145    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
57146    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
57147    ///     </ul>
57148    ///   
57149    pub dir: core::option::Option<AttributeValue<'life>>,
57150    ///
57151    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
57152    ///     <ul>
57153    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
57154    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
57155    ///     </ul>
57156    ///   
57157    pub draggable: core::option::Option<AttributeValue<'life>>,
57158    ///
57159    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
57160    ///   
57161    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
57162    ///
57163    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
57164    ///   
57165    pub exportparts: core::option::Option<AttributeValue<'life>>,
57166    /// /// Extra attributes of the element.
57167
57168    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
57169    #[cfg(feature = "alloc")]
57170    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
57171    ///
57172    ///     <p>This attribute specifies the height, in pixels, that the applet needs.</p>
57173    ///   
57174    pub height: core::option::Option<AttributeValue<'life>>,
57175    ///
57176    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
57177    ///   
57178    pub hidden: core::option::Option<AttributeValue<'life>>,
57179    ///
57180    ///     <p>This attribute specifies additional horizontal space, in pixels, to be reserved on either side of the applet.</p>
57181    ///   
57182    pub hspace: core::option::Option<AttributeValue<'life>>,
57183    ///
57184    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
57185    ///   
57186    pub id: core::option::Option<AttributeValue<'life>>,
57187    ///
57188    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
57189    ///   
57190    pub inert: core::option::Option<AttributeValue<'life>>,
57191    ///
57192    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
57193    ///   
57194    pub inputmode: core::option::Option<AttributeValue<'life>>,
57195    ///
57196    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
57197    ///   
57198    pub is: core::option::Option<AttributeValue<'life>>,
57199    ///
57200    ///     <p>The unique, global identifier of an item.</p>
57201    ///   
57202    pub itemid: core::option::Option<AttributeValue<'life>>,
57203    ///
57204    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
57205    ///   
57206    pub itemprop: core::option::Option<AttributeValue<'life>>,
57207    ///
57208    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
57209    ///   
57210    pub itemref: core::option::Option<AttributeValue<'life>>,
57211    ///
57212    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
57213    ///   
57214    pub itemscope: core::option::Option<AttributeValue<'life>>,
57215    ///
57216    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
57217    ///   
57218    pub itemtype: core::option::Option<AttributeValue<'life>>,
57219    ///
57220    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
57221    ///   
57222    pub lang: core::option::Option<AttributeValue<'life>>,
57223    ///
57224    ///     <p>In the Netscape implementation, this attribute allows access to an applet by programs in a scripting language embedded in the document.</p>
57225    ///   
57226    pub mayscript: core::option::Option<AttributeValue<'life>>,
57227    ///
57228    ///     <p>This attribute assigns a name to the applet so that it can be identified by other resources; particularly scripts.</p>
57229    ///   
57230    pub name: core::option::Option<AttributeValue<'life>>,
57231    ///
57232    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
57233    ///   
57234    pub nonce: core::option::Option<AttributeValue<'life>>,
57235    ///
57236    ///     <p>This attribute specifies the URL of a serialized representation of an applet.</p>
57237    ///   
57238    pub object: core::option::Option<AttributeValue<'life>>,
57239    ///
57240    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
57241    ///   
57242    pub part: core::option::Option<AttributeValue<'life>>,
57243    ///
57244    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
57245    ///   
57246    pub popover: core::option::Option<AttributeValue<'life>>,
57247    ///
57248    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
57249    ///   
57250    pub role: core::option::Option<AttributeValue<'life>>,
57251    ///
57252    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
57253    ///   
57254    pub slot: core::option::Option<AttributeValue<'life>>,
57255    ///
57256    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
57257    ///     <ul>
57258    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
57259    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
57260    ///     </ul>
57261    ///   
57262    pub spellcheck: core::option::Option<AttributeValue<'life>>,
57263    ///
57264    ///     <p>As defined for Internet Explorer 4 and higher, this attribute specifies a URL for an associated file for the applet. The meaning and use is unclear and not part of the HTML standard.</p>
57265    ///   
57266    pub src: core::option::Option<AttributeValue<'life>>,
57267    ///
57268    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
57269    ///   
57270    pub style: core::option::Option<AttributeValue<'life>>,
57271    ///
57272    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
57273    ///     <ul>
57274    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
57275    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
57276    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
57277    ///     </ul>
57278    ///   
57279    pub tabindex: core::option::Option<AttributeValue<'life>>,
57280    ///
57281    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
57282    ///   
57283    pub title: core::option::Option<AttributeValue<'life>>,
57284    ///
57285    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
57286    ///     <ul>
57287    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
57288    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
57289    ///     </ul>
57290    ///   
57291    pub translate: core::option::Option<AttributeValue<'life>>,
57292    ///
57293    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
57294    ///     <ul>
57295    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
57296    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
57297    ///     </ul>
57298    ///   
57299    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
57300    ///
57301    ///     <p>This attribute specifies additional vertical space, in pixels, to be reserved above and below the applet.</p>
57302    ///   
57303    pub vspace: core::option::Option<AttributeValue<'life>>,
57304    ///
57305    ///     <p>This attribute specifies in pixels the width that the applet needs.</p>
57306    ///   
57307    pub width: core::option::Option<AttributeValue<'life>>,
57308}
57309#[allow(deprecated)]
57310
57311impl<'life> Applet<'life> {
57312    /// Get the tag name of the element.
57313    /// This is the same as the name of the struct, in kebab-case.
57314    pub fn tag() -> &'static str {
57315        "applet"
57316    }
57317    /// Sets an attribute of the element.
57318    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
57319    /// If the `alloc` feature is disabled, this function will silently fail.
57320    ///
57321    /// # Note
57322    /// This only works when the attribute is lowercase.
57323    pub fn set_attr(
57324        &mut self,
57325        name: &'life str,
57326        value: impl core::convert::Into<AttributeValue<'life>>,
57327    ) {
57328        match name {
57329            "accesskey" => self.accesskey = Some(value.into()),
57330            "align" => self.align = Some(value.into()),
57331            "alt" => self.alt = Some(value.into()),
57332            "archive" => self.archive = Some(value.into()),
57333            "autocapitalize" => self.autocapitalize = Some(value.into()),
57334            "autofocus" => self.autofocus = Some(value.into()),
57335            "class" => self.class = Some(value.into()),
57336            "code" => self.code = Some(value.into()),
57337            "codebase" => self.codebase = Some(value.into()),
57338            "contenteditable" => self.contenteditable = Some(value.into()),
57339            "contextmenu" => self.contextmenu = Some(value.into()),
57340            "datafld" => self.datafld = Some(value.into()),
57341            "datasrc" => self.datasrc = Some(value.into()),
57342            "dir" => self.dir = Some(value.into()),
57343            "draggable" => self.draggable = Some(value.into()),
57344            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
57345            "exportparts" => self.exportparts = Some(value.into()),
57346            "height" => self.height = Some(value.into()),
57347            "hidden" => self.hidden = Some(value.into()),
57348            "hspace" => self.hspace = Some(value.into()),
57349            "id" => self.id = Some(value.into()),
57350            "inert" => self.inert = Some(value.into()),
57351            "inputmode" => self.inputmode = Some(value.into()),
57352            "is" => self.is = Some(value.into()),
57353            "itemid" => self.itemid = Some(value.into()),
57354            "itemprop" => self.itemprop = Some(value.into()),
57355            "itemref" => self.itemref = Some(value.into()),
57356            "itemscope" => self.itemscope = Some(value.into()),
57357            "itemtype" => self.itemtype = Some(value.into()),
57358            "lang" => self.lang = Some(value.into()),
57359            "mayscript" => self.mayscript = Some(value.into()),
57360            "name" => self.name = Some(value.into()),
57361            "nonce" => self.nonce = Some(value.into()),
57362            "object" => self.object = Some(value.into()),
57363            "part" => self.part = Some(value.into()),
57364            "popover" => self.popover = Some(value.into()),
57365            "role" => self.role = Some(value.into()),
57366            "slot" => self.slot = Some(value.into()),
57367            "spellcheck" => self.spellcheck = Some(value.into()),
57368            "src" => self.src = Some(value.into()),
57369            "style" => self.style = Some(value.into()),
57370            "tabindex" => self.tabindex = Some(value.into()),
57371            "title" => self.title = Some(value.into()),
57372            "translate" => self.translate = Some(value.into()),
57373            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
57374            "vspace" => self.vspace = Some(value.into()),
57375            "width" => self.width = Some(value.into()),
57376            #[cfg(feature = "alloc")]
57377            _ => {
57378                #[allow(clippy::useless_conversion)]
57379                self.extra.insert(name.into(), value.into());
57380            }
57381            #[cfg(not(feature = "alloc"))]
57382            _ => {}
57383        }
57384    }
57385}
57386/// The obsolete <strong>HTML Applet Element</strong> (<strong><code>&lt;applet&gt;</code></strong>) embeds a Java applet into the document; this element has been deprecated in favor of <a href="/en-US/docs/Web/HTML/Element/object"><code>&lt;object&gt;</code></a>.
57387///
57388/// Use of Java applets on the Web is deprecated; most browsers no longer support use of plug-ins, including the Java plug-in.
57389///
57390/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/applet>
57391#[deprecated]
57392#[cfg(feature = "alloc")]
57393#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
57394pub struct AppletOwned {
57395    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
57396    ///   
57397    pub accesskey: core::option::Option<AttributeValueOwned>,
57398    ///
57399    ///     <p>This attribute is used to position the applet on the page relative to content that might flow around it. The HTML 4.01 specification defines values of <code>bottom</code>, <code>left</code>, <code>middle</code>, <code>right</code>, and <code>top</code>, whereas Microsoft and Netscape also might support <code>absbottom</code>, <code>absmiddle</code>, <code>baseline</code>, <code>center</code>, and <code>texttop</code>.</p>
57400    ///   
57401    pub align: core::option::Option<AttributeValueOwned>,
57402    ///
57403    ///     <p>This attribute causes a descriptive text alternate to be displayed on browsers that do not support Java. Page designers should also remember that content enclosed within the <code>&lt;applet&gt;</code> element may also be rendered as alternative text.</p>
57404    ///   
57405    pub alt: core::option::Option<AttributeValueOwned>,
57406    ///
57407    ///     <p>This attribute refers to an archived or compressed version of the applet and its associated class files, which might help reduce download time.</p>
57408    ///   
57409    pub archive: core::option::Option<AttributeValueOwned>,
57410    ///
57411    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
57412    ///     <ul>
57413    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
57414    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
57415    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
57416    ///       <li><code>characters</code>, all letters should default to uppercase</li>
57417    ///     </ul>
57418    ///   
57419    pub autocapitalize: core::option::Option<AttributeValueOwned>,
57420    ///
57421    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
57422    ///   
57423    pub autofocus: core::option::Option<AttributeValueOwned>,
57424    ///
57425    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
57426    ///   
57427    pub class: core::option::Option<AttributeValueOwned>,
57428    ///
57429    ///     <p>This attribute specifies the URL of the applet's class file to be loaded and executed. Applet filenames are identified by a .class filename extension. The URL specified by code might be relative to the <code>codebase</code> attribute.</p>
57430    ///   
57431    pub code: core::option::Option<AttributeValueOwned>,
57432    ///
57433    ///     <p>This attribute gives the absolute or relative URL of the directory where applets' .class files referenced by the code attribute are stored.</p>
57434    ///   
57435    pub codebase: core::option::Option<AttributeValueOwned>,
57436    ///
57437    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
57438    ///     <ul>
57439    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
57440    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
57441    ///     </ul>
57442    ///   
57443    pub contenteditable: core::option::Option<AttributeValueOwned>,
57444    ///
57445    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
57446    ///   
57447    pub contextmenu: core::option::Option<AttributeValueOwned>,
57448    ///
57449    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
57450    ///   
57451    #[cfg(feature = "alloc")]
57452    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
57453    ///
57454    ///     <p>This attribute, supported by Internet Explorer 4 and higher, specifies the column name from the data source object that supplies the bound data. This attribute might be used to specify the various <a href="/en-US/docs/Web/HTML/Element/param"><code>&lt;param&gt;</code></a> elements passed to the Java applet.</p>
57455    ///   
57456    pub datafld: core::option::Option<AttributeValueOwned>,
57457    ///
57458    ///     <p>Like <code>datafld</code>, this attribute is used for data binding under Internet Explorer 4. It indicates the id of the data source object that supplies the data that is bound to the <a href="/en-US/docs/Web/HTML/Element/param"><code>&lt;param&gt;</code></a> elements associated with the applet.</p>
57459    ///   
57460    pub datasrc: core::option::Option<AttributeValueOwned>,
57461    ///
57462    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
57463    ///     <ul>
57464    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
57465    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
57466    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
57467    ///     </ul>
57468    ///   
57469    pub dir: core::option::Option<AttributeValueOwned>,
57470    ///
57471    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
57472    ///     <ul>
57473    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
57474    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
57475    ///     </ul>
57476    ///   
57477    pub draggable: core::option::Option<AttributeValueOwned>,
57478    ///
57479    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
57480    ///   
57481    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
57482    ///
57483    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
57484    ///   
57485    pub exportparts: core::option::Option<AttributeValueOwned>,
57486    /// /// Extra attributes of the element.
57487
57488    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
57489    #[cfg(feature = "alloc")]
57490    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
57491    ///
57492    ///     <p>This attribute specifies the height, in pixels, that the applet needs.</p>
57493    ///   
57494    pub height: core::option::Option<AttributeValueOwned>,
57495    ///
57496    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
57497    ///   
57498    pub hidden: core::option::Option<AttributeValueOwned>,
57499    ///
57500    ///     <p>This attribute specifies additional horizontal space, in pixels, to be reserved on either side of the applet.</p>
57501    ///   
57502    pub hspace: core::option::Option<AttributeValueOwned>,
57503    ///
57504    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
57505    ///   
57506    pub id: core::option::Option<AttributeValueOwned>,
57507    ///
57508    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
57509    ///   
57510    pub inert: core::option::Option<AttributeValueOwned>,
57511    ///
57512    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
57513    ///   
57514    pub inputmode: core::option::Option<AttributeValueOwned>,
57515    ///
57516    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
57517    ///   
57518    pub is: core::option::Option<AttributeValueOwned>,
57519    ///
57520    ///     <p>The unique, global identifier of an item.</p>
57521    ///   
57522    pub itemid: core::option::Option<AttributeValueOwned>,
57523    ///
57524    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
57525    ///   
57526    pub itemprop: core::option::Option<AttributeValueOwned>,
57527    ///
57528    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
57529    ///   
57530    pub itemref: core::option::Option<AttributeValueOwned>,
57531    ///
57532    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
57533    ///   
57534    pub itemscope: core::option::Option<AttributeValueOwned>,
57535    ///
57536    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
57537    ///   
57538    pub itemtype: core::option::Option<AttributeValueOwned>,
57539    ///
57540    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
57541    ///   
57542    pub lang: core::option::Option<AttributeValueOwned>,
57543    ///
57544    ///     <p>In the Netscape implementation, this attribute allows access to an applet by programs in a scripting language embedded in the document.</p>
57545    ///   
57546    pub mayscript: core::option::Option<AttributeValueOwned>,
57547    ///
57548    ///     <p>This attribute assigns a name to the applet so that it can be identified by other resources; particularly scripts.</p>
57549    ///   
57550    pub name: core::option::Option<AttributeValueOwned>,
57551    ///
57552    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
57553    ///   
57554    pub nonce: core::option::Option<AttributeValueOwned>,
57555    ///
57556    ///     <p>This attribute specifies the URL of a serialized representation of an applet.</p>
57557    ///   
57558    pub object: core::option::Option<AttributeValueOwned>,
57559    ///
57560    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
57561    ///   
57562    pub part: core::option::Option<AttributeValueOwned>,
57563    ///
57564    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
57565    ///   
57566    pub popover: core::option::Option<AttributeValueOwned>,
57567    ///
57568    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
57569    ///   
57570    pub role: core::option::Option<AttributeValueOwned>,
57571    ///
57572    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
57573    ///   
57574    pub slot: core::option::Option<AttributeValueOwned>,
57575    ///
57576    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
57577    ///     <ul>
57578    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
57579    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
57580    ///     </ul>
57581    ///   
57582    pub spellcheck: core::option::Option<AttributeValueOwned>,
57583    ///
57584    ///     <p>As defined for Internet Explorer 4 and higher, this attribute specifies a URL for an associated file for the applet. The meaning and use is unclear and not part of the HTML standard.</p>
57585    ///   
57586    pub src: core::option::Option<AttributeValueOwned>,
57587    ///
57588    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
57589    ///   
57590    pub style: core::option::Option<AttributeValueOwned>,
57591    ///
57592    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
57593    ///     <ul>
57594    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
57595    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
57596    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
57597    ///     </ul>
57598    ///   
57599    pub tabindex: core::option::Option<AttributeValueOwned>,
57600    ///
57601    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
57602    ///   
57603    pub title: core::option::Option<AttributeValueOwned>,
57604    ///
57605    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
57606    ///     <ul>
57607    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
57608    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
57609    ///     </ul>
57610    ///   
57611    pub translate: core::option::Option<AttributeValueOwned>,
57612    ///
57613    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
57614    ///     <ul>
57615    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
57616    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
57617    ///     </ul>
57618    ///   
57619    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
57620    ///
57621    ///     <p>This attribute specifies additional vertical space, in pixels, to be reserved above and below the applet.</p>
57622    ///   
57623    pub vspace: core::option::Option<AttributeValueOwned>,
57624    ///
57625    ///     <p>This attribute specifies in pixels the width that the applet needs.</p>
57626    ///   
57627    pub width: core::option::Option<AttributeValueOwned>,
57628}
57629#[allow(deprecated)]
57630#[cfg(feature = "alloc")]
57631impl AppletOwned {
57632    /// Get the tag name of the element.
57633    /// This is the same as the name of the struct, in kebab-case.
57634    pub fn tag() -> &'static str {
57635        "applet"
57636    }
57637    /// Sets an attribute of the element.
57638    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
57639    /// If the `alloc` feature is disabled, this function will silently fail.
57640    ///
57641    /// # Note
57642    /// This only works when the attribute is lowercase.
57643    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
57644        match name {
57645            "accesskey" => self.accesskey = Some(value.into()),
57646            "align" => self.align = Some(value.into()),
57647            "alt" => self.alt = Some(value.into()),
57648            "archive" => self.archive = Some(value.into()),
57649            "autocapitalize" => self.autocapitalize = Some(value.into()),
57650            "autofocus" => self.autofocus = Some(value.into()),
57651            "class" => self.class = Some(value.into()),
57652            "code" => self.code = Some(value.into()),
57653            "codebase" => self.codebase = Some(value.into()),
57654            "contenteditable" => self.contenteditable = Some(value.into()),
57655            "contextmenu" => self.contextmenu = Some(value.into()),
57656            "datafld" => self.datafld = Some(value.into()),
57657            "datasrc" => self.datasrc = Some(value.into()),
57658            "dir" => self.dir = Some(value.into()),
57659            "draggable" => self.draggable = Some(value.into()),
57660            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
57661            "exportparts" => self.exportparts = Some(value.into()),
57662            "height" => self.height = Some(value.into()),
57663            "hidden" => self.hidden = Some(value.into()),
57664            "hspace" => self.hspace = Some(value.into()),
57665            "id" => self.id = Some(value.into()),
57666            "inert" => self.inert = Some(value.into()),
57667            "inputmode" => self.inputmode = Some(value.into()),
57668            "is" => self.is = Some(value.into()),
57669            "itemid" => self.itemid = Some(value.into()),
57670            "itemprop" => self.itemprop = Some(value.into()),
57671            "itemref" => self.itemref = Some(value.into()),
57672            "itemscope" => self.itemscope = Some(value.into()),
57673            "itemtype" => self.itemtype = Some(value.into()),
57674            "lang" => self.lang = Some(value.into()),
57675            "mayscript" => self.mayscript = Some(value.into()),
57676            "name" => self.name = Some(value.into()),
57677            "nonce" => self.nonce = Some(value.into()),
57678            "object" => self.object = Some(value.into()),
57679            "part" => self.part = Some(value.into()),
57680            "popover" => self.popover = Some(value.into()),
57681            "role" => self.role = Some(value.into()),
57682            "slot" => self.slot = Some(value.into()),
57683            "spellcheck" => self.spellcheck = Some(value.into()),
57684            "src" => self.src = Some(value.into()),
57685            "style" => self.style = Some(value.into()),
57686            "tabindex" => self.tabindex = Some(value.into()),
57687            "title" => self.title = Some(value.into()),
57688            "translate" => self.translate = Some(value.into()),
57689            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
57690            "vspace" => self.vspace = Some(value.into()),
57691            "width" => self.width = Some(value.into()),
57692            #[cfg(feature = "alloc")]
57693            _ => {
57694                #[allow(clippy::useless_conversion)]
57695                self.extra.insert(name.into(), value.into());
57696            }
57697            #[cfg(not(feature = "alloc"))]
57698            _ => {}
57699        }
57700    }
57701}
57702/// The <strong><code>&lt;bgsound&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element is deprecated. It sets up a sound file to play in the background while the page is used; use <a href="/en-US/docs/Web/HTML/Element/audio"><code>&lt;audio&gt;</code></a> instead.
57703///
57704/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/bgsound>
57705#[deprecated]
57706#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
57707pub struct Bgsound<'life> {
57708    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
57709    ///   
57710    pub accesskey: core::option::Option<AttributeValue<'life>>,
57711    ///
57712    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
57713    ///     <ul>
57714    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
57715    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
57716    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
57717    ///       <li><code>characters</code>, all letters should default to uppercase</li>
57718    ///     </ul>
57719    ///   
57720    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
57721    ///
57722    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
57723    ///   
57724    pub autofocus: core::option::Option<AttributeValue<'life>>,
57725    ///
57726    ///     <p>This attribute defines a number between -10,000 and +10,000 that determines how the volume will be divided between the speakers.</p>
57727    ///   
57728    pub balance: core::option::Option<AttributeValue<'life>>,
57729    ///
57730    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
57731    ///   
57732    pub class: core::option::Option<AttributeValue<'life>>,
57733    ///
57734    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
57735    ///     <ul>
57736    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
57737    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
57738    ///     </ul>
57739    ///   
57740    pub contenteditable: core::option::Option<AttributeValue<'life>>,
57741    ///
57742    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
57743    ///   
57744    pub contextmenu: core::option::Option<AttributeValue<'life>>,
57745    ///
57746    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
57747    ///   
57748    #[cfg(feature = "alloc")]
57749    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
57750    ///
57751    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
57752    ///     <ul>
57753    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
57754    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
57755    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
57756    ///     </ul>
57757    ///   
57758    pub dir: core::option::Option<AttributeValue<'life>>,
57759    ///
57760    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
57761    ///     <ul>
57762    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
57763    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
57764    ///     </ul>
57765    ///   
57766    pub draggable: core::option::Option<AttributeValue<'life>>,
57767    ///
57768    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
57769    ///   
57770    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
57771    ///
57772    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
57773    ///   
57774    pub exportparts: core::option::Option<AttributeValue<'life>>,
57775    /// /// Extra attributes of the element.
57776
57777    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
57778    #[cfg(feature = "alloc")]
57779    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
57780    ///
57781    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
57782    ///   
57783    pub hidden: core::option::Option<AttributeValue<'life>>,
57784    ///
57785    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
57786    ///   
57787    pub id: core::option::Option<AttributeValue<'life>>,
57788    ///
57789    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
57790    ///   
57791    pub inert: core::option::Option<AttributeValue<'life>>,
57792    ///
57793    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
57794    ///   
57795    pub inputmode: core::option::Option<AttributeValue<'life>>,
57796    ///
57797    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
57798    ///   
57799    pub is: core::option::Option<AttributeValue<'life>>,
57800    ///
57801    ///     <p>The unique, global identifier of an item.</p>
57802    ///   
57803    pub itemid: core::option::Option<AttributeValue<'life>>,
57804    ///
57805    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
57806    ///   
57807    pub itemprop: core::option::Option<AttributeValue<'life>>,
57808    ///
57809    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
57810    ///   
57811    pub itemref: core::option::Option<AttributeValue<'life>>,
57812    ///
57813    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
57814    ///   
57815    pub itemscope: core::option::Option<AttributeValue<'life>>,
57816    ///
57817    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
57818    ///   
57819    pub itemtype: core::option::Option<AttributeValue<'life>>,
57820    ///
57821    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
57822    ///   
57823    pub lang: core::option::Option<AttributeValue<'life>>,
57824    ///
57825    ///     <p>This attribute indicates the number of times a sound is to be played and either has a numeric value or the keyword infinite.</p>
57826    ///   
57827    pub loop_: core::option::Option<AttributeValue<'life>>,
57828    ///
57829    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
57830    ///   
57831    pub nonce: core::option::Option<AttributeValue<'life>>,
57832    ///
57833    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
57834    ///   
57835    pub part: core::option::Option<AttributeValue<'life>>,
57836    ///
57837    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
57838    ///   
57839    pub popover: core::option::Option<AttributeValue<'life>>,
57840    ///
57841    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
57842    ///   
57843    pub role: core::option::Option<AttributeValue<'life>>,
57844    ///
57845    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
57846    ///   
57847    pub slot: core::option::Option<AttributeValue<'life>>,
57848    ///
57849    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
57850    ///     <ul>
57851    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
57852    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
57853    ///     </ul>
57854    ///   
57855    pub spellcheck: core::option::Option<AttributeValue<'life>>,
57856    ///
57857    ///     <p>This attribute specifies the URL of the sound file to be played, which must be one of the following types: .wav, .au, or .mid.</p>
57858    ///   
57859    pub src: core::option::Option<AttributeValue<'life>>,
57860    ///
57861    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
57862    ///   
57863    pub style: core::option::Option<AttributeValue<'life>>,
57864    ///
57865    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
57866    ///     <ul>
57867    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
57868    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
57869    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
57870    ///     </ul>
57871    ///   
57872    pub tabindex: core::option::Option<AttributeValue<'life>>,
57873    ///
57874    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
57875    ///   
57876    pub title: core::option::Option<AttributeValue<'life>>,
57877    ///
57878    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
57879    ///     <ul>
57880    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
57881    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
57882    ///     </ul>
57883    ///   
57884    pub translate: core::option::Option<AttributeValue<'life>>,
57885    ///
57886    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
57887    ///     <ul>
57888    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
57889    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
57890    ///     </ul>
57891    ///   
57892    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
57893    ///
57894    ///     <p>This attribute defines a number between -10,000 and 0 that determines the loudness of a page's background sound.</p>
57895    ///   
57896    pub volume: core::option::Option<AttributeValue<'life>>,
57897}
57898#[allow(deprecated)]
57899
57900impl<'life> Bgsound<'life> {
57901    /// Get the tag name of the element.
57902    /// This is the same as the name of the struct, in kebab-case.
57903    pub fn tag() -> &'static str {
57904        "bgsound"
57905    }
57906    /// Sets an attribute of the element.
57907    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
57908    /// If the `alloc` feature is disabled, this function will silently fail.
57909    ///
57910    /// # Note
57911    /// This only works when the attribute is lowercase.
57912    pub fn set_attr(
57913        &mut self,
57914        name: &'life str,
57915        value: impl core::convert::Into<AttributeValue<'life>>,
57916    ) {
57917        match name {
57918            "accesskey" => self.accesskey = Some(value.into()),
57919            "autocapitalize" => self.autocapitalize = Some(value.into()),
57920            "autofocus" => self.autofocus = Some(value.into()),
57921            "balance" => self.balance = Some(value.into()),
57922            "class" => self.class = Some(value.into()),
57923            "contenteditable" => self.contenteditable = Some(value.into()),
57924            "contextmenu" => self.contextmenu = Some(value.into()),
57925            "dir" => self.dir = Some(value.into()),
57926            "draggable" => self.draggable = Some(value.into()),
57927            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
57928            "exportparts" => self.exportparts = Some(value.into()),
57929            "hidden" => self.hidden = Some(value.into()),
57930            "id" => self.id = Some(value.into()),
57931            "inert" => self.inert = Some(value.into()),
57932            "inputmode" => self.inputmode = Some(value.into()),
57933            "is" => self.is = Some(value.into()),
57934            "itemid" => self.itemid = Some(value.into()),
57935            "itemprop" => self.itemprop = Some(value.into()),
57936            "itemref" => self.itemref = Some(value.into()),
57937            "itemscope" => self.itemscope = Some(value.into()),
57938            "itemtype" => self.itemtype = Some(value.into()),
57939            "lang" => self.lang = Some(value.into()),
57940            "loop_" => self.loop_ = Some(value.into()),
57941            "nonce" => self.nonce = Some(value.into()),
57942            "part" => self.part = Some(value.into()),
57943            "popover" => self.popover = Some(value.into()),
57944            "role" => self.role = Some(value.into()),
57945            "slot" => self.slot = Some(value.into()),
57946            "spellcheck" => self.spellcheck = Some(value.into()),
57947            "src" => self.src = Some(value.into()),
57948            "style" => self.style = Some(value.into()),
57949            "tabindex" => self.tabindex = Some(value.into()),
57950            "title" => self.title = Some(value.into()),
57951            "translate" => self.translate = Some(value.into()),
57952            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
57953            "volume" => self.volume = Some(value.into()),
57954            #[cfg(feature = "alloc")]
57955            _ => {
57956                #[allow(clippy::useless_conversion)]
57957                self.extra.insert(name.into(), value.into());
57958            }
57959            #[cfg(not(feature = "alloc"))]
57960            _ => {}
57961        }
57962    }
57963}
57964/// The <strong><code>&lt;bgsound&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element is deprecated. It sets up a sound file to play in the background while the page is used; use <a href="/en-US/docs/Web/HTML/Element/audio"><code>&lt;audio&gt;</code></a> instead.
57965///
57966/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/bgsound>
57967#[deprecated]
57968#[cfg(feature = "alloc")]
57969#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
57970pub struct BgsoundOwned {
57971    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
57972    ///   
57973    pub accesskey: core::option::Option<AttributeValueOwned>,
57974    ///
57975    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
57976    ///     <ul>
57977    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
57978    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
57979    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
57980    ///       <li><code>characters</code>, all letters should default to uppercase</li>
57981    ///     </ul>
57982    ///   
57983    pub autocapitalize: core::option::Option<AttributeValueOwned>,
57984    ///
57985    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
57986    ///   
57987    pub autofocus: core::option::Option<AttributeValueOwned>,
57988    ///
57989    ///     <p>This attribute defines a number between -10,000 and +10,000 that determines how the volume will be divided between the speakers.</p>
57990    ///   
57991    pub balance: core::option::Option<AttributeValueOwned>,
57992    ///
57993    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
57994    ///   
57995    pub class: core::option::Option<AttributeValueOwned>,
57996    ///
57997    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
57998    ///     <ul>
57999    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
58000    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
58001    ///     </ul>
58002    ///   
58003    pub contenteditable: core::option::Option<AttributeValueOwned>,
58004    ///
58005    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
58006    ///   
58007    pub contextmenu: core::option::Option<AttributeValueOwned>,
58008    ///
58009    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
58010    ///   
58011    #[cfg(feature = "alloc")]
58012    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
58013    ///
58014    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
58015    ///     <ul>
58016    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
58017    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
58018    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
58019    ///     </ul>
58020    ///   
58021    pub dir: core::option::Option<AttributeValueOwned>,
58022    ///
58023    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
58024    ///     <ul>
58025    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
58026    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
58027    ///     </ul>
58028    ///   
58029    pub draggable: core::option::Option<AttributeValueOwned>,
58030    ///
58031    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
58032    ///   
58033    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
58034    ///
58035    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
58036    ///   
58037    pub exportparts: core::option::Option<AttributeValueOwned>,
58038    /// /// Extra attributes of the element.
58039
58040    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
58041    #[cfg(feature = "alloc")]
58042    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
58043    ///
58044    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
58045    ///   
58046    pub hidden: core::option::Option<AttributeValueOwned>,
58047    ///
58048    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
58049    ///   
58050    pub id: core::option::Option<AttributeValueOwned>,
58051    ///
58052    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
58053    ///   
58054    pub inert: core::option::Option<AttributeValueOwned>,
58055    ///
58056    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
58057    ///   
58058    pub inputmode: core::option::Option<AttributeValueOwned>,
58059    ///
58060    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
58061    ///   
58062    pub is: core::option::Option<AttributeValueOwned>,
58063    ///
58064    ///     <p>The unique, global identifier of an item.</p>
58065    ///   
58066    pub itemid: core::option::Option<AttributeValueOwned>,
58067    ///
58068    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
58069    ///   
58070    pub itemprop: core::option::Option<AttributeValueOwned>,
58071    ///
58072    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
58073    ///   
58074    pub itemref: core::option::Option<AttributeValueOwned>,
58075    ///
58076    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
58077    ///   
58078    pub itemscope: core::option::Option<AttributeValueOwned>,
58079    ///
58080    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
58081    ///   
58082    pub itemtype: core::option::Option<AttributeValueOwned>,
58083    ///
58084    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
58085    ///   
58086    pub lang: core::option::Option<AttributeValueOwned>,
58087    ///
58088    ///     <p>This attribute indicates the number of times a sound is to be played and either has a numeric value or the keyword infinite.</p>
58089    ///   
58090    pub loop_: core::option::Option<AttributeValueOwned>,
58091    ///
58092    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
58093    ///   
58094    pub nonce: core::option::Option<AttributeValueOwned>,
58095    ///
58096    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
58097    ///   
58098    pub part: core::option::Option<AttributeValueOwned>,
58099    ///
58100    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
58101    ///   
58102    pub popover: core::option::Option<AttributeValueOwned>,
58103    ///
58104    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
58105    ///   
58106    pub role: core::option::Option<AttributeValueOwned>,
58107    ///
58108    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
58109    ///   
58110    pub slot: core::option::Option<AttributeValueOwned>,
58111    ///
58112    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
58113    ///     <ul>
58114    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
58115    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
58116    ///     </ul>
58117    ///   
58118    pub spellcheck: core::option::Option<AttributeValueOwned>,
58119    ///
58120    ///     <p>This attribute specifies the URL of the sound file to be played, which must be one of the following types: .wav, .au, or .mid.</p>
58121    ///   
58122    pub src: core::option::Option<AttributeValueOwned>,
58123    ///
58124    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
58125    ///   
58126    pub style: core::option::Option<AttributeValueOwned>,
58127    ///
58128    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
58129    ///     <ul>
58130    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
58131    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
58132    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
58133    ///     </ul>
58134    ///   
58135    pub tabindex: core::option::Option<AttributeValueOwned>,
58136    ///
58137    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
58138    ///   
58139    pub title: core::option::Option<AttributeValueOwned>,
58140    ///
58141    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
58142    ///     <ul>
58143    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
58144    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
58145    ///     </ul>
58146    ///   
58147    pub translate: core::option::Option<AttributeValueOwned>,
58148    ///
58149    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
58150    ///     <ul>
58151    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
58152    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
58153    ///     </ul>
58154    ///   
58155    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
58156    ///
58157    ///     <p>This attribute defines a number between -10,000 and 0 that determines the loudness of a page's background sound.</p>
58158    ///   
58159    pub volume: core::option::Option<AttributeValueOwned>,
58160}
58161#[allow(deprecated)]
58162#[cfg(feature = "alloc")]
58163impl BgsoundOwned {
58164    /// Get the tag name of the element.
58165    /// This is the same as the name of the struct, in kebab-case.
58166    pub fn tag() -> &'static str {
58167        "bgsound"
58168    }
58169    /// Sets an attribute of the element.
58170    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
58171    /// If the `alloc` feature is disabled, this function will silently fail.
58172    ///
58173    /// # Note
58174    /// This only works when the attribute is lowercase.
58175    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
58176        match name {
58177            "accesskey" => self.accesskey = Some(value.into()),
58178            "autocapitalize" => self.autocapitalize = Some(value.into()),
58179            "autofocus" => self.autofocus = Some(value.into()),
58180            "balance" => self.balance = Some(value.into()),
58181            "class" => self.class = Some(value.into()),
58182            "contenteditable" => self.contenteditable = Some(value.into()),
58183            "contextmenu" => self.contextmenu = Some(value.into()),
58184            "dir" => self.dir = Some(value.into()),
58185            "draggable" => self.draggable = Some(value.into()),
58186            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
58187            "exportparts" => self.exportparts = Some(value.into()),
58188            "hidden" => self.hidden = Some(value.into()),
58189            "id" => self.id = Some(value.into()),
58190            "inert" => self.inert = Some(value.into()),
58191            "inputmode" => self.inputmode = Some(value.into()),
58192            "is" => self.is = Some(value.into()),
58193            "itemid" => self.itemid = Some(value.into()),
58194            "itemprop" => self.itemprop = Some(value.into()),
58195            "itemref" => self.itemref = Some(value.into()),
58196            "itemscope" => self.itemscope = Some(value.into()),
58197            "itemtype" => self.itemtype = Some(value.into()),
58198            "lang" => self.lang = Some(value.into()),
58199            "loop_" => self.loop_ = Some(value.into()),
58200            "nonce" => self.nonce = Some(value.into()),
58201            "part" => self.part = Some(value.into()),
58202            "popover" => self.popover = Some(value.into()),
58203            "role" => self.role = Some(value.into()),
58204            "slot" => self.slot = Some(value.into()),
58205            "spellcheck" => self.spellcheck = Some(value.into()),
58206            "src" => self.src = Some(value.into()),
58207            "style" => self.style = Some(value.into()),
58208            "tabindex" => self.tabindex = Some(value.into()),
58209            "title" => self.title = Some(value.into()),
58210            "translate" => self.translate = Some(value.into()),
58211            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
58212            "volume" => self.volume = Some(value.into()),
58213            #[cfg(feature = "alloc")]
58214            _ => {
58215                #[allow(clippy::useless_conversion)]
58216                self.extra.insert(name.into(), value.into());
58217            }
58218            #[cfg(not(feature = "alloc"))]
58219            _ => {}
58220        }
58221    }
58222}
58223/// The <strong><code>&lt;big&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> deprecated element renders the enclosed text at a font size one level larger than the surrounding text (<code>medium</code> becomes <code>large</code>, for example). The size is capped at the browser's maximum permitted font size.
58224///
58225/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/big>
58226#[deprecated]
58227#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
58228pub struct Big<'life> {
58229    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
58230    ///   
58231    pub accesskey: core::option::Option<AttributeValue<'life>>,
58232    ///
58233    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
58234    ///     <ul>
58235    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
58236    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
58237    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
58238    ///       <li><code>characters</code>, all letters should default to uppercase</li>
58239    ///     </ul>
58240    ///   
58241    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
58242    ///
58243    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
58244    ///   
58245    pub autofocus: core::option::Option<AttributeValue<'life>>,
58246    ///
58247    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
58248    ///   
58249    pub class: core::option::Option<AttributeValue<'life>>,
58250    ///
58251    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
58252    ///     <ul>
58253    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
58254    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
58255    ///     </ul>
58256    ///   
58257    pub contenteditable: core::option::Option<AttributeValue<'life>>,
58258    ///
58259    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
58260    ///   
58261    pub contextmenu: core::option::Option<AttributeValue<'life>>,
58262    ///
58263    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
58264    ///   
58265    #[cfg(feature = "alloc")]
58266    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
58267    ///
58268    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
58269    ///     <ul>
58270    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
58271    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
58272    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
58273    ///     </ul>
58274    ///   
58275    pub dir: core::option::Option<AttributeValue<'life>>,
58276    ///
58277    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
58278    ///     <ul>
58279    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
58280    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
58281    ///     </ul>
58282    ///   
58283    pub draggable: core::option::Option<AttributeValue<'life>>,
58284    ///
58285    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
58286    ///   
58287    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
58288    ///
58289    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
58290    ///   
58291    pub exportparts: core::option::Option<AttributeValue<'life>>,
58292    /// /// Extra attributes of the element.
58293
58294    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
58295    #[cfg(feature = "alloc")]
58296    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
58297    ///
58298    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
58299    ///   
58300    pub hidden: core::option::Option<AttributeValue<'life>>,
58301    ///
58302    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
58303    ///   
58304    pub id: core::option::Option<AttributeValue<'life>>,
58305    ///
58306    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
58307    ///   
58308    pub inert: core::option::Option<AttributeValue<'life>>,
58309    ///
58310    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
58311    ///   
58312    pub inputmode: core::option::Option<AttributeValue<'life>>,
58313    ///
58314    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
58315    ///   
58316    pub is: core::option::Option<AttributeValue<'life>>,
58317    ///
58318    ///     <p>The unique, global identifier of an item.</p>
58319    ///   
58320    pub itemid: core::option::Option<AttributeValue<'life>>,
58321    ///
58322    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
58323    ///   
58324    pub itemprop: core::option::Option<AttributeValue<'life>>,
58325    ///
58326    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
58327    ///   
58328    pub itemref: core::option::Option<AttributeValue<'life>>,
58329    ///
58330    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
58331    ///   
58332    pub itemscope: core::option::Option<AttributeValue<'life>>,
58333    ///
58334    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
58335    ///   
58336    pub itemtype: core::option::Option<AttributeValue<'life>>,
58337    ///
58338    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
58339    ///   
58340    pub lang: core::option::Option<AttributeValue<'life>>,
58341    ///
58342    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
58343    ///   
58344    pub nonce: core::option::Option<AttributeValue<'life>>,
58345    ///
58346    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
58347    ///   
58348    pub part: core::option::Option<AttributeValue<'life>>,
58349    ///
58350    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
58351    ///   
58352    pub popover: core::option::Option<AttributeValue<'life>>,
58353    ///
58354    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
58355    ///   
58356    pub role: core::option::Option<AttributeValue<'life>>,
58357    ///
58358    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
58359    ///   
58360    pub slot: core::option::Option<AttributeValue<'life>>,
58361    ///
58362    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
58363    ///     <ul>
58364    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
58365    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
58366    ///     </ul>
58367    ///   
58368    pub spellcheck: core::option::Option<AttributeValue<'life>>,
58369    ///
58370    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
58371    ///   
58372    pub style: core::option::Option<AttributeValue<'life>>,
58373    ///
58374    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
58375    ///     <ul>
58376    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
58377    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
58378    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
58379    ///     </ul>
58380    ///   
58381    pub tabindex: core::option::Option<AttributeValue<'life>>,
58382    ///
58383    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
58384    ///   
58385    pub title: core::option::Option<AttributeValue<'life>>,
58386    ///
58387    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
58388    ///     <ul>
58389    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
58390    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
58391    ///     </ul>
58392    ///   
58393    pub translate: core::option::Option<AttributeValue<'life>>,
58394    ///
58395    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
58396    ///     <ul>
58397    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
58398    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
58399    ///     </ul>
58400    ///   
58401    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
58402}
58403#[allow(deprecated)]
58404
58405impl<'life> Big<'life> {
58406    /// Get the tag name of the element.
58407    /// This is the same as the name of the struct, in kebab-case.
58408    pub fn tag() -> &'static str {
58409        "big"
58410    }
58411    /// Sets an attribute of the element.
58412    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
58413    /// If the `alloc` feature is disabled, this function will silently fail.
58414    ///
58415    /// # Note
58416    /// This only works when the attribute is lowercase.
58417    pub fn set_attr(
58418        &mut self,
58419        name: &'life str,
58420        value: impl core::convert::Into<AttributeValue<'life>>,
58421    ) {
58422        match name {
58423            "accesskey" => self.accesskey = Some(value.into()),
58424            "autocapitalize" => self.autocapitalize = Some(value.into()),
58425            "autofocus" => self.autofocus = Some(value.into()),
58426            "class" => self.class = Some(value.into()),
58427            "contenteditable" => self.contenteditable = Some(value.into()),
58428            "contextmenu" => self.contextmenu = Some(value.into()),
58429            "dir" => self.dir = Some(value.into()),
58430            "draggable" => self.draggable = Some(value.into()),
58431            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
58432            "exportparts" => self.exportparts = Some(value.into()),
58433            "hidden" => self.hidden = Some(value.into()),
58434            "id" => self.id = Some(value.into()),
58435            "inert" => self.inert = Some(value.into()),
58436            "inputmode" => self.inputmode = Some(value.into()),
58437            "is" => self.is = Some(value.into()),
58438            "itemid" => self.itemid = Some(value.into()),
58439            "itemprop" => self.itemprop = Some(value.into()),
58440            "itemref" => self.itemref = Some(value.into()),
58441            "itemscope" => self.itemscope = Some(value.into()),
58442            "itemtype" => self.itemtype = Some(value.into()),
58443            "lang" => self.lang = Some(value.into()),
58444            "nonce" => self.nonce = Some(value.into()),
58445            "part" => self.part = Some(value.into()),
58446            "popover" => self.popover = Some(value.into()),
58447            "role" => self.role = Some(value.into()),
58448            "slot" => self.slot = Some(value.into()),
58449            "spellcheck" => self.spellcheck = Some(value.into()),
58450            "style" => self.style = Some(value.into()),
58451            "tabindex" => self.tabindex = Some(value.into()),
58452            "title" => self.title = Some(value.into()),
58453            "translate" => self.translate = Some(value.into()),
58454            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
58455            #[cfg(feature = "alloc")]
58456            _ => {
58457                #[allow(clippy::useless_conversion)]
58458                self.extra.insert(name.into(), value.into());
58459            }
58460            #[cfg(not(feature = "alloc"))]
58461            _ => {}
58462        }
58463    }
58464}
58465/// The <strong><code>&lt;big&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> deprecated element renders the enclosed text at a font size one level larger than the surrounding text (<code>medium</code> becomes <code>large</code>, for example). The size is capped at the browser's maximum permitted font size.
58466///
58467/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/big>
58468#[deprecated]
58469#[cfg(feature = "alloc")]
58470#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
58471pub struct BigOwned {
58472    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
58473    ///   
58474    pub accesskey: core::option::Option<AttributeValueOwned>,
58475    ///
58476    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
58477    ///     <ul>
58478    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
58479    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
58480    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
58481    ///       <li><code>characters</code>, all letters should default to uppercase</li>
58482    ///     </ul>
58483    ///   
58484    pub autocapitalize: core::option::Option<AttributeValueOwned>,
58485    ///
58486    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
58487    ///   
58488    pub autofocus: core::option::Option<AttributeValueOwned>,
58489    ///
58490    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
58491    ///   
58492    pub class: core::option::Option<AttributeValueOwned>,
58493    ///
58494    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
58495    ///     <ul>
58496    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
58497    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
58498    ///     </ul>
58499    ///   
58500    pub contenteditable: core::option::Option<AttributeValueOwned>,
58501    ///
58502    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
58503    ///   
58504    pub contextmenu: core::option::Option<AttributeValueOwned>,
58505    ///
58506    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
58507    ///   
58508    #[cfg(feature = "alloc")]
58509    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
58510    ///
58511    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
58512    ///     <ul>
58513    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
58514    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
58515    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
58516    ///     </ul>
58517    ///   
58518    pub dir: core::option::Option<AttributeValueOwned>,
58519    ///
58520    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
58521    ///     <ul>
58522    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
58523    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
58524    ///     </ul>
58525    ///   
58526    pub draggable: core::option::Option<AttributeValueOwned>,
58527    ///
58528    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
58529    ///   
58530    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
58531    ///
58532    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
58533    ///   
58534    pub exportparts: core::option::Option<AttributeValueOwned>,
58535    /// /// Extra attributes of the element.
58536
58537    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
58538    #[cfg(feature = "alloc")]
58539    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
58540    ///
58541    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
58542    ///   
58543    pub hidden: core::option::Option<AttributeValueOwned>,
58544    ///
58545    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
58546    ///   
58547    pub id: core::option::Option<AttributeValueOwned>,
58548    ///
58549    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
58550    ///   
58551    pub inert: core::option::Option<AttributeValueOwned>,
58552    ///
58553    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
58554    ///   
58555    pub inputmode: core::option::Option<AttributeValueOwned>,
58556    ///
58557    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
58558    ///   
58559    pub is: core::option::Option<AttributeValueOwned>,
58560    ///
58561    ///     <p>The unique, global identifier of an item.</p>
58562    ///   
58563    pub itemid: core::option::Option<AttributeValueOwned>,
58564    ///
58565    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
58566    ///   
58567    pub itemprop: core::option::Option<AttributeValueOwned>,
58568    ///
58569    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
58570    ///   
58571    pub itemref: core::option::Option<AttributeValueOwned>,
58572    ///
58573    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
58574    ///   
58575    pub itemscope: core::option::Option<AttributeValueOwned>,
58576    ///
58577    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
58578    ///   
58579    pub itemtype: core::option::Option<AttributeValueOwned>,
58580    ///
58581    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
58582    ///   
58583    pub lang: core::option::Option<AttributeValueOwned>,
58584    ///
58585    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
58586    ///   
58587    pub nonce: core::option::Option<AttributeValueOwned>,
58588    ///
58589    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
58590    ///   
58591    pub part: core::option::Option<AttributeValueOwned>,
58592    ///
58593    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
58594    ///   
58595    pub popover: core::option::Option<AttributeValueOwned>,
58596    ///
58597    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
58598    ///   
58599    pub role: core::option::Option<AttributeValueOwned>,
58600    ///
58601    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
58602    ///   
58603    pub slot: core::option::Option<AttributeValueOwned>,
58604    ///
58605    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
58606    ///     <ul>
58607    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
58608    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
58609    ///     </ul>
58610    ///   
58611    pub spellcheck: core::option::Option<AttributeValueOwned>,
58612    ///
58613    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
58614    ///   
58615    pub style: core::option::Option<AttributeValueOwned>,
58616    ///
58617    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
58618    ///     <ul>
58619    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
58620    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
58621    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
58622    ///     </ul>
58623    ///   
58624    pub tabindex: core::option::Option<AttributeValueOwned>,
58625    ///
58626    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
58627    ///   
58628    pub title: core::option::Option<AttributeValueOwned>,
58629    ///
58630    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
58631    ///     <ul>
58632    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
58633    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
58634    ///     </ul>
58635    ///   
58636    pub translate: core::option::Option<AttributeValueOwned>,
58637    ///
58638    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
58639    ///     <ul>
58640    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
58641    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
58642    ///     </ul>
58643    ///   
58644    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
58645}
58646#[allow(deprecated)]
58647#[cfg(feature = "alloc")]
58648impl BigOwned {
58649    /// Get the tag name of the element.
58650    /// This is the same as the name of the struct, in kebab-case.
58651    pub fn tag() -> &'static str {
58652        "big"
58653    }
58654    /// Sets an attribute of the element.
58655    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
58656    /// If the `alloc` feature is disabled, this function will silently fail.
58657    ///
58658    /// # Note
58659    /// This only works when the attribute is lowercase.
58660    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
58661        match name {
58662            "accesskey" => self.accesskey = Some(value.into()),
58663            "autocapitalize" => self.autocapitalize = Some(value.into()),
58664            "autofocus" => self.autofocus = Some(value.into()),
58665            "class" => self.class = Some(value.into()),
58666            "contenteditable" => self.contenteditable = Some(value.into()),
58667            "contextmenu" => self.contextmenu = Some(value.into()),
58668            "dir" => self.dir = Some(value.into()),
58669            "draggable" => self.draggable = Some(value.into()),
58670            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
58671            "exportparts" => self.exportparts = Some(value.into()),
58672            "hidden" => self.hidden = Some(value.into()),
58673            "id" => self.id = Some(value.into()),
58674            "inert" => self.inert = Some(value.into()),
58675            "inputmode" => self.inputmode = Some(value.into()),
58676            "is" => self.is = Some(value.into()),
58677            "itemid" => self.itemid = Some(value.into()),
58678            "itemprop" => self.itemprop = Some(value.into()),
58679            "itemref" => self.itemref = Some(value.into()),
58680            "itemscope" => self.itemscope = Some(value.into()),
58681            "itemtype" => self.itemtype = Some(value.into()),
58682            "lang" => self.lang = Some(value.into()),
58683            "nonce" => self.nonce = Some(value.into()),
58684            "part" => self.part = Some(value.into()),
58685            "popover" => self.popover = Some(value.into()),
58686            "role" => self.role = Some(value.into()),
58687            "slot" => self.slot = Some(value.into()),
58688            "spellcheck" => self.spellcheck = Some(value.into()),
58689            "style" => self.style = Some(value.into()),
58690            "tabindex" => self.tabindex = Some(value.into()),
58691            "title" => self.title = Some(value.into()),
58692            "translate" => self.translate = Some(value.into()),
58693            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
58694            #[cfg(feature = "alloc")]
58695            _ => {
58696                #[allow(clippy::useless_conversion)]
58697                self.extra.insert(name.into(), value.into());
58698            }
58699            #[cfg(not(feature = "alloc"))]
58700            _ => {}
58701        }
58702    }
58703}
58704/// The <strong><code>&lt;blink&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element is a non-standard element which causes the enclosed text to flash slowly.
58705///
58706/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/blink>
58707#[deprecated]
58708#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
58709pub struct Blink<'life> {
58710    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
58711    ///   
58712    pub accesskey: core::option::Option<AttributeValue<'life>>,
58713    ///
58714    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
58715    ///     <ul>
58716    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
58717    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
58718    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
58719    ///       <li><code>characters</code>, all letters should default to uppercase</li>
58720    ///     </ul>
58721    ///   
58722    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
58723    ///
58724    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
58725    ///   
58726    pub autofocus: core::option::Option<AttributeValue<'life>>,
58727    ///
58728    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
58729    ///   
58730    pub class: core::option::Option<AttributeValue<'life>>,
58731    ///
58732    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
58733    ///     <ul>
58734    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
58735    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
58736    ///     </ul>
58737    ///   
58738    pub contenteditable: core::option::Option<AttributeValue<'life>>,
58739    ///
58740    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
58741    ///   
58742    pub contextmenu: core::option::Option<AttributeValue<'life>>,
58743    ///
58744    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
58745    ///   
58746    #[cfg(feature = "alloc")]
58747    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
58748    ///
58749    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
58750    ///     <ul>
58751    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
58752    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
58753    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
58754    ///     </ul>
58755    ///   
58756    pub dir: core::option::Option<AttributeValue<'life>>,
58757    ///
58758    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
58759    ///     <ul>
58760    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
58761    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
58762    ///     </ul>
58763    ///   
58764    pub draggable: core::option::Option<AttributeValue<'life>>,
58765    ///
58766    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
58767    ///   
58768    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
58769    ///
58770    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
58771    ///   
58772    pub exportparts: core::option::Option<AttributeValue<'life>>,
58773    /// /// Extra attributes of the element.
58774
58775    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
58776    #[cfg(feature = "alloc")]
58777    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
58778    ///
58779    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
58780    ///   
58781    pub hidden: core::option::Option<AttributeValue<'life>>,
58782    ///
58783    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
58784    ///   
58785    pub id: core::option::Option<AttributeValue<'life>>,
58786    ///
58787    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
58788    ///   
58789    pub inert: core::option::Option<AttributeValue<'life>>,
58790    ///
58791    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
58792    ///   
58793    pub inputmode: core::option::Option<AttributeValue<'life>>,
58794    ///
58795    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
58796    ///   
58797    pub is: core::option::Option<AttributeValue<'life>>,
58798    ///
58799    ///     <p>The unique, global identifier of an item.</p>
58800    ///   
58801    pub itemid: core::option::Option<AttributeValue<'life>>,
58802    ///
58803    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
58804    ///   
58805    pub itemprop: core::option::Option<AttributeValue<'life>>,
58806    ///
58807    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
58808    ///   
58809    pub itemref: core::option::Option<AttributeValue<'life>>,
58810    ///
58811    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
58812    ///   
58813    pub itemscope: core::option::Option<AttributeValue<'life>>,
58814    ///
58815    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
58816    ///   
58817    pub itemtype: core::option::Option<AttributeValue<'life>>,
58818    ///
58819    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
58820    ///   
58821    pub lang: core::option::Option<AttributeValue<'life>>,
58822    ///
58823    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
58824    ///   
58825    pub nonce: core::option::Option<AttributeValue<'life>>,
58826    ///
58827    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
58828    ///   
58829    pub part: core::option::Option<AttributeValue<'life>>,
58830    ///
58831    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
58832    ///   
58833    pub popover: core::option::Option<AttributeValue<'life>>,
58834    ///
58835    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
58836    ///   
58837    pub role: core::option::Option<AttributeValue<'life>>,
58838    ///
58839    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
58840    ///   
58841    pub slot: core::option::Option<AttributeValue<'life>>,
58842    ///
58843    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
58844    ///     <ul>
58845    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
58846    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
58847    ///     </ul>
58848    ///   
58849    pub spellcheck: core::option::Option<AttributeValue<'life>>,
58850    ///
58851    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
58852    ///   
58853    pub style: core::option::Option<AttributeValue<'life>>,
58854    ///
58855    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
58856    ///     <ul>
58857    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
58858    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
58859    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
58860    ///     </ul>
58861    ///   
58862    pub tabindex: core::option::Option<AttributeValue<'life>>,
58863    ///
58864    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
58865    ///   
58866    pub title: core::option::Option<AttributeValue<'life>>,
58867    ///
58868    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
58869    ///     <ul>
58870    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
58871    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
58872    ///     </ul>
58873    ///   
58874    pub translate: core::option::Option<AttributeValue<'life>>,
58875    ///
58876    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
58877    ///     <ul>
58878    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
58879    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
58880    ///     </ul>
58881    ///   
58882    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
58883}
58884#[allow(deprecated)]
58885
58886impl<'life> Blink<'life> {
58887    /// Get the tag name of the element.
58888    /// This is the same as the name of the struct, in kebab-case.
58889    pub fn tag() -> &'static str {
58890        "blink"
58891    }
58892    /// Sets an attribute of the element.
58893    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
58894    /// If the `alloc` feature is disabled, this function will silently fail.
58895    ///
58896    /// # Note
58897    /// This only works when the attribute is lowercase.
58898    pub fn set_attr(
58899        &mut self,
58900        name: &'life str,
58901        value: impl core::convert::Into<AttributeValue<'life>>,
58902    ) {
58903        match name {
58904            "accesskey" => self.accesskey = Some(value.into()),
58905            "autocapitalize" => self.autocapitalize = Some(value.into()),
58906            "autofocus" => self.autofocus = Some(value.into()),
58907            "class" => self.class = Some(value.into()),
58908            "contenteditable" => self.contenteditable = Some(value.into()),
58909            "contextmenu" => self.contextmenu = Some(value.into()),
58910            "dir" => self.dir = Some(value.into()),
58911            "draggable" => self.draggable = Some(value.into()),
58912            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
58913            "exportparts" => self.exportparts = Some(value.into()),
58914            "hidden" => self.hidden = Some(value.into()),
58915            "id" => self.id = Some(value.into()),
58916            "inert" => self.inert = Some(value.into()),
58917            "inputmode" => self.inputmode = Some(value.into()),
58918            "is" => self.is = Some(value.into()),
58919            "itemid" => self.itemid = Some(value.into()),
58920            "itemprop" => self.itemprop = Some(value.into()),
58921            "itemref" => self.itemref = Some(value.into()),
58922            "itemscope" => self.itemscope = Some(value.into()),
58923            "itemtype" => self.itemtype = Some(value.into()),
58924            "lang" => self.lang = Some(value.into()),
58925            "nonce" => self.nonce = Some(value.into()),
58926            "part" => self.part = Some(value.into()),
58927            "popover" => self.popover = Some(value.into()),
58928            "role" => self.role = Some(value.into()),
58929            "slot" => self.slot = Some(value.into()),
58930            "spellcheck" => self.spellcheck = Some(value.into()),
58931            "style" => self.style = Some(value.into()),
58932            "tabindex" => self.tabindex = Some(value.into()),
58933            "title" => self.title = Some(value.into()),
58934            "translate" => self.translate = Some(value.into()),
58935            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
58936            #[cfg(feature = "alloc")]
58937            _ => {
58938                #[allow(clippy::useless_conversion)]
58939                self.extra.insert(name.into(), value.into());
58940            }
58941            #[cfg(not(feature = "alloc"))]
58942            _ => {}
58943        }
58944    }
58945}
58946/// The <strong><code>&lt;blink&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element is a non-standard element which causes the enclosed text to flash slowly.
58947///
58948/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/blink>
58949#[deprecated]
58950#[cfg(feature = "alloc")]
58951#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
58952pub struct BlinkOwned {
58953    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
58954    ///   
58955    pub accesskey: core::option::Option<AttributeValueOwned>,
58956    ///
58957    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
58958    ///     <ul>
58959    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
58960    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
58961    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
58962    ///       <li><code>characters</code>, all letters should default to uppercase</li>
58963    ///     </ul>
58964    ///   
58965    pub autocapitalize: core::option::Option<AttributeValueOwned>,
58966    ///
58967    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
58968    ///   
58969    pub autofocus: core::option::Option<AttributeValueOwned>,
58970    ///
58971    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
58972    ///   
58973    pub class: core::option::Option<AttributeValueOwned>,
58974    ///
58975    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
58976    ///     <ul>
58977    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
58978    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
58979    ///     </ul>
58980    ///   
58981    pub contenteditable: core::option::Option<AttributeValueOwned>,
58982    ///
58983    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
58984    ///   
58985    pub contextmenu: core::option::Option<AttributeValueOwned>,
58986    ///
58987    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
58988    ///   
58989    #[cfg(feature = "alloc")]
58990    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
58991    ///
58992    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
58993    ///     <ul>
58994    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
58995    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
58996    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
58997    ///     </ul>
58998    ///   
58999    pub dir: core::option::Option<AttributeValueOwned>,
59000    ///
59001    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
59002    ///     <ul>
59003    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
59004    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
59005    ///     </ul>
59006    ///   
59007    pub draggable: core::option::Option<AttributeValueOwned>,
59008    ///
59009    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
59010    ///   
59011    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
59012    ///
59013    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
59014    ///   
59015    pub exportparts: core::option::Option<AttributeValueOwned>,
59016    /// /// Extra attributes of the element.
59017
59018    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
59019    #[cfg(feature = "alloc")]
59020    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
59021    ///
59022    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
59023    ///   
59024    pub hidden: core::option::Option<AttributeValueOwned>,
59025    ///
59026    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
59027    ///   
59028    pub id: core::option::Option<AttributeValueOwned>,
59029    ///
59030    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
59031    ///   
59032    pub inert: core::option::Option<AttributeValueOwned>,
59033    ///
59034    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
59035    ///   
59036    pub inputmode: core::option::Option<AttributeValueOwned>,
59037    ///
59038    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
59039    ///   
59040    pub is: core::option::Option<AttributeValueOwned>,
59041    ///
59042    ///     <p>The unique, global identifier of an item.</p>
59043    ///   
59044    pub itemid: core::option::Option<AttributeValueOwned>,
59045    ///
59046    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
59047    ///   
59048    pub itemprop: core::option::Option<AttributeValueOwned>,
59049    ///
59050    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
59051    ///   
59052    pub itemref: core::option::Option<AttributeValueOwned>,
59053    ///
59054    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
59055    ///   
59056    pub itemscope: core::option::Option<AttributeValueOwned>,
59057    ///
59058    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
59059    ///   
59060    pub itemtype: core::option::Option<AttributeValueOwned>,
59061    ///
59062    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
59063    ///   
59064    pub lang: core::option::Option<AttributeValueOwned>,
59065    ///
59066    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
59067    ///   
59068    pub nonce: core::option::Option<AttributeValueOwned>,
59069    ///
59070    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
59071    ///   
59072    pub part: core::option::Option<AttributeValueOwned>,
59073    ///
59074    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
59075    ///   
59076    pub popover: core::option::Option<AttributeValueOwned>,
59077    ///
59078    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
59079    ///   
59080    pub role: core::option::Option<AttributeValueOwned>,
59081    ///
59082    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
59083    ///   
59084    pub slot: core::option::Option<AttributeValueOwned>,
59085    ///
59086    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
59087    ///     <ul>
59088    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
59089    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
59090    ///     </ul>
59091    ///   
59092    pub spellcheck: core::option::Option<AttributeValueOwned>,
59093    ///
59094    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
59095    ///   
59096    pub style: core::option::Option<AttributeValueOwned>,
59097    ///
59098    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
59099    ///     <ul>
59100    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
59101    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
59102    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
59103    ///     </ul>
59104    ///   
59105    pub tabindex: core::option::Option<AttributeValueOwned>,
59106    ///
59107    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
59108    ///   
59109    pub title: core::option::Option<AttributeValueOwned>,
59110    ///
59111    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
59112    ///     <ul>
59113    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
59114    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
59115    ///     </ul>
59116    ///   
59117    pub translate: core::option::Option<AttributeValueOwned>,
59118    ///
59119    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
59120    ///     <ul>
59121    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
59122    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
59123    ///     </ul>
59124    ///   
59125    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
59126}
59127#[allow(deprecated)]
59128#[cfg(feature = "alloc")]
59129impl BlinkOwned {
59130    /// Get the tag name of the element.
59131    /// This is the same as the name of the struct, in kebab-case.
59132    pub fn tag() -> &'static str {
59133        "blink"
59134    }
59135    /// Sets an attribute of the element.
59136    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
59137    /// If the `alloc` feature is disabled, this function will silently fail.
59138    ///
59139    /// # Note
59140    /// This only works when the attribute is lowercase.
59141    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
59142        match name {
59143            "accesskey" => self.accesskey = Some(value.into()),
59144            "autocapitalize" => self.autocapitalize = Some(value.into()),
59145            "autofocus" => self.autofocus = Some(value.into()),
59146            "class" => self.class = Some(value.into()),
59147            "contenteditable" => self.contenteditable = Some(value.into()),
59148            "contextmenu" => self.contextmenu = Some(value.into()),
59149            "dir" => self.dir = Some(value.into()),
59150            "draggable" => self.draggable = Some(value.into()),
59151            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
59152            "exportparts" => self.exportparts = Some(value.into()),
59153            "hidden" => self.hidden = Some(value.into()),
59154            "id" => self.id = Some(value.into()),
59155            "inert" => self.inert = Some(value.into()),
59156            "inputmode" => self.inputmode = Some(value.into()),
59157            "is" => self.is = Some(value.into()),
59158            "itemid" => self.itemid = Some(value.into()),
59159            "itemprop" => self.itemprop = Some(value.into()),
59160            "itemref" => self.itemref = Some(value.into()),
59161            "itemscope" => self.itemscope = Some(value.into()),
59162            "itemtype" => self.itemtype = Some(value.into()),
59163            "lang" => self.lang = Some(value.into()),
59164            "nonce" => self.nonce = Some(value.into()),
59165            "part" => self.part = Some(value.into()),
59166            "popover" => self.popover = Some(value.into()),
59167            "role" => self.role = Some(value.into()),
59168            "slot" => self.slot = Some(value.into()),
59169            "spellcheck" => self.spellcheck = Some(value.into()),
59170            "style" => self.style = Some(value.into()),
59171            "tabindex" => self.tabindex = Some(value.into()),
59172            "title" => self.title = Some(value.into()),
59173            "translate" => self.translate = Some(value.into()),
59174            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
59175            #[cfg(feature = "alloc")]
59176            _ => {
59177                #[allow(clippy::useless_conversion)]
59178                self.extra.insert(name.into(), value.into());
59179            }
59180            #[cfg(not(feature = "alloc"))]
59181            _ => {}
59182        }
59183    }
59184}
59185/// The <strong><code>&lt;center&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element is a <a href="/en-US/docs/Web/HTML/Block-level_elements">block-level element</a> that displays its block-level or inline contents centered horizontally within its containing element. The container is usually, but isn't required to be, <a href="/en-US/docs/Web/HTML/Element/body"><code>&lt;body&gt;</code></a>.
59186///
59187/// This tag has been deprecated in HTML 4 (and XHTML 1) in favor of the <a href="/en-US/docs/Web/CSS">CSS</a> <a href="/en-US/docs/Web/CSS/text-align"><code>text-align</code></a> property, which can be applied to the <a href="/en-US/docs/Web/HTML/Element/div"><code>&lt;div&gt;</code></a> element or to an individual <a href="/en-US/docs/Web/HTML/Element/p"><code>&lt;p&gt;</code></a>. For centering blocks, use other CSS properties like <a href="/en-US/docs/Web/CSS/margin-left"><code>margin-left</code></a> and <a href="/en-US/docs/Web/CSS/margin-right"><code>margin-right</code></a> and set them to <code>auto</code> (or set <a href="/en-US/docs/Web/CSS/margin"><code>margin</code></a> to <code>0 auto</code>).
59188///
59189/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/center>
59190#[deprecated]
59191#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
59192pub struct Center<'life> {
59193    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
59194    ///   
59195    pub accesskey: core::option::Option<AttributeValue<'life>>,
59196    ///
59197    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
59198    ///     <ul>
59199    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
59200    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
59201    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
59202    ///       <li><code>characters</code>, all letters should default to uppercase</li>
59203    ///     </ul>
59204    ///   
59205    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
59206    ///
59207    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
59208    ///   
59209    pub autofocus: core::option::Option<AttributeValue<'life>>,
59210    ///
59211    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
59212    ///   
59213    pub class: core::option::Option<AttributeValue<'life>>,
59214    ///
59215    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
59216    ///     <ul>
59217    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
59218    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
59219    ///     </ul>
59220    ///   
59221    pub contenteditable: core::option::Option<AttributeValue<'life>>,
59222    ///
59223    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
59224    ///   
59225    pub contextmenu: core::option::Option<AttributeValue<'life>>,
59226    ///
59227    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
59228    ///   
59229    #[cfg(feature = "alloc")]
59230    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
59231    ///
59232    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
59233    ///     <ul>
59234    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
59235    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
59236    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
59237    ///     </ul>
59238    ///   
59239    pub dir: core::option::Option<AttributeValue<'life>>,
59240    ///
59241    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
59242    ///     <ul>
59243    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
59244    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
59245    ///     </ul>
59246    ///   
59247    pub draggable: core::option::Option<AttributeValue<'life>>,
59248    ///
59249    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
59250    ///   
59251    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
59252    ///
59253    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
59254    ///   
59255    pub exportparts: core::option::Option<AttributeValue<'life>>,
59256    /// /// Extra attributes of the element.
59257
59258    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
59259    #[cfg(feature = "alloc")]
59260    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
59261    ///
59262    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
59263    ///   
59264    pub hidden: core::option::Option<AttributeValue<'life>>,
59265    ///
59266    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
59267    ///   
59268    pub id: core::option::Option<AttributeValue<'life>>,
59269    ///
59270    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
59271    ///   
59272    pub inert: core::option::Option<AttributeValue<'life>>,
59273    ///
59274    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
59275    ///   
59276    pub inputmode: core::option::Option<AttributeValue<'life>>,
59277    ///
59278    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
59279    ///   
59280    pub is: core::option::Option<AttributeValue<'life>>,
59281    ///
59282    ///     <p>The unique, global identifier of an item.</p>
59283    ///   
59284    pub itemid: core::option::Option<AttributeValue<'life>>,
59285    ///
59286    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
59287    ///   
59288    pub itemprop: core::option::Option<AttributeValue<'life>>,
59289    ///
59290    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
59291    ///   
59292    pub itemref: core::option::Option<AttributeValue<'life>>,
59293    ///
59294    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
59295    ///   
59296    pub itemscope: core::option::Option<AttributeValue<'life>>,
59297    ///
59298    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
59299    ///   
59300    pub itemtype: core::option::Option<AttributeValue<'life>>,
59301    ///
59302    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
59303    ///   
59304    pub lang: core::option::Option<AttributeValue<'life>>,
59305    ///
59306    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
59307    ///   
59308    pub nonce: core::option::Option<AttributeValue<'life>>,
59309    ///
59310    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
59311    ///   
59312    pub part: core::option::Option<AttributeValue<'life>>,
59313    ///
59314    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
59315    ///   
59316    pub popover: core::option::Option<AttributeValue<'life>>,
59317    ///
59318    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
59319    ///   
59320    pub role: core::option::Option<AttributeValue<'life>>,
59321    ///
59322    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
59323    ///   
59324    pub slot: core::option::Option<AttributeValue<'life>>,
59325    ///
59326    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
59327    ///     <ul>
59328    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
59329    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
59330    ///     </ul>
59331    ///   
59332    pub spellcheck: core::option::Option<AttributeValue<'life>>,
59333    ///
59334    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
59335    ///   
59336    pub style: core::option::Option<AttributeValue<'life>>,
59337    ///
59338    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
59339    ///     <ul>
59340    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
59341    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
59342    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
59343    ///     </ul>
59344    ///   
59345    pub tabindex: core::option::Option<AttributeValue<'life>>,
59346    ///
59347    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
59348    ///   
59349    pub title: core::option::Option<AttributeValue<'life>>,
59350    ///
59351    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
59352    ///     <ul>
59353    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
59354    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
59355    ///     </ul>
59356    ///   
59357    pub translate: core::option::Option<AttributeValue<'life>>,
59358    ///
59359    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
59360    ///     <ul>
59361    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
59362    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
59363    ///     </ul>
59364    ///   
59365    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
59366}
59367#[allow(deprecated)]
59368
59369impl<'life> Center<'life> {
59370    /// Get the tag name of the element.
59371    /// This is the same as the name of the struct, in kebab-case.
59372    pub fn tag() -> &'static str {
59373        "center"
59374    }
59375    /// Sets an attribute of the element.
59376    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
59377    /// If the `alloc` feature is disabled, this function will silently fail.
59378    ///
59379    /// # Note
59380    /// This only works when the attribute is lowercase.
59381    pub fn set_attr(
59382        &mut self,
59383        name: &'life str,
59384        value: impl core::convert::Into<AttributeValue<'life>>,
59385    ) {
59386        match name {
59387            "accesskey" => self.accesskey = Some(value.into()),
59388            "autocapitalize" => self.autocapitalize = Some(value.into()),
59389            "autofocus" => self.autofocus = Some(value.into()),
59390            "class" => self.class = Some(value.into()),
59391            "contenteditable" => self.contenteditable = Some(value.into()),
59392            "contextmenu" => self.contextmenu = Some(value.into()),
59393            "dir" => self.dir = Some(value.into()),
59394            "draggable" => self.draggable = Some(value.into()),
59395            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
59396            "exportparts" => self.exportparts = Some(value.into()),
59397            "hidden" => self.hidden = Some(value.into()),
59398            "id" => self.id = Some(value.into()),
59399            "inert" => self.inert = Some(value.into()),
59400            "inputmode" => self.inputmode = Some(value.into()),
59401            "is" => self.is = Some(value.into()),
59402            "itemid" => self.itemid = Some(value.into()),
59403            "itemprop" => self.itemprop = Some(value.into()),
59404            "itemref" => self.itemref = Some(value.into()),
59405            "itemscope" => self.itemscope = Some(value.into()),
59406            "itemtype" => self.itemtype = Some(value.into()),
59407            "lang" => self.lang = Some(value.into()),
59408            "nonce" => self.nonce = Some(value.into()),
59409            "part" => self.part = Some(value.into()),
59410            "popover" => self.popover = Some(value.into()),
59411            "role" => self.role = Some(value.into()),
59412            "slot" => self.slot = Some(value.into()),
59413            "spellcheck" => self.spellcheck = Some(value.into()),
59414            "style" => self.style = Some(value.into()),
59415            "tabindex" => self.tabindex = Some(value.into()),
59416            "title" => self.title = Some(value.into()),
59417            "translate" => self.translate = Some(value.into()),
59418            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
59419            #[cfg(feature = "alloc")]
59420            _ => {
59421                #[allow(clippy::useless_conversion)]
59422                self.extra.insert(name.into(), value.into());
59423            }
59424            #[cfg(not(feature = "alloc"))]
59425            _ => {}
59426        }
59427    }
59428}
59429/// The <strong><code>&lt;center&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element is a <a href="/en-US/docs/Web/HTML/Block-level_elements">block-level element</a> that displays its block-level or inline contents centered horizontally within its containing element. The container is usually, but isn't required to be, <a href="/en-US/docs/Web/HTML/Element/body"><code>&lt;body&gt;</code></a>.
59430///
59431/// This tag has been deprecated in HTML 4 (and XHTML 1) in favor of the <a href="/en-US/docs/Web/CSS">CSS</a> <a href="/en-US/docs/Web/CSS/text-align"><code>text-align</code></a> property, which can be applied to the <a href="/en-US/docs/Web/HTML/Element/div"><code>&lt;div&gt;</code></a> element or to an individual <a href="/en-US/docs/Web/HTML/Element/p"><code>&lt;p&gt;</code></a>. For centering blocks, use other CSS properties like <a href="/en-US/docs/Web/CSS/margin-left"><code>margin-left</code></a> and <a href="/en-US/docs/Web/CSS/margin-right"><code>margin-right</code></a> and set them to <code>auto</code> (or set <a href="/en-US/docs/Web/CSS/margin"><code>margin</code></a> to <code>0 auto</code>).
59432///
59433/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/center>
59434#[deprecated]
59435#[cfg(feature = "alloc")]
59436#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
59437pub struct CenterOwned {
59438    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
59439    ///   
59440    pub accesskey: core::option::Option<AttributeValueOwned>,
59441    ///
59442    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
59443    ///     <ul>
59444    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
59445    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
59446    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
59447    ///       <li><code>characters</code>, all letters should default to uppercase</li>
59448    ///     </ul>
59449    ///   
59450    pub autocapitalize: core::option::Option<AttributeValueOwned>,
59451    ///
59452    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
59453    ///   
59454    pub autofocus: core::option::Option<AttributeValueOwned>,
59455    ///
59456    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
59457    ///   
59458    pub class: core::option::Option<AttributeValueOwned>,
59459    ///
59460    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
59461    ///     <ul>
59462    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
59463    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
59464    ///     </ul>
59465    ///   
59466    pub contenteditable: core::option::Option<AttributeValueOwned>,
59467    ///
59468    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
59469    ///   
59470    pub contextmenu: core::option::Option<AttributeValueOwned>,
59471    ///
59472    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
59473    ///   
59474    #[cfg(feature = "alloc")]
59475    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
59476    ///
59477    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
59478    ///     <ul>
59479    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
59480    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
59481    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
59482    ///     </ul>
59483    ///   
59484    pub dir: core::option::Option<AttributeValueOwned>,
59485    ///
59486    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
59487    ///     <ul>
59488    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
59489    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
59490    ///     </ul>
59491    ///   
59492    pub draggable: core::option::Option<AttributeValueOwned>,
59493    ///
59494    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
59495    ///   
59496    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
59497    ///
59498    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
59499    ///   
59500    pub exportparts: core::option::Option<AttributeValueOwned>,
59501    /// /// Extra attributes of the element.
59502
59503    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
59504    #[cfg(feature = "alloc")]
59505    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
59506    ///
59507    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
59508    ///   
59509    pub hidden: core::option::Option<AttributeValueOwned>,
59510    ///
59511    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
59512    ///   
59513    pub id: core::option::Option<AttributeValueOwned>,
59514    ///
59515    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
59516    ///   
59517    pub inert: core::option::Option<AttributeValueOwned>,
59518    ///
59519    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
59520    ///   
59521    pub inputmode: core::option::Option<AttributeValueOwned>,
59522    ///
59523    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
59524    ///   
59525    pub is: core::option::Option<AttributeValueOwned>,
59526    ///
59527    ///     <p>The unique, global identifier of an item.</p>
59528    ///   
59529    pub itemid: core::option::Option<AttributeValueOwned>,
59530    ///
59531    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
59532    ///   
59533    pub itemprop: core::option::Option<AttributeValueOwned>,
59534    ///
59535    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
59536    ///   
59537    pub itemref: core::option::Option<AttributeValueOwned>,
59538    ///
59539    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
59540    ///   
59541    pub itemscope: core::option::Option<AttributeValueOwned>,
59542    ///
59543    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
59544    ///   
59545    pub itemtype: core::option::Option<AttributeValueOwned>,
59546    ///
59547    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
59548    ///   
59549    pub lang: core::option::Option<AttributeValueOwned>,
59550    ///
59551    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
59552    ///   
59553    pub nonce: core::option::Option<AttributeValueOwned>,
59554    ///
59555    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
59556    ///   
59557    pub part: core::option::Option<AttributeValueOwned>,
59558    ///
59559    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
59560    ///   
59561    pub popover: core::option::Option<AttributeValueOwned>,
59562    ///
59563    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
59564    ///   
59565    pub role: core::option::Option<AttributeValueOwned>,
59566    ///
59567    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
59568    ///   
59569    pub slot: core::option::Option<AttributeValueOwned>,
59570    ///
59571    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
59572    ///     <ul>
59573    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
59574    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
59575    ///     </ul>
59576    ///   
59577    pub spellcheck: core::option::Option<AttributeValueOwned>,
59578    ///
59579    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
59580    ///   
59581    pub style: core::option::Option<AttributeValueOwned>,
59582    ///
59583    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
59584    ///     <ul>
59585    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
59586    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
59587    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
59588    ///     </ul>
59589    ///   
59590    pub tabindex: core::option::Option<AttributeValueOwned>,
59591    ///
59592    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
59593    ///   
59594    pub title: core::option::Option<AttributeValueOwned>,
59595    ///
59596    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
59597    ///     <ul>
59598    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
59599    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
59600    ///     </ul>
59601    ///   
59602    pub translate: core::option::Option<AttributeValueOwned>,
59603    ///
59604    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
59605    ///     <ul>
59606    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
59607    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
59608    ///     </ul>
59609    ///   
59610    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
59611}
59612#[allow(deprecated)]
59613#[cfg(feature = "alloc")]
59614impl CenterOwned {
59615    /// Get the tag name of the element.
59616    /// This is the same as the name of the struct, in kebab-case.
59617    pub fn tag() -> &'static str {
59618        "center"
59619    }
59620    /// Sets an attribute of the element.
59621    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
59622    /// If the `alloc` feature is disabled, this function will silently fail.
59623    ///
59624    /// # Note
59625    /// This only works when the attribute is lowercase.
59626    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
59627        match name {
59628            "accesskey" => self.accesskey = Some(value.into()),
59629            "autocapitalize" => self.autocapitalize = Some(value.into()),
59630            "autofocus" => self.autofocus = Some(value.into()),
59631            "class" => self.class = Some(value.into()),
59632            "contenteditable" => self.contenteditable = Some(value.into()),
59633            "contextmenu" => self.contextmenu = Some(value.into()),
59634            "dir" => self.dir = Some(value.into()),
59635            "draggable" => self.draggable = Some(value.into()),
59636            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
59637            "exportparts" => self.exportparts = Some(value.into()),
59638            "hidden" => self.hidden = Some(value.into()),
59639            "id" => self.id = Some(value.into()),
59640            "inert" => self.inert = Some(value.into()),
59641            "inputmode" => self.inputmode = Some(value.into()),
59642            "is" => self.is = Some(value.into()),
59643            "itemid" => self.itemid = Some(value.into()),
59644            "itemprop" => self.itemprop = Some(value.into()),
59645            "itemref" => self.itemref = Some(value.into()),
59646            "itemscope" => self.itemscope = Some(value.into()),
59647            "itemtype" => self.itemtype = Some(value.into()),
59648            "lang" => self.lang = Some(value.into()),
59649            "nonce" => self.nonce = Some(value.into()),
59650            "part" => self.part = Some(value.into()),
59651            "popover" => self.popover = Some(value.into()),
59652            "role" => self.role = Some(value.into()),
59653            "slot" => self.slot = Some(value.into()),
59654            "spellcheck" => self.spellcheck = Some(value.into()),
59655            "style" => self.style = Some(value.into()),
59656            "tabindex" => self.tabindex = Some(value.into()),
59657            "title" => self.title = Some(value.into()),
59658            "translate" => self.translate = Some(value.into()),
59659            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
59660            #[cfg(feature = "alloc")]
59661            _ => {
59662                #[allow(clippy::useless_conversion)]
59663                self.extra.insert(name.into(), value.into());
59664            }
59665            #[cfg(not(feature = "alloc"))]
59666            _ => {}
59667        }
59668    }
59669}
59670/// The <strong><code>&lt;dir&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element is used as a container for a directory of files and/or folders, potentially with styles and icons applied by the <a href="/en-US/docs/Glossary/User_agent">user agent</a>. Do not use this obsolete element; instead, you should use the <a href="/en-US/docs/Web/HTML/Element/ul"><code>&lt;ul&gt;</code></a> element for lists, including lists of files.
59671///
59672/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dir>
59673#[deprecated]
59674#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
59675pub struct Dir<'life> {
59676    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
59677    ///   
59678    pub accesskey: core::option::Option<AttributeValue<'life>>,
59679    ///
59680    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
59681    ///     <ul>
59682    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
59683    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
59684    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
59685    ///       <li><code>characters</code>, all letters should default to uppercase</li>
59686    ///     </ul>
59687    ///   
59688    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
59689    ///
59690    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
59691    ///   
59692    pub autofocus: core::option::Option<AttributeValue<'life>>,
59693    ///
59694    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
59695    ///   
59696    pub class: core::option::Option<AttributeValue<'life>>,
59697    ///
59698    ///     <p>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.</p>
59699    ///   
59700    pub compact: core::option::Option<AttributeValue<'life>>,
59701    ///
59702    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
59703    ///     <ul>
59704    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
59705    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
59706    ///     </ul>
59707    ///   
59708    pub contenteditable: core::option::Option<AttributeValue<'life>>,
59709    ///
59710    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
59711    ///   
59712    pub contextmenu: core::option::Option<AttributeValue<'life>>,
59713    ///
59714    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
59715    ///   
59716    #[cfg(feature = "alloc")]
59717    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
59718    ///
59719    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
59720    ///     <ul>
59721    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
59722    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
59723    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
59724    ///     </ul>
59725    ///   
59726    pub dir: core::option::Option<AttributeValue<'life>>,
59727    ///
59728    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
59729    ///     <ul>
59730    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
59731    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
59732    ///     </ul>
59733    ///   
59734    pub draggable: core::option::Option<AttributeValue<'life>>,
59735    ///
59736    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
59737    ///   
59738    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
59739    ///
59740    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
59741    ///   
59742    pub exportparts: core::option::Option<AttributeValue<'life>>,
59743    /// /// Extra attributes of the element.
59744
59745    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
59746    #[cfg(feature = "alloc")]
59747    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
59748    ///
59749    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
59750    ///   
59751    pub hidden: core::option::Option<AttributeValue<'life>>,
59752    ///
59753    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
59754    ///   
59755    pub id: core::option::Option<AttributeValue<'life>>,
59756    ///
59757    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
59758    ///   
59759    pub inert: core::option::Option<AttributeValue<'life>>,
59760    ///
59761    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
59762    ///   
59763    pub inputmode: core::option::Option<AttributeValue<'life>>,
59764    ///
59765    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
59766    ///   
59767    pub is: core::option::Option<AttributeValue<'life>>,
59768    ///
59769    ///     <p>The unique, global identifier of an item.</p>
59770    ///   
59771    pub itemid: core::option::Option<AttributeValue<'life>>,
59772    ///
59773    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
59774    ///   
59775    pub itemprop: core::option::Option<AttributeValue<'life>>,
59776    ///
59777    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
59778    ///   
59779    pub itemref: core::option::Option<AttributeValue<'life>>,
59780    ///
59781    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
59782    ///   
59783    pub itemscope: core::option::Option<AttributeValue<'life>>,
59784    ///
59785    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
59786    ///   
59787    pub itemtype: core::option::Option<AttributeValue<'life>>,
59788    ///
59789    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
59790    ///   
59791    pub lang: core::option::Option<AttributeValue<'life>>,
59792    ///
59793    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
59794    ///   
59795    pub nonce: core::option::Option<AttributeValue<'life>>,
59796    ///
59797    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
59798    ///   
59799    pub part: core::option::Option<AttributeValue<'life>>,
59800    ///
59801    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
59802    ///   
59803    pub popover: core::option::Option<AttributeValue<'life>>,
59804    ///
59805    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
59806    ///   
59807    pub role: core::option::Option<AttributeValue<'life>>,
59808    ///
59809    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
59810    ///   
59811    pub slot: core::option::Option<AttributeValue<'life>>,
59812    ///
59813    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
59814    ///     <ul>
59815    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
59816    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
59817    ///     </ul>
59818    ///   
59819    pub spellcheck: core::option::Option<AttributeValue<'life>>,
59820    ///
59821    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
59822    ///   
59823    pub style: core::option::Option<AttributeValue<'life>>,
59824    ///
59825    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
59826    ///     <ul>
59827    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
59828    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
59829    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
59830    ///     </ul>
59831    ///   
59832    pub tabindex: core::option::Option<AttributeValue<'life>>,
59833    ///
59834    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
59835    ///   
59836    pub title: core::option::Option<AttributeValue<'life>>,
59837    ///
59838    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
59839    ///     <ul>
59840    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
59841    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
59842    ///     </ul>
59843    ///   
59844    pub translate: core::option::Option<AttributeValue<'life>>,
59845    ///
59846    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
59847    ///     <ul>
59848    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
59849    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
59850    ///     </ul>
59851    ///   
59852    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
59853}
59854#[allow(deprecated)]
59855
59856impl<'life> Dir<'life> {
59857    /// Get the tag name of the element.
59858    /// This is the same as the name of the struct, in kebab-case.
59859    pub fn tag() -> &'static str {
59860        "dir"
59861    }
59862    /// Sets an attribute of the element.
59863    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
59864    /// If the `alloc` feature is disabled, this function will silently fail.
59865    ///
59866    /// # Note
59867    /// This only works when the attribute is lowercase.
59868    pub fn set_attr(
59869        &mut self,
59870        name: &'life str,
59871        value: impl core::convert::Into<AttributeValue<'life>>,
59872    ) {
59873        match name {
59874            "accesskey" => self.accesskey = Some(value.into()),
59875            "autocapitalize" => self.autocapitalize = Some(value.into()),
59876            "autofocus" => self.autofocus = Some(value.into()),
59877            "class" => self.class = Some(value.into()),
59878            "compact" => self.compact = Some(value.into()),
59879            "contenteditable" => self.contenteditable = Some(value.into()),
59880            "contextmenu" => self.contextmenu = Some(value.into()),
59881            "dir" => self.dir = Some(value.into()),
59882            "draggable" => self.draggable = Some(value.into()),
59883            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
59884            "exportparts" => self.exportparts = Some(value.into()),
59885            "hidden" => self.hidden = Some(value.into()),
59886            "id" => self.id = Some(value.into()),
59887            "inert" => self.inert = Some(value.into()),
59888            "inputmode" => self.inputmode = Some(value.into()),
59889            "is" => self.is = Some(value.into()),
59890            "itemid" => self.itemid = Some(value.into()),
59891            "itemprop" => self.itemprop = Some(value.into()),
59892            "itemref" => self.itemref = Some(value.into()),
59893            "itemscope" => self.itemscope = Some(value.into()),
59894            "itemtype" => self.itemtype = Some(value.into()),
59895            "lang" => self.lang = Some(value.into()),
59896            "nonce" => self.nonce = Some(value.into()),
59897            "part" => self.part = Some(value.into()),
59898            "popover" => self.popover = Some(value.into()),
59899            "role" => self.role = Some(value.into()),
59900            "slot" => self.slot = Some(value.into()),
59901            "spellcheck" => self.spellcheck = Some(value.into()),
59902            "style" => self.style = Some(value.into()),
59903            "tabindex" => self.tabindex = Some(value.into()),
59904            "title" => self.title = Some(value.into()),
59905            "translate" => self.translate = Some(value.into()),
59906            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
59907            #[cfg(feature = "alloc")]
59908            _ => {
59909                #[allow(clippy::useless_conversion)]
59910                self.extra.insert(name.into(), value.into());
59911            }
59912            #[cfg(not(feature = "alloc"))]
59913            _ => {}
59914        }
59915    }
59916}
59917/// The <strong><code>&lt;dir&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element is used as a container for a directory of files and/or folders, potentially with styles and icons applied by the <a href="/en-US/docs/Glossary/User_agent">user agent</a>. Do not use this obsolete element; instead, you should use the <a href="/en-US/docs/Web/HTML/Element/ul"><code>&lt;ul&gt;</code></a> element for lists, including lists of files.
59918///
59919/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dir>
59920#[deprecated]
59921#[cfg(feature = "alloc")]
59922#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
59923pub struct DirOwned {
59924    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
59925    ///   
59926    pub accesskey: core::option::Option<AttributeValueOwned>,
59927    ///
59928    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
59929    ///     <ul>
59930    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
59931    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
59932    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
59933    ///       <li><code>characters</code>, all letters should default to uppercase</li>
59934    ///     </ul>
59935    ///   
59936    pub autocapitalize: core::option::Option<AttributeValueOwned>,
59937    ///
59938    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
59939    ///   
59940    pub autofocus: core::option::Option<AttributeValueOwned>,
59941    ///
59942    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
59943    ///   
59944    pub class: core::option::Option<AttributeValueOwned>,
59945    ///
59946    ///     <p>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.</p>
59947    ///   
59948    pub compact: core::option::Option<AttributeValueOwned>,
59949    ///
59950    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
59951    ///     <ul>
59952    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
59953    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
59954    ///     </ul>
59955    ///   
59956    pub contenteditable: core::option::Option<AttributeValueOwned>,
59957    ///
59958    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
59959    ///   
59960    pub contextmenu: core::option::Option<AttributeValueOwned>,
59961    ///
59962    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
59963    ///   
59964    #[cfg(feature = "alloc")]
59965    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
59966    ///
59967    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
59968    ///     <ul>
59969    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
59970    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
59971    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
59972    ///     </ul>
59973    ///   
59974    pub dir: core::option::Option<AttributeValueOwned>,
59975    ///
59976    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
59977    ///     <ul>
59978    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
59979    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
59980    ///     </ul>
59981    ///   
59982    pub draggable: core::option::Option<AttributeValueOwned>,
59983    ///
59984    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
59985    ///   
59986    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
59987    ///
59988    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
59989    ///   
59990    pub exportparts: core::option::Option<AttributeValueOwned>,
59991    /// /// Extra attributes of the element.
59992
59993    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
59994    #[cfg(feature = "alloc")]
59995    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
59996    ///
59997    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
59998    ///   
59999    pub hidden: core::option::Option<AttributeValueOwned>,
60000    ///
60001    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
60002    ///   
60003    pub id: core::option::Option<AttributeValueOwned>,
60004    ///
60005    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
60006    ///   
60007    pub inert: core::option::Option<AttributeValueOwned>,
60008    ///
60009    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
60010    ///   
60011    pub inputmode: core::option::Option<AttributeValueOwned>,
60012    ///
60013    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
60014    ///   
60015    pub is: core::option::Option<AttributeValueOwned>,
60016    ///
60017    ///     <p>The unique, global identifier of an item.</p>
60018    ///   
60019    pub itemid: core::option::Option<AttributeValueOwned>,
60020    ///
60021    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
60022    ///   
60023    pub itemprop: core::option::Option<AttributeValueOwned>,
60024    ///
60025    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
60026    ///   
60027    pub itemref: core::option::Option<AttributeValueOwned>,
60028    ///
60029    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
60030    ///   
60031    pub itemscope: core::option::Option<AttributeValueOwned>,
60032    ///
60033    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
60034    ///   
60035    pub itemtype: core::option::Option<AttributeValueOwned>,
60036    ///
60037    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
60038    ///   
60039    pub lang: core::option::Option<AttributeValueOwned>,
60040    ///
60041    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
60042    ///   
60043    pub nonce: core::option::Option<AttributeValueOwned>,
60044    ///
60045    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
60046    ///   
60047    pub part: core::option::Option<AttributeValueOwned>,
60048    ///
60049    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
60050    ///   
60051    pub popover: core::option::Option<AttributeValueOwned>,
60052    ///
60053    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
60054    ///   
60055    pub role: core::option::Option<AttributeValueOwned>,
60056    ///
60057    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
60058    ///   
60059    pub slot: core::option::Option<AttributeValueOwned>,
60060    ///
60061    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
60062    ///     <ul>
60063    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
60064    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
60065    ///     </ul>
60066    ///   
60067    pub spellcheck: core::option::Option<AttributeValueOwned>,
60068    ///
60069    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
60070    ///   
60071    pub style: core::option::Option<AttributeValueOwned>,
60072    ///
60073    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
60074    ///     <ul>
60075    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
60076    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
60077    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
60078    ///     </ul>
60079    ///   
60080    pub tabindex: core::option::Option<AttributeValueOwned>,
60081    ///
60082    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
60083    ///   
60084    pub title: core::option::Option<AttributeValueOwned>,
60085    ///
60086    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
60087    ///     <ul>
60088    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
60089    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
60090    ///     </ul>
60091    ///   
60092    pub translate: core::option::Option<AttributeValueOwned>,
60093    ///
60094    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
60095    ///     <ul>
60096    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
60097    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
60098    ///     </ul>
60099    ///   
60100    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
60101}
60102#[allow(deprecated)]
60103#[cfg(feature = "alloc")]
60104impl DirOwned {
60105    /// Get the tag name of the element.
60106    /// This is the same as the name of the struct, in kebab-case.
60107    pub fn tag() -> &'static str {
60108        "dir"
60109    }
60110    /// Sets an attribute of the element.
60111    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
60112    /// If the `alloc` feature is disabled, this function will silently fail.
60113    ///
60114    /// # Note
60115    /// This only works when the attribute is lowercase.
60116    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
60117        match name {
60118            "accesskey" => self.accesskey = Some(value.into()),
60119            "autocapitalize" => self.autocapitalize = Some(value.into()),
60120            "autofocus" => self.autofocus = Some(value.into()),
60121            "class" => self.class = Some(value.into()),
60122            "compact" => self.compact = Some(value.into()),
60123            "contenteditable" => self.contenteditable = Some(value.into()),
60124            "contextmenu" => self.contextmenu = Some(value.into()),
60125            "dir" => self.dir = Some(value.into()),
60126            "draggable" => self.draggable = Some(value.into()),
60127            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
60128            "exportparts" => self.exportparts = Some(value.into()),
60129            "hidden" => self.hidden = Some(value.into()),
60130            "id" => self.id = Some(value.into()),
60131            "inert" => self.inert = Some(value.into()),
60132            "inputmode" => self.inputmode = Some(value.into()),
60133            "is" => self.is = Some(value.into()),
60134            "itemid" => self.itemid = Some(value.into()),
60135            "itemprop" => self.itemprop = Some(value.into()),
60136            "itemref" => self.itemref = Some(value.into()),
60137            "itemscope" => self.itemscope = Some(value.into()),
60138            "itemtype" => self.itemtype = Some(value.into()),
60139            "lang" => self.lang = Some(value.into()),
60140            "nonce" => self.nonce = Some(value.into()),
60141            "part" => self.part = Some(value.into()),
60142            "popover" => self.popover = Some(value.into()),
60143            "role" => self.role = Some(value.into()),
60144            "slot" => self.slot = Some(value.into()),
60145            "spellcheck" => self.spellcheck = Some(value.into()),
60146            "style" => self.style = Some(value.into()),
60147            "tabindex" => self.tabindex = Some(value.into()),
60148            "title" => self.title = Some(value.into()),
60149            "translate" => self.translate = Some(value.into()),
60150            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
60151            #[cfg(feature = "alloc")]
60152            _ => {
60153                #[allow(clippy::useless_conversion)]
60154                self.extra.insert(name.into(), value.into());
60155            }
60156            #[cfg(not(feature = "alloc"))]
60157            _ => {}
60158        }
60159    }
60160}
60161/// The <strong><code>&lt;font&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element defines the font size, color and face for its content.
60162///
60163/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/font>
60164#[deprecated]
60165#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
60166pub struct Font<'life> {
60167    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
60168    ///   
60169    pub accesskey: core::option::Option<AttributeValue<'life>>,
60170    ///
60171    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
60172    ///     <ul>
60173    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
60174    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
60175    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
60176    ///       <li><code>characters</code>, all letters should default to uppercase</li>
60177    ///     </ul>
60178    ///   
60179    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
60180    ///
60181    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
60182    ///   
60183    pub autofocus: core::option::Option<AttributeValue<'life>>,
60184    ///
60185    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
60186    ///   
60187    pub class: core::option::Option<AttributeValue<'life>>,
60188    ///
60189    ///     <p>This attribute sets the text color using either a named color or a color specified in the hexadecimal #RRGGBB format.</p>
60190    ///   
60191    pub color: core::option::Option<AttributeValue<'life>>,
60192    ///
60193    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
60194    ///     <ul>
60195    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
60196    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
60197    ///     </ul>
60198    ///   
60199    pub contenteditable: core::option::Option<AttributeValue<'life>>,
60200    ///
60201    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
60202    ///   
60203    pub contextmenu: core::option::Option<AttributeValue<'life>>,
60204    ///
60205    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
60206    ///   
60207    #[cfg(feature = "alloc")]
60208    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
60209    ///
60210    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
60211    ///     <ul>
60212    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
60213    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
60214    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
60215    ///     </ul>
60216    ///   
60217    pub dir: core::option::Option<AttributeValue<'life>>,
60218    ///
60219    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
60220    ///     <ul>
60221    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
60222    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
60223    ///     </ul>
60224    ///   
60225    pub draggable: core::option::Option<AttributeValue<'life>>,
60226    ///
60227    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
60228    ///   
60229    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
60230    ///
60231    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
60232    ///   
60233    pub exportparts: core::option::Option<AttributeValue<'life>>,
60234    /// /// Extra attributes of the element.
60235
60236    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
60237    #[cfg(feature = "alloc")]
60238    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
60239    ///
60240    ///     <p>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.</p>
60241    ///   
60242    pub face: core::option::Option<AttributeValue<'life>>,
60243    ///
60244    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
60245    ///   
60246    pub hidden: core::option::Option<AttributeValue<'life>>,
60247    ///
60248    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
60249    ///   
60250    pub id: core::option::Option<AttributeValue<'life>>,
60251    ///
60252    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
60253    ///   
60254    pub inert: core::option::Option<AttributeValue<'life>>,
60255    ///
60256    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
60257    ///   
60258    pub inputmode: core::option::Option<AttributeValue<'life>>,
60259    ///
60260    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
60261    ///   
60262    pub is: core::option::Option<AttributeValue<'life>>,
60263    ///
60264    ///     <p>The unique, global identifier of an item.</p>
60265    ///   
60266    pub itemid: core::option::Option<AttributeValue<'life>>,
60267    ///
60268    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
60269    ///   
60270    pub itemprop: core::option::Option<AttributeValue<'life>>,
60271    ///
60272    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
60273    ///   
60274    pub itemref: core::option::Option<AttributeValue<'life>>,
60275    ///
60276    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
60277    ///   
60278    pub itemscope: core::option::Option<AttributeValue<'life>>,
60279    ///
60280    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
60281    ///   
60282    pub itemtype: core::option::Option<AttributeValue<'life>>,
60283    ///
60284    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
60285    ///   
60286    pub lang: core::option::Option<AttributeValue<'life>>,
60287    ///
60288    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
60289    ///   
60290    pub nonce: core::option::Option<AttributeValue<'life>>,
60291    ///
60292    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
60293    ///   
60294    pub part: core::option::Option<AttributeValue<'life>>,
60295    ///
60296    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
60297    ///   
60298    pub popover: core::option::Option<AttributeValue<'life>>,
60299    ///
60300    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
60301    ///   
60302    pub role: core::option::Option<AttributeValue<'life>>,
60303    ///
60304    ///     <p>This attribute specifies the font size as either a numeric or relative value. Numeric values range from <code>1</code> to <code>7</code> with <code>1</code> being the smallest and <code>3</code> the default. It can be defined using a relative value, like <code>+2</code> or <code>-3</code>, which sets it relative to <code>3</code>, the default value.</p>
60305    ///   
60306    pub size: core::option::Option<AttributeValue<'life>>,
60307    ///
60308    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
60309    ///   
60310    pub slot: core::option::Option<AttributeValue<'life>>,
60311    ///
60312    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
60313    ///     <ul>
60314    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
60315    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
60316    ///     </ul>
60317    ///   
60318    pub spellcheck: core::option::Option<AttributeValue<'life>>,
60319    ///
60320    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
60321    ///   
60322    pub style: core::option::Option<AttributeValue<'life>>,
60323    ///
60324    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
60325    ///     <ul>
60326    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
60327    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
60328    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
60329    ///     </ul>
60330    ///   
60331    pub tabindex: core::option::Option<AttributeValue<'life>>,
60332    ///
60333    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
60334    ///   
60335    pub title: core::option::Option<AttributeValue<'life>>,
60336    ///
60337    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
60338    ///     <ul>
60339    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
60340    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
60341    ///     </ul>
60342    ///   
60343    pub translate: core::option::Option<AttributeValue<'life>>,
60344    ///
60345    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
60346    ///     <ul>
60347    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
60348    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
60349    ///     </ul>
60350    ///   
60351    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
60352}
60353#[allow(deprecated)]
60354
60355impl<'life> Font<'life> {
60356    /// Get the tag name of the element.
60357    /// This is the same as the name of the struct, in kebab-case.
60358    pub fn tag() -> &'static str {
60359        "font"
60360    }
60361    /// Sets an attribute of the element.
60362    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
60363    /// If the `alloc` feature is disabled, this function will silently fail.
60364    ///
60365    /// # Note
60366    /// This only works when the attribute is lowercase.
60367    pub fn set_attr(
60368        &mut self,
60369        name: &'life str,
60370        value: impl core::convert::Into<AttributeValue<'life>>,
60371    ) {
60372        match name {
60373            "accesskey" => self.accesskey = Some(value.into()),
60374            "autocapitalize" => self.autocapitalize = Some(value.into()),
60375            "autofocus" => self.autofocus = Some(value.into()),
60376            "class" => self.class = Some(value.into()),
60377            "color" => self.color = Some(value.into()),
60378            "contenteditable" => self.contenteditable = Some(value.into()),
60379            "contextmenu" => self.contextmenu = Some(value.into()),
60380            "dir" => self.dir = Some(value.into()),
60381            "draggable" => self.draggable = Some(value.into()),
60382            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
60383            "exportparts" => self.exportparts = Some(value.into()),
60384            "face" => self.face = Some(value.into()),
60385            "hidden" => self.hidden = Some(value.into()),
60386            "id" => self.id = Some(value.into()),
60387            "inert" => self.inert = Some(value.into()),
60388            "inputmode" => self.inputmode = Some(value.into()),
60389            "is" => self.is = Some(value.into()),
60390            "itemid" => self.itemid = Some(value.into()),
60391            "itemprop" => self.itemprop = Some(value.into()),
60392            "itemref" => self.itemref = Some(value.into()),
60393            "itemscope" => self.itemscope = Some(value.into()),
60394            "itemtype" => self.itemtype = Some(value.into()),
60395            "lang" => self.lang = Some(value.into()),
60396            "nonce" => self.nonce = Some(value.into()),
60397            "part" => self.part = Some(value.into()),
60398            "popover" => self.popover = Some(value.into()),
60399            "role" => self.role = Some(value.into()),
60400            "size" => self.size = Some(value.into()),
60401            "slot" => self.slot = Some(value.into()),
60402            "spellcheck" => self.spellcheck = Some(value.into()),
60403            "style" => self.style = Some(value.into()),
60404            "tabindex" => self.tabindex = Some(value.into()),
60405            "title" => self.title = Some(value.into()),
60406            "translate" => self.translate = Some(value.into()),
60407            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
60408            #[cfg(feature = "alloc")]
60409            _ => {
60410                #[allow(clippy::useless_conversion)]
60411                self.extra.insert(name.into(), value.into());
60412            }
60413            #[cfg(not(feature = "alloc"))]
60414            _ => {}
60415        }
60416    }
60417}
60418/// The <strong><code>&lt;font&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element defines the font size, color and face for its content.
60419///
60420/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/font>
60421#[deprecated]
60422#[cfg(feature = "alloc")]
60423#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
60424pub struct FontOwned {
60425    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
60426    ///   
60427    pub accesskey: core::option::Option<AttributeValueOwned>,
60428    ///
60429    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
60430    ///     <ul>
60431    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
60432    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
60433    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
60434    ///       <li><code>characters</code>, all letters should default to uppercase</li>
60435    ///     </ul>
60436    ///   
60437    pub autocapitalize: core::option::Option<AttributeValueOwned>,
60438    ///
60439    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
60440    ///   
60441    pub autofocus: core::option::Option<AttributeValueOwned>,
60442    ///
60443    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
60444    ///   
60445    pub class: core::option::Option<AttributeValueOwned>,
60446    ///
60447    ///     <p>This attribute sets the text color using either a named color or a color specified in the hexadecimal #RRGGBB format.</p>
60448    ///   
60449    pub color: core::option::Option<AttributeValueOwned>,
60450    ///
60451    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
60452    ///     <ul>
60453    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
60454    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
60455    ///     </ul>
60456    ///   
60457    pub contenteditable: core::option::Option<AttributeValueOwned>,
60458    ///
60459    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
60460    ///   
60461    pub contextmenu: core::option::Option<AttributeValueOwned>,
60462    ///
60463    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
60464    ///   
60465    #[cfg(feature = "alloc")]
60466    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
60467    ///
60468    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
60469    ///     <ul>
60470    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
60471    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
60472    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
60473    ///     </ul>
60474    ///   
60475    pub dir: core::option::Option<AttributeValueOwned>,
60476    ///
60477    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
60478    ///     <ul>
60479    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
60480    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
60481    ///     </ul>
60482    ///   
60483    pub draggable: core::option::Option<AttributeValueOwned>,
60484    ///
60485    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
60486    ///   
60487    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
60488    ///
60489    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
60490    ///   
60491    pub exportparts: core::option::Option<AttributeValueOwned>,
60492    /// /// Extra attributes of the element.
60493
60494    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
60495    #[cfg(feature = "alloc")]
60496    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
60497    ///
60498    ///     <p>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.</p>
60499    ///   
60500    pub face: core::option::Option<AttributeValueOwned>,
60501    ///
60502    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
60503    ///   
60504    pub hidden: core::option::Option<AttributeValueOwned>,
60505    ///
60506    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
60507    ///   
60508    pub id: core::option::Option<AttributeValueOwned>,
60509    ///
60510    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
60511    ///   
60512    pub inert: core::option::Option<AttributeValueOwned>,
60513    ///
60514    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
60515    ///   
60516    pub inputmode: core::option::Option<AttributeValueOwned>,
60517    ///
60518    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
60519    ///   
60520    pub is: core::option::Option<AttributeValueOwned>,
60521    ///
60522    ///     <p>The unique, global identifier of an item.</p>
60523    ///   
60524    pub itemid: core::option::Option<AttributeValueOwned>,
60525    ///
60526    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
60527    ///   
60528    pub itemprop: core::option::Option<AttributeValueOwned>,
60529    ///
60530    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
60531    ///   
60532    pub itemref: core::option::Option<AttributeValueOwned>,
60533    ///
60534    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
60535    ///   
60536    pub itemscope: core::option::Option<AttributeValueOwned>,
60537    ///
60538    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
60539    ///   
60540    pub itemtype: core::option::Option<AttributeValueOwned>,
60541    ///
60542    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
60543    ///   
60544    pub lang: core::option::Option<AttributeValueOwned>,
60545    ///
60546    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
60547    ///   
60548    pub nonce: core::option::Option<AttributeValueOwned>,
60549    ///
60550    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
60551    ///   
60552    pub part: core::option::Option<AttributeValueOwned>,
60553    ///
60554    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
60555    ///   
60556    pub popover: core::option::Option<AttributeValueOwned>,
60557    ///
60558    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
60559    ///   
60560    pub role: core::option::Option<AttributeValueOwned>,
60561    ///
60562    ///     <p>This attribute specifies the font size as either a numeric or relative value. Numeric values range from <code>1</code> to <code>7</code> with <code>1</code> being the smallest and <code>3</code> the default. It can be defined using a relative value, like <code>+2</code> or <code>-3</code>, which sets it relative to <code>3</code>, the default value.</p>
60563    ///   
60564    pub size: core::option::Option<AttributeValueOwned>,
60565    ///
60566    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
60567    ///   
60568    pub slot: core::option::Option<AttributeValueOwned>,
60569    ///
60570    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
60571    ///     <ul>
60572    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
60573    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
60574    ///     </ul>
60575    ///   
60576    pub spellcheck: core::option::Option<AttributeValueOwned>,
60577    ///
60578    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
60579    ///   
60580    pub style: core::option::Option<AttributeValueOwned>,
60581    ///
60582    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
60583    ///     <ul>
60584    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
60585    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
60586    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
60587    ///     </ul>
60588    ///   
60589    pub tabindex: core::option::Option<AttributeValueOwned>,
60590    ///
60591    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
60592    ///   
60593    pub title: core::option::Option<AttributeValueOwned>,
60594    ///
60595    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
60596    ///     <ul>
60597    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
60598    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
60599    ///     </ul>
60600    ///   
60601    pub translate: core::option::Option<AttributeValueOwned>,
60602    ///
60603    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
60604    ///     <ul>
60605    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
60606    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
60607    ///     </ul>
60608    ///   
60609    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
60610}
60611#[allow(deprecated)]
60612#[cfg(feature = "alloc")]
60613impl FontOwned {
60614    /// Get the tag name of the element.
60615    /// This is the same as the name of the struct, in kebab-case.
60616    pub fn tag() -> &'static str {
60617        "font"
60618    }
60619    /// Sets an attribute of the element.
60620    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
60621    /// If the `alloc` feature is disabled, this function will silently fail.
60622    ///
60623    /// # Note
60624    /// This only works when the attribute is lowercase.
60625    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
60626        match name {
60627            "accesskey" => self.accesskey = Some(value.into()),
60628            "autocapitalize" => self.autocapitalize = Some(value.into()),
60629            "autofocus" => self.autofocus = Some(value.into()),
60630            "class" => self.class = Some(value.into()),
60631            "color" => self.color = Some(value.into()),
60632            "contenteditable" => self.contenteditable = Some(value.into()),
60633            "contextmenu" => self.contextmenu = Some(value.into()),
60634            "dir" => self.dir = Some(value.into()),
60635            "draggable" => self.draggable = Some(value.into()),
60636            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
60637            "exportparts" => self.exportparts = Some(value.into()),
60638            "face" => self.face = Some(value.into()),
60639            "hidden" => self.hidden = Some(value.into()),
60640            "id" => self.id = Some(value.into()),
60641            "inert" => self.inert = Some(value.into()),
60642            "inputmode" => self.inputmode = Some(value.into()),
60643            "is" => self.is = Some(value.into()),
60644            "itemid" => self.itemid = Some(value.into()),
60645            "itemprop" => self.itemprop = Some(value.into()),
60646            "itemref" => self.itemref = Some(value.into()),
60647            "itemscope" => self.itemscope = Some(value.into()),
60648            "itemtype" => self.itemtype = Some(value.into()),
60649            "lang" => self.lang = Some(value.into()),
60650            "nonce" => self.nonce = Some(value.into()),
60651            "part" => self.part = Some(value.into()),
60652            "popover" => self.popover = Some(value.into()),
60653            "role" => self.role = Some(value.into()),
60654            "size" => self.size = Some(value.into()),
60655            "slot" => self.slot = Some(value.into()),
60656            "spellcheck" => self.spellcheck = Some(value.into()),
60657            "style" => self.style = Some(value.into()),
60658            "tabindex" => self.tabindex = Some(value.into()),
60659            "title" => self.title = Some(value.into()),
60660            "translate" => self.translate = Some(value.into()),
60661            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
60662            #[cfg(feature = "alloc")]
60663            _ => {
60664                #[allow(clippy::useless_conversion)]
60665                self.extra.insert(name.into(), value.into());
60666            }
60667            #[cfg(not(feature = "alloc"))]
60668            _ => {}
60669        }
60670    }
60671}
60672/// The <strong><code>&lt;frame&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element defines a particular area in which another HTML document can be displayed. A frame should be used within a <a href="/en-US/docs/Web/HTML/Element/frameset"><code>&lt;frameset&gt;</code></a>.
60673///
60674/// Using the <code>&lt;frame&gt;</code> element is not encouraged because of certain disadvantages such as performance problems and lack of accessibility for users with screen readers. Instead of the <code>&lt;frame&gt;</code> element, <a href="/en-US/docs/Web/HTML/Element/iframe"><code>&lt;iframe&gt;</code></a> may be preferred.
60675///
60676/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/frame>
60677#[deprecated]
60678#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
60679pub struct Frame<'life> {
60680    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
60681    ///   
60682    pub accesskey: core::option::Option<AttributeValue<'life>>,
60683    ///
60684    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
60685    ///     <ul>
60686    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
60687    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
60688    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
60689    ///       <li><code>characters</code>, all letters should default to uppercase</li>
60690    ///     </ul>
60691    ///   
60692    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
60693    ///
60694    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
60695    ///   
60696    pub autofocus: core::option::Option<AttributeValue<'life>>,
60697    ///
60698    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
60699    ///   
60700    pub class: core::option::Option<AttributeValue<'life>>,
60701    ///
60702    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
60703    ///     <ul>
60704    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
60705    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
60706    ///     </ul>
60707    ///   
60708    pub contenteditable: core::option::Option<AttributeValue<'life>>,
60709    ///
60710    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
60711    ///   
60712    pub contextmenu: core::option::Option<AttributeValue<'life>>,
60713    ///
60714    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
60715    ///   
60716    #[cfg(feature = "alloc")]
60717    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
60718    ///
60719    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
60720    ///     <ul>
60721    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
60722    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
60723    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
60724    ///     </ul>
60725    ///   
60726    pub dir: core::option::Option<AttributeValue<'life>>,
60727    ///
60728    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
60729    ///     <ul>
60730    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
60731    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
60732    ///     </ul>
60733    ///   
60734    pub draggable: core::option::Option<AttributeValue<'life>>,
60735    ///
60736    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
60737    ///   
60738    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
60739    ///
60740    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
60741    ///   
60742    pub exportparts: core::option::Option<AttributeValue<'life>>,
60743    /// /// Extra attributes of the element.
60744
60745    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
60746    #[cfg(feature = "alloc")]
60747    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
60748    ///
60749    ///     <p>This attribute allows you to specify a frame's border.</p>
60750    ///   
60751    pub frameborder: core::option::Option<AttributeValue<'life>>,
60752    ///
60753    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
60754    ///   
60755    pub hidden: core::option::Option<AttributeValue<'life>>,
60756    ///
60757    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
60758    ///   
60759    pub id: core::option::Option<AttributeValue<'life>>,
60760    ///
60761    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
60762    ///   
60763    pub inert: core::option::Option<AttributeValue<'life>>,
60764    ///
60765    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
60766    ///   
60767    pub inputmode: core::option::Option<AttributeValue<'life>>,
60768    ///
60769    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
60770    ///   
60771    pub is: core::option::Option<AttributeValue<'life>>,
60772    ///
60773    ///     <p>The unique, global identifier of an item.</p>
60774    ///   
60775    pub itemid: core::option::Option<AttributeValue<'life>>,
60776    ///
60777    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
60778    ///   
60779    pub itemprop: core::option::Option<AttributeValue<'life>>,
60780    ///
60781    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
60782    ///   
60783    pub itemref: core::option::Option<AttributeValue<'life>>,
60784    ///
60785    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
60786    ///   
60787    pub itemscope: core::option::Option<AttributeValue<'life>>,
60788    ///
60789    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
60790    ///   
60791    pub itemtype: core::option::Option<AttributeValue<'life>>,
60792    ///
60793    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
60794    ///   
60795    pub lang: core::option::Option<AttributeValue<'life>>,
60796    ///
60797    ///     <p>This attribute defines the height of the margin between frames.</p>
60798    ///   
60799    pub marginheight: core::option::Option<AttributeValue<'life>>,
60800    ///
60801    ///     <p>This attribute defines the width of the margin between frames.</p>
60802    ///   
60803    pub marginwidth: core::option::Option<AttributeValue<'life>>,
60804    ///
60805    ///     <p>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 <a href="/en-US/docs/Web/HTML/Element/a#target"><code>target</code></a> attribute for more information.</p>
60806    ///   
60807    pub name: core::option::Option<AttributeValue<'life>>,
60808    ///
60809    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
60810    ///   
60811    pub nonce: core::option::Option<AttributeValue<'life>>,
60812    ///
60813    ///     <p>This attribute prevents resizing of frames by users.</p>
60814    ///   
60815    pub noresize: core::option::Option<AttributeValue<'life>>,
60816    ///
60817    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
60818    ///   
60819    pub part: core::option::Option<AttributeValue<'life>>,
60820    ///
60821    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
60822    ///   
60823    pub popover: core::option::Option<AttributeValue<'life>>,
60824    ///
60825    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
60826    ///   
60827    pub role: core::option::Option<AttributeValue<'life>>,
60828    ///
60829    ///     <p>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 <em>is</em> necessary.</p>
60830    ///   
60831    pub scrolling: core::option::Option<AttributeValue<'life>>,
60832    ///
60833    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
60834    ///   
60835    pub slot: core::option::Option<AttributeValue<'life>>,
60836    ///
60837    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
60838    ///     <ul>
60839    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
60840    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
60841    ///     </ul>
60842    ///   
60843    pub spellcheck: core::option::Option<AttributeValue<'life>>,
60844    ///
60845    ///     <p>This attribute specifies the document that will be displayed by the frame.</p>
60846    ///   
60847    pub src: core::option::Option<AttributeValue<'life>>,
60848    ///
60849    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
60850    ///   
60851    pub style: core::option::Option<AttributeValue<'life>>,
60852    ///
60853    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
60854    ///     <ul>
60855    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
60856    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
60857    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
60858    ///     </ul>
60859    ///   
60860    pub tabindex: core::option::Option<AttributeValue<'life>>,
60861    ///
60862    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
60863    ///   
60864    pub title: core::option::Option<AttributeValue<'life>>,
60865    ///
60866    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
60867    ///     <ul>
60868    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
60869    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
60870    ///     </ul>
60871    ///   
60872    pub translate: core::option::Option<AttributeValue<'life>>,
60873    ///
60874    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
60875    ///     <ul>
60876    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
60877    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
60878    ///     </ul>
60879    ///   
60880    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
60881}
60882#[allow(deprecated)]
60883
60884impl<'life> Frame<'life> {
60885    /// Get the tag name of the element.
60886    /// This is the same as the name of the struct, in kebab-case.
60887    pub fn tag() -> &'static str {
60888        "frame"
60889    }
60890    /// Sets an attribute of the element.
60891    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
60892    /// If the `alloc` feature is disabled, this function will silently fail.
60893    ///
60894    /// # Note
60895    /// This only works when the attribute is lowercase.
60896    pub fn set_attr(
60897        &mut self,
60898        name: &'life str,
60899        value: impl core::convert::Into<AttributeValue<'life>>,
60900    ) {
60901        match name {
60902            "accesskey" => self.accesskey = Some(value.into()),
60903            "autocapitalize" => self.autocapitalize = Some(value.into()),
60904            "autofocus" => self.autofocus = Some(value.into()),
60905            "class" => self.class = Some(value.into()),
60906            "contenteditable" => self.contenteditable = Some(value.into()),
60907            "contextmenu" => self.contextmenu = Some(value.into()),
60908            "dir" => self.dir = Some(value.into()),
60909            "draggable" => self.draggable = Some(value.into()),
60910            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
60911            "exportparts" => self.exportparts = Some(value.into()),
60912            "frameborder" => self.frameborder = Some(value.into()),
60913            "hidden" => self.hidden = Some(value.into()),
60914            "id" => self.id = Some(value.into()),
60915            "inert" => self.inert = Some(value.into()),
60916            "inputmode" => self.inputmode = Some(value.into()),
60917            "is" => self.is = Some(value.into()),
60918            "itemid" => self.itemid = Some(value.into()),
60919            "itemprop" => self.itemprop = Some(value.into()),
60920            "itemref" => self.itemref = Some(value.into()),
60921            "itemscope" => self.itemscope = Some(value.into()),
60922            "itemtype" => self.itemtype = Some(value.into()),
60923            "lang" => self.lang = Some(value.into()),
60924            "marginheight" => self.marginheight = Some(value.into()),
60925            "marginwidth" => self.marginwidth = Some(value.into()),
60926            "name" => self.name = Some(value.into()),
60927            "nonce" => self.nonce = Some(value.into()),
60928            "noresize" => self.noresize = Some(value.into()),
60929            "part" => self.part = Some(value.into()),
60930            "popover" => self.popover = Some(value.into()),
60931            "role" => self.role = Some(value.into()),
60932            "scrolling" => self.scrolling = Some(value.into()),
60933            "slot" => self.slot = Some(value.into()),
60934            "spellcheck" => self.spellcheck = Some(value.into()),
60935            "src" => self.src = Some(value.into()),
60936            "style" => self.style = Some(value.into()),
60937            "tabindex" => self.tabindex = Some(value.into()),
60938            "title" => self.title = Some(value.into()),
60939            "translate" => self.translate = Some(value.into()),
60940            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
60941            #[cfg(feature = "alloc")]
60942            _ => {
60943                #[allow(clippy::useless_conversion)]
60944                self.extra.insert(name.into(), value.into());
60945            }
60946            #[cfg(not(feature = "alloc"))]
60947            _ => {}
60948        }
60949    }
60950}
60951/// The <strong><code>&lt;frame&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element defines a particular area in which another HTML document can be displayed. A frame should be used within a <a href="/en-US/docs/Web/HTML/Element/frameset"><code>&lt;frameset&gt;</code></a>.
60952///
60953/// Using the <code>&lt;frame&gt;</code> element is not encouraged because of certain disadvantages such as performance problems and lack of accessibility for users with screen readers. Instead of the <code>&lt;frame&gt;</code> element, <a href="/en-US/docs/Web/HTML/Element/iframe"><code>&lt;iframe&gt;</code></a> may be preferred.
60954///
60955/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/frame>
60956#[deprecated]
60957#[cfg(feature = "alloc")]
60958#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
60959pub struct FrameOwned {
60960    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
60961    ///   
60962    pub accesskey: core::option::Option<AttributeValueOwned>,
60963    ///
60964    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
60965    ///     <ul>
60966    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
60967    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
60968    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
60969    ///       <li><code>characters</code>, all letters should default to uppercase</li>
60970    ///     </ul>
60971    ///   
60972    pub autocapitalize: core::option::Option<AttributeValueOwned>,
60973    ///
60974    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
60975    ///   
60976    pub autofocus: core::option::Option<AttributeValueOwned>,
60977    ///
60978    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
60979    ///   
60980    pub class: core::option::Option<AttributeValueOwned>,
60981    ///
60982    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
60983    ///     <ul>
60984    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
60985    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
60986    ///     </ul>
60987    ///   
60988    pub contenteditable: core::option::Option<AttributeValueOwned>,
60989    ///
60990    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
60991    ///   
60992    pub contextmenu: core::option::Option<AttributeValueOwned>,
60993    ///
60994    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
60995    ///   
60996    #[cfg(feature = "alloc")]
60997    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
60998    ///
60999    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
61000    ///     <ul>
61001    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
61002    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
61003    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
61004    ///     </ul>
61005    ///   
61006    pub dir: core::option::Option<AttributeValueOwned>,
61007    ///
61008    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
61009    ///     <ul>
61010    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
61011    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
61012    ///     </ul>
61013    ///   
61014    pub draggable: core::option::Option<AttributeValueOwned>,
61015    ///
61016    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
61017    ///   
61018    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
61019    ///
61020    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
61021    ///   
61022    pub exportparts: core::option::Option<AttributeValueOwned>,
61023    /// /// Extra attributes of the element.
61024
61025    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
61026    #[cfg(feature = "alloc")]
61027    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
61028    ///
61029    ///     <p>This attribute allows you to specify a frame's border.</p>
61030    ///   
61031    pub frameborder: core::option::Option<AttributeValueOwned>,
61032    ///
61033    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
61034    ///   
61035    pub hidden: core::option::Option<AttributeValueOwned>,
61036    ///
61037    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
61038    ///   
61039    pub id: core::option::Option<AttributeValueOwned>,
61040    ///
61041    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
61042    ///   
61043    pub inert: core::option::Option<AttributeValueOwned>,
61044    ///
61045    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
61046    ///   
61047    pub inputmode: core::option::Option<AttributeValueOwned>,
61048    ///
61049    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
61050    ///   
61051    pub is: core::option::Option<AttributeValueOwned>,
61052    ///
61053    ///     <p>The unique, global identifier of an item.</p>
61054    ///   
61055    pub itemid: core::option::Option<AttributeValueOwned>,
61056    ///
61057    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
61058    ///   
61059    pub itemprop: core::option::Option<AttributeValueOwned>,
61060    ///
61061    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
61062    ///   
61063    pub itemref: core::option::Option<AttributeValueOwned>,
61064    ///
61065    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
61066    ///   
61067    pub itemscope: core::option::Option<AttributeValueOwned>,
61068    ///
61069    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
61070    ///   
61071    pub itemtype: core::option::Option<AttributeValueOwned>,
61072    ///
61073    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
61074    ///   
61075    pub lang: core::option::Option<AttributeValueOwned>,
61076    ///
61077    ///     <p>This attribute defines the height of the margin between frames.</p>
61078    ///   
61079    pub marginheight: core::option::Option<AttributeValueOwned>,
61080    ///
61081    ///     <p>This attribute defines the width of the margin between frames.</p>
61082    ///   
61083    pub marginwidth: core::option::Option<AttributeValueOwned>,
61084    ///
61085    ///     <p>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 <a href="/en-US/docs/Web/HTML/Element/a#target"><code>target</code></a> attribute for more information.</p>
61086    ///   
61087    pub name: core::option::Option<AttributeValueOwned>,
61088    ///
61089    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
61090    ///   
61091    pub nonce: core::option::Option<AttributeValueOwned>,
61092    ///
61093    ///     <p>This attribute prevents resizing of frames by users.</p>
61094    ///   
61095    pub noresize: core::option::Option<AttributeValueOwned>,
61096    ///
61097    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
61098    ///   
61099    pub part: core::option::Option<AttributeValueOwned>,
61100    ///
61101    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
61102    ///   
61103    pub popover: core::option::Option<AttributeValueOwned>,
61104    ///
61105    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
61106    ///   
61107    pub role: core::option::Option<AttributeValueOwned>,
61108    ///
61109    ///     <p>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 <em>is</em> necessary.</p>
61110    ///   
61111    pub scrolling: core::option::Option<AttributeValueOwned>,
61112    ///
61113    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
61114    ///   
61115    pub slot: core::option::Option<AttributeValueOwned>,
61116    ///
61117    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
61118    ///     <ul>
61119    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
61120    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
61121    ///     </ul>
61122    ///   
61123    pub spellcheck: core::option::Option<AttributeValueOwned>,
61124    ///
61125    ///     <p>This attribute specifies the document that will be displayed by the frame.</p>
61126    ///   
61127    pub src: core::option::Option<AttributeValueOwned>,
61128    ///
61129    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
61130    ///   
61131    pub style: core::option::Option<AttributeValueOwned>,
61132    ///
61133    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
61134    ///     <ul>
61135    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
61136    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
61137    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
61138    ///     </ul>
61139    ///   
61140    pub tabindex: core::option::Option<AttributeValueOwned>,
61141    ///
61142    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
61143    ///   
61144    pub title: core::option::Option<AttributeValueOwned>,
61145    ///
61146    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
61147    ///     <ul>
61148    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
61149    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
61150    ///     </ul>
61151    ///   
61152    pub translate: core::option::Option<AttributeValueOwned>,
61153    ///
61154    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
61155    ///     <ul>
61156    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
61157    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
61158    ///     </ul>
61159    ///   
61160    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
61161}
61162#[allow(deprecated)]
61163#[cfg(feature = "alloc")]
61164impl FrameOwned {
61165    /// Get the tag name of the element.
61166    /// This is the same as the name of the struct, in kebab-case.
61167    pub fn tag() -> &'static str {
61168        "frame"
61169    }
61170    /// Sets an attribute of the element.
61171    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
61172    /// If the `alloc` feature is disabled, this function will silently fail.
61173    ///
61174    /// # Note
61175    /// This only works when the attribute is lowercase.
61176    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
61177        match name {
61178            "accesskey" => self.accesskey = Some(value.into()),
61179            "autocapitalize" => self.autocapitalize = Some(value.into()),
61180            "autofocus" => self.autofocus = Some(value.into()),
61181            "class" => self.class = Some(value.into()),
61182            "contenteditable" => self.contenteditable = Some(value.into()),
61183            "contextmenu" => self.contextmenu = Some(value.into()),
61184            "dir" => self.dir = Some(value.into()),
61185            "draggable" => self.draggable = Some(value.into()),
61186            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
61187            "exportparts" => self.exportparts = Some(value.into()),
61188            "frameborder" => self.frameborder = Some(value.into()),
61189            "hidden" => self.hidden = Some(value.into()),
61190            "id" => self.id = Some(value.into()),
61191            "inert" => self.inert = Some(value.into()),
61192            "inputmode" => self.inputmode = Some(value.into()),
61193            "is" => self.is = Some(value.into()),
61194            "itemid" => self.itemid = Some(value.into()),
61195            "itemprop" => self.itemprop = Some(value.into()),
61196            "itemref" => self.itemref = Some(value.into()),
61197            "itemscope" => self.itemscope = Some(value.into()),
61198            "itemtype" => self.itemtype = Some(value.into()),
61199            "lang" => self.lang = Some(value.into()),
61200            "marginheight" => self.marginheight = Some(value.into()),
61201            "marginwidth" => self.marginwidth = Some(value.into()),
61202            "name" => self.name = Some(value.into()),
61203            "nonce" => self.nonce = Some(value.into()),
61204            "noresize" => self.noresize = Some(value.into()),
61205            "part" => self.part = Some(value.into()),
61206            "popover" => self.popover = Some(value.into()),
61207            "role" => self.role = Some(value.into()),
61208            "scrolling" => self.scrolling = Some(value.into()),
61209            "slot" => self.slot = Some(value.into()),
61210            "spellcheck" => self.spellcheck = Some(value.into()),
61211            "src" => self.src = Some(value.into()),
61212            "style" => self.style = Some(value.into()),
61213            "tabindex" => self.tabindex = Some(value.into()),
61214            "title" => self.title = Some(value.into()),
61215            "translate" => self.translate = Some(value.into()),
61216            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
61217            #[cfg(feature = "alloc")]
61218            _ => {
61219                #[allow(clippy::useless_conversion)]
61220                self.extra.insert(name.into(), value.into());
61221            }
61222            #[cfg(not(feature = "alloc"))]
61223            _ => {}
61224        }
61225    }
61226}
61227/// The <strong><code>&lt;frameset&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element is used to contain <a href="/en-US/docs/Web/HTML/Element/frame"><code>&lt;frame&gt;</code></a> elements.
61228///
61229/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/frameset>
61230#[deprecated]
61231#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
61232pub struct Frameset<'life> {
61233    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
61234    ///   
61235    pub accesskey: core::option::Option<AttributeValue<'life>>,
61236    ///
61237    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
61238    ///     <ul>
61239    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
61240    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
61241    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
61242    ///       <li><code>characters</code>, all letters should default to uppercase</li>
61243    ///     </ul>
61244    ///   
61245    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
61246    ///
61247    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
61248    ///   
61249    pub autofocus: core::option::Option<AttributeValue<'life>>,
61250    ///
61251    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
61252    ///   
61253    pub class: core::option::Option<AttributeValue<'life>>,
61254    ///
61255    ///     <p>This attribute specifies the number and size of horizontal spaces in a frameset.</p>
61256    ///   
61257    pub cols: core::option::Option<AttributeValue<'life>>,
61258    ///
61259    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
61260    ///     <ul>
61261    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
61262    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
61263    ///     </ul>
61264    ///   
61265    pub contenteditable: core::option::Option<AttributeValue<'life>>,
61266    ///
61267    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
61268    ///   
61269    pub contextmenu: core::option::Option<AttributeValue<'life>>,
61270    ///
61271    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
61272    ///   
61273    #[cfg(feature = "alloc")]
61274    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
61275    ///
61276    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
61277    ///     <ul>
61278    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
61279    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
61280    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
61281    ///     </ul>
61282    ///   
61283    pub dir: core::option::Option<AttributeValue<'life>>,
61284    ///
61285    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
61286    ///     <ul>
61287    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
61288    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
61289    ///     </ul>
61290    ///   
61291    pub draggable: core::option::Option<AttributeValue<'life>>,
61292    ///
61293    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
61294    ///   
61295    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
61296    ///
61297    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
61298    ///   
61299    pub exportparts: core::option::Option<AttributeValue<'life>>,
61300    /// /// Extra attributes of the element.
61301
61302    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
61303    #[cfg(feature = "alloc")]
61304    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
61305    ///
61306    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
61307    ///   
61308    pub hidden: core::option::Option<AttributeValue<'life>>,
61309    ///
61310    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
61311    ///   
61312    pub id: core::option::Option<AttributeValue<'life>>,
61313    ///
61314    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
61315    ///   
61316    pub inert: core::option::Option<AttributeValue<'life>>,
61317    ///
61318    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
61319    ///   
61320    pub inputmode: core::option::Option<AttributeValue<'life>>,
61321    ///
61322    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
61323    ///   
61324    pub is: core::option::Option<AttributeValue<'life>>,
61325    ///
61326    ///     <p>The unique, global identifier of an item.</p>
61327    ///   
61328    pub itemid: core::option::Option<AttributeValue<'life>>,
61329    ///
61330    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
61331    ///   
61332    pub itemprop: core::option::Option<AttributeValue<'life>>,
61333    ///
61334    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
61335    ///   
61336    pub itemref: core::option::Option<AttributeValue<'life>>,
61337    ///
61338    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
61339    ///   
61340    pub itemscope: core::option::Option<AttributeValue<'life>>,
61341    ///
61342    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
61343    ///   
61344    pub itemtype: core::option::Option<AttributeValue<'life>>,
61345    ///
61346    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
61347    ///   
61348    pub lang: core::option::Option<AttributeValue<'life>>,
61349    ///
61350    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
61351    ///   
61352    pub nonce: core::option::Option<AttributeValue<'life>>,
61353    ///
61354    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
61355    ///   
61356    pub part: core::option::Option<AttributeValue<'life>>,
61357    ///
61358    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
61359    ///   
61360    pub popover: core::option::Option<AttributeValue<'life>>,
61361    ///
61362    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
61363    ///   
61364    pub role: core::option::Option<AttributeValue<'life>>,
61365    ///
61366    ///     <p>This attribute specifies the number and size of vertical spaces in a frameset.</p>
61367    ///   
61368    pub rows: core::option::Option<AttributeValue<'life>>,
61369    ///
61370    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
61371    ///   
61372    pub slot: core::option::Option<AttributeValue<'life>>,
61373    ///
61374    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
61375    ///     <ul>
61376    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
61377    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
61378    ///     </ul>
61379    ///   
61380    pub spellcheck: core::option::Option<AttributeValue<'life>>,
61381    ///
61382    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
61383    ///   
61384    pub style: core::option::Option<AttributeValue<'life>>,
61385    ///
61386    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
61387    ///     <ul>
61388    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
61389    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
61390    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
61391    ///     </ul>
61392    ///   
61393    pub tabindex: core::option::Option<AttributeValue<'life>>,
61394    ///
61395    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
61396    ///   
61397    pub title: core::option::Option<AttributeValue<'life>>,
61398    ///
61399    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
61400    ///     <ul>
61401    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
61402    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
61403    ///     </ul>
61404    ///   
61405    pub translate: core::option::Option<AttributeValue<'life>>,
61406    ///
61407    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
61408    ///     <ul>
61409    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
61410    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
61411    ///     </ul>
61412    ///   
61413    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
61414}
61415#[allow(deprecated)]
61416
61417impl<'life> Frameset<'life> {
61418    /// Get the tag name of the element.
61419    /// This is the same as the name of the struct, in kebab-case.
61420    pub fn tag() -> &'static str {
61421        "frameset"
61422    }
61423    /// Sets an attribute of the element.
61424    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
61425    /// If the `alloc` feature is disabled, this function will silently fail.
61426    ///
61427    /// # Note
61428    /// This only works when the attribute is lowercase.
61429    pub fn set_attr(
61430        &mut self,
61431        name: &'life str,
61432        value: impl core::convert::Into<AttributeValue<'life>>,
61433    ) {
61434        match name {
61435            "accesskey" => self.accesskey = Some(value.into()),
61436            "autocapitalize" => self.autocapitalize = Some(value.into()),
61437            "autofocus" => self.autofocus = Some(value.into()),
61438            "class" => self.class = Some(value.into()),
61439            "cols" => self.cols = Some(value.into()),
61440            "contenteditable" => self.contenteditable = Some(value.into()),
61441            "contextmenu" => self.contextmenu = Some(value.into()),
61442            "dir" => self.dir = Some(value.into()),
61443            "draggable" => self.draggable = Some(value.into()),
61444            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
61445            "exportparts" => self.exportparts = Some(value.into()),
61446            "hidden" => self.hidden = Some(value.into()),
61447            "id" => self.id = Some(value.into()),
61448            "inert" => self.inert = Some(value.into()),
61449            "inputmode" => self.inputmode = Some(value.into()),
61450            "is" => self.is = Some(value.into()),
61451            "itemid" => self.itemid = Some(value.into()),
61452            "itemprop" => self.itemprop = Some(value.into()),
61453            "itemref" => self.itemref = Some(value.into()),
61454            "itemscope" => self.itemscope = Some(value.into()),
61455            "itemtype" => self.itemtype = Some(value.into()),
61456            "lang" => self.lang = Some(value.into()),
61457            "nonce" => self.nonce = Some(value.into()),
61458            "part" => self.part = Some(value.into()),
61459            "popover" => self.popover = Some(value.into()),
61460            "role" => self.role = Some(value.into()),
61461            "rows" => self.rows = Some(value.into()),
61462            "slot" => self.slot = Some(value.into()),
61463            "spellcheck" => self.spellcheck = Some(value.into()),
61464            "style" => self.style = Some(value.into()),
61465            "tabindex" => self.tabindex = Some(value.into()),
61466            "title" => self.title = Some(value.into()),
61467            "translate" => self.translate = Some(value.into()),
61468            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
61469            #[cfg(feature = "alloc")]
61470            _ => {
61471                #[allow(clippy::useless_conversion)]
61472                self.extra.insert(name.into(), value.into());
61473            }
61474            #[cfg(not(feature = "alloc"))]
61475            _ => {}
61476        }
61477    }
61478}
61479/// The <strong><code>&lt;frameset&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element is used to contain <a href="/en-US/docs/Web/HTML/Element/frame"><code>&lt;frame&gt;</code></a> elements.
61480///
61481/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/frameset>
61482#[deprecated]
61483#[cfg(feature = "alloc")]
61484#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
61485pub struct FramesetOwned {
61486    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
61487    ///   
61488    pub accesskey: core::option::Option<AttributeValueOwned>,
61489    ///
61490    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
61491    ///     <ul>
61492    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
61493    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
61494    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
61495    ///       <li><code>characters</code>, all letters should default to uppercase</li>
61496    ///     </ul>
61497    ///   
61498    pub autocapitalize: core::option::Option<AttributeValueOwned>,
61499    ///
61500    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
61501    ///   
61502    pub autofocus: core::option::Option<AttributeValueOwned>,
61503    ///
61504    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
61505    ///   
61506    pub class: core::option::Option<AttributeValueOwned>,
61507    ///
61508    ///     <p>This attribute specifies the number and size of horizontal spaces in a frameset.</p>
61509    ///   
61510    pub cols: core::option::Option<AttributeValueOwned>,
61511    ///
61512    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
61513    ///     <ul>
61514    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
61515    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
61516    ///     </ul>
61517    ///   
61518    pub contenteditable: core::option::Option<AttributeValueOwned>,
61519    ///
61520    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
61521    ///   
61522    pub contextmenu: core::option::Option<AttributeValueOwned>,
61523    ///
61524    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
61525    ///   
61526    #[cfg(feature = "alloc")]
61527    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
61528    ///
61529    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
61530    ///     <ul>
61531    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
61532    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
61533    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
61534    ///     </ul>
61535    ///   
61536    pub dir: core::option::Option<AttributeValueOwned>,
61537    ///
61538    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
61539    ///     <ul>
61540    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
61541    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
61542    ///     </ul>
61543    ///   
61544    pub draggable: core::option::Option<AttributeValueOwned>,
61545    ///
61546    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
61547    ///   
61548    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
61549    ///
61550    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
61551    ///   
61552    pub exportparts: core::option::Option<AttributeValueOwned>,
61553    /// /// Extra attributes of the element.
61554
61555    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
61556    #[cfg(feature = "alloc")]
61557    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
61558    ///
61559    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
61560    ///   
61561    pub hidden: core::option::Option<AttributeValueOwned>,
61562    ///
61563    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
61564    ///   
61565    pub id: core::option::Option<AttributeValueOwned>,
61566    ///
61567    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
61568    ///   
61569    pub inert: core::option::Option<AttributeValueOwned>,
61570    ///
61571    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
61572    ///   
61573    pub inputmode: core::option::Option<AttributeValueOwned>,
61574    ///
61575    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
61576    ///   
61577    pub is: core::option::Option<AttributeValueOwned>,
61578    ///
61579    ///     <p>The unique, global identifier of an item.</p>
61580    ///   
61581    pub itemid: core::option::Option<AttributeValueOwned>,
61582    ///
61583    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
61584    ///   
61585    pub itemprop: core::option::Option<AttributeValueOwned>,
61586    ///
61587    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
61588    ///   
61589    pub itemref: core::option::Option<AttributeValueOwned>,
61590    ///
61591    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
61592    ///   
61593    pub itemscope: core::option::Option<AttributeValueOwned>,
61594    ///
61595    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
61596    ///   
61597    pub itemtype: core::option::Option<AttributeValueOwned>,
61598    ///
61599    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
61600    ///   
61601    pub lang: core::option::Option<AttributeValueOwned>,
61602    ///
61603    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
61604    ///   
61605    pub nonce: core::option::Option<AttributeValueOwned>,
61606    ///
61607    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
61608    ///   
61609    pub part: core::option::Option<AttributeValueOwned>,
61610    ///
61611    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
61612    ///   
61613    pub popover: core::option::Option<AttributeValueOwned>,
61614    ///
61615    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
61616    ///   
61617    pub role: core::option::Option<AttributeValueOwned>,
61618    ///
61619    ///     <p>This attribute specifies the number and size of vertical spaces in a frameset.</p>
61620    ///   
61621    pub rows: core::option::Option<AttributeValueOwned>,
61622    ///
61623    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
61624    ///   
61625    pub slot: core::option::Option<AttributeValueOwned>,
61626    ///
61627    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
61628    ///     <ul>
61629    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
61630    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
61631    ///     </ul>
61632    ///   
61633    pub spellcheck: core::option::Option<AttributeValueOwned>,
61634    ///
61635    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
61636    ///   
61637    pub style: core::option::Option<AttributeValueOwned>,
61638    ///
61639    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
61640    ///     <ul>
61641    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
61642    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
61643    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
61644    ///     </ul>
61645    ///   
61646    pub tabindex: core::option::Option<AttributeValueOwned>,
61647    ///
61648    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
61649    ///   
61650    pub title: core::option::Option<AttributeValueOwned>,
61651    ///
61652    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
61653    ///     <ul>
61654    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
61655    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
61656    ///     </ul>
61657    ///   
61658    pub translate: core::option::Option<AttributeValueOwned>,
61659    ///
61660    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
61661    ///     <ul>
61662    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
61663    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
61664    ///     </ul>
61665    ///   
61666    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
61667}
61668#[allow(deprecated)]
61669#[cfg(feature = "alloc")]
61670impl FramesetOwned {
61671    /// Get the tag name of the element.
61672    /// This is the same as the name of the struct, in kebab-case.
61673    pub fn tag() -> &'static str {
61674        "frameset"
61675    }
61676    /// Sets an attribute of the element.
61677    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
61678    /// If the `alloc` feature is disabled, this function will silently fail.
61679    ///
61680    /// # Note
61681    /// This only works when the attribute is lowercase.
61682    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
61683        match name {
61684            "accesskey" => self.accesskey = Some(value.into()),
61685            "autocapitalize" => self.autocapitalize = Some(value.into()),
61686            "autofocus" => self.autofocus = Some(value.into()),
61687            "class" => self.class = Some(value.into()),
61688            "cols" => self.cols = Some(value.into()),
61689            "contenteditable" => self.contenteditable = Some(value.into()),
61690            "contextmenu" => self.contextmenu = Some(value.into()),
61691            "dir" => self.dir = Some(value.into()),
61692            "draggable" => self.draggable = Some(value.into()),
61693            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
61694            "exportparts" => self.exportparts = Some(value.into()),
61695            "hidden" => self.hidden = Some(value.into()),
61696            "id" => self.id = Some(value.into()),
61697            "inert" => self.inert = Some(value.into()),
61698            "inputmode" => self.inputmode = Some(value.into()),
61699            "is" => self.is = Some(value.into()),
61700            "itemid" => self.itemid = Some(value.into()),
61701            "itemprop" => self.itemprop = Some(value.into()),
61702            "itemref" => self.itemref = Some(value.into()),
61703            "itemscope" => self.itemscope = Some(value.into()),
61704            "itemtype" => self.itemtype = Some(value.into()),
61705            "lang" => self.lang = Some(value.into()),
61706            "nonce" => self.nonce = Some(value.into()),
61707            "part" => self.part = Some(value.into()),
61708            "popover" => self.popover = Some(value.into()),
61709            "role" => self.role = Some(value.into()),
61710            "rows" => self.rows = Some(value.into()),
61711            "slot" => self.slot = Some(value.into()),
61712            "spellcheck" => self.spellcheck = Some(value.into()),
61713            "style" => self.style = Some(value.into()),
61714            "tabindex" => self.tabindex = Some(value.into()),
61715            "title" => self.title = Some(value.into()),
61716            "translate" => self.translate = Some(value.into()),
61717            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
61718            #[cfg(feature = "alloc")]
61719            _ => {
61720                #[allow(clippy::useless_conversion)]
61721                self.extra.insert(name.into(), value.into());
61722            }
61723            #[cfg(not(feature = "alloc"))]
61724            _ => {}
61725        }
61726    }
61727}
61728///
61729///   The <strong><code>&lt;image&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element is an ancient and poorly supported precursor to the <a href="/en-US/docs/Web/HTML/Element/img"><code>&lt;img&gt;</code></a> element.
61730///   <strong>It should not be used</strong>.
61731///
61732///
61733/// Some browsers will attempt to automatically convert this into an <a href="/en-US/docs/Web/HTML/Element/img"><code>&lt;img&gt;</code></a> element, and may succeed if the <a href="/en-US/docs/Web/HTML/Element/img#src"><code>src</code></a> attribute is specified as well.
61734///
61735/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/image>
61736#[deprecated]
61737#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
61738pub struct Image<'life> {
61739    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
61740    ///   
61741    pub accesskey: core::option::Option<AttributeValue<'life>>,
61742    ///
61743    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
61744    ///     <ul>
61745    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
61746    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
61747    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
61748    ///       <li><code>characters</code>, all letters should default to uppercase</li>
61749    ///     </ul>
61750    ///   
61751    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
61752    ///
61753    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
61754    ///   
61755    pub autofocus: core::option::Option<AttributeValue<'life>>,
61756    ///
61757    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
61758    ///   
61759    pub class: core::option::Option<AttributeValue<'life>>,
61760    ///
61761    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
61762    ///     <ul>
61763    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
61764    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
61765    ///     </ul>
61766    ///   
61767    pub contenteditable: core::option::Option<AttributeValue<'life>>,
61768    ///
61769    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
61770    ///   
61771    pub contextmenu: core::option::Option<AttributeValue<'life>>,
61772    ///
61773    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
61774    ///   
61775    #[cfg(feature = "alloc")]
61776    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
61777    ///
61778    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
61779    ///     <ul>
61780    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
61781    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
61782    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
61783    ///     </ul>
61784    ///   
61785    pub dir: core::option::Option<AttributeValue<'life>>,
61786    ///
61787    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
61788    ///     <ul>
61789    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
61790    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
61791    ///     </ul>
61792    ///   
61793    pub draggable: core::option::Option<AttributeValue<'life>>,
61794    ///
61795    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
61796    ///   
61797    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
61798    ///
61799    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
61800    ///   
61801    pub exportparts: core::option::Option<AttributeValue<'life>>,
61802    /// /// Extra attributes of the element.
61803
61804    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
61805    #[cfg(feature = "alloc")]
61806    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
61807    ///
61808    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
61809    ///   
61810    pub hidden: core::option::Option<AttributeValue<'life>>,
61811    ///
61812    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
61813    ///   
61814    pub id: core::option::Option<AttributeValue<'life>>,
61815    ///
61816    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
61817    ///   
61818    pub inert: core::option::Option<AttributeValue<'life>>,
61819    ///
61820    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
61821    ///   
61822    pub inputmode: core::option::Option<AttributeValue<'life>>,
61823    ///
61824    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
61825    ///   
61826    pub is: core::option::Option<AttributeValue<'life>>,
61827    ///
61828    ///     <p>The unique, global identifier of an item.</p>
61829    ///   
61830    pub itemid: core::option::Option<AttributeValue<'life>>,
61831    ///
61832    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
61833    ///   
61834    pub itemprop: core::option::Option<AttributeValue<'life>>,
61835    ///
61836    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
61837    ///   
61838    pub itemref: core::option::Option<AttributeValue<'life>>,
61839    ///
61840    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
61841    ///   
61842    pub itemscope: core::option::Option<AttributeValue<'life>>,
61843    ///
61844    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
61845    ///   
61846    pub itemtype: core::option::Option<AttributeValue<'life>>,
61847    ///
61848    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
61849    ///   
61850    pub lang: core::option::Option<AttributeValue<'life>>,
61851    ///
61852    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
61853    ///   
61854    pub nonce: core::option::Option<AttributeValue<'life>>,
61855    ///
61856    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
61857    ///   
61858    pub part: core::option::Option<AttributeValue<'life>>,
61859    ///
61860    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
61861    ///   
61862    pub popover: core::option::Option<AttributeValue<'life>>,
61863    ///
61864    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
61865    ///   
61866    pub role: core::option::Option<AttributeValue<'life>>,
61867    ///
61868    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
61869    ///   
61870    pub slot: core::option::Option<AttributeValue<'life>>,
61871    ///
61872    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
61873    ///     <ul>
61874    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
61875    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
61876    ///     </ul>
61877    ///   
61878    pub spellcheck: core::option::Option<AttributeValue<'life>>,
61879    ///
61880    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
61881    ///   
61882    pub style: core::option::Option<AttributeValue<'life>>,
61883    ///
61884    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
61885    ///     <ul>
61886    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
61887    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
61888    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
61889    ///     </ul>
61890    ///   
61891    pub tabindex: core::option::Option<AttributeValue<'life>>,
61892    ///
61893    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
61894    ///   
61895    pub title: core::option::Option<AttributeValue<'life>>,
61896    ///
61897    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
61898    ///     <ul>
61899    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
61900    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
61901    ///     </ul>
61902    ///   
61903    pub translate: core::option::Option<AttributeValue<'life>>,
61904    ///
61905    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
61906    ///     <ul>
61907    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
61908    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
61909    ///     </ul>
61910    ///   
61911    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
61912}
61913#[allow(deprecated)]
61914
61915impl<'life> Image<'life> {
61916    /// Get the tag name of the element.
61917    /// This is the same as the name of the struct, in kebab-case.
61918    pub fn tag() -> &'static str {
61919        "image"
61920    }
61921    /// Sets an attribute of the element.
61922    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
61923    /// If the `alloc` feature is disabled, this function will silently fail.
61924    ///
61925    /// # Note
61926    /// This only works when the attribute is lowercase.
61927    pub fn set_attr(
61928        &mut self,
61929        name: &'life str,
61930        value: impl core::convert::Into<AttributeValue<'life>>,
61931    ) {
61932        match name {
61933            "accesskey" => self.accesskey = Some(value.into()),
61934            "autocapitalize" => self.autocapitalize = Some(value.into()),
61935            "autofocus" => self.autofocus = Some(value.into()),
61936            "class" => self.class = Some(value.into()),
61937            "contenteditable" => self.contenteditable = Some(value.into()),
61938            "contextmenu" => self.contextmenu = Some(value.into()),
61939            "dir" => self.dir = Some(value.into()),
61940            "draggable" => self.draggable = Some(value.into()),
61941            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
61942            "exportparts" => self.exportparts = Some(value.into()),
61943            "hidden" => self.hidden = Some(value.into()),
61944            "id" => self.id = Some(value.into()),
61945            "inert" => self.inert = Some(value.into()),
61946            "inputmode" => self.inputmode = Some(value.into()),
61947            "is" => self.is = Some(value.into()),
61948            "itemid" => self.itemid = Some(value.into()),
61949            "itemprop" => self.itemprop = Some(value.into()),
61950            "itemref" => self.itemref = Some(value.into()),
61951            "itemscope" => self.itemscope = Some(value.into()),
61952            "itemtype" => self.itemtype = Some(value.into()),
61953            "lang" => self.lang = Some(value.into()),
61954            "nonce" => self.nonce = Some(value.into()),
61955            "part" => self.part = Some(value.into()),
61956            "popover" => self.popover = Some(value.into()),
61957            "role" => self.role = Some(value.into()),
61958            "slot" => self.slot = Some(value.into()),
61959            "spellcheck" => self.spellcheck = Some(value.into()),
61960            "style" => self.style = Some(value.into()),
61961            "tabindex" => self.tabindex = Some(value.into()),
61962            "title" => self.title = Some(value.into()),
61963            "translate" => self.translate = Some(value.into()),
61964            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
61965            #[cfg(feature = "alloc")]
61966            _ => {
61967                #[allow(clippy::useless_conversion)]
61968                self.extra.insert(name.into(), value.into());
61969            }
61970            #[cfg(not(feature = "alloc"))]
61971            _ => {}
61972        }
61973    }
61974}
61975///
61976///   The <strong><code>&lt;image&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element is an ancient and poorly supported precursor to the <a href="/en-US/docs/Web/HTML/Element/img"><code>&lt;img&gt;</code></a> element.
61977///   <strong>It should not be used</strong>.
61978///
61979///
61980/// Some browsers will attempt to automatically convert this into an <a href="/en-US/docs/Web/HTML/Element/img"><code>&lt;img&gt;</code></a> element, and may succeed if the <a href="/en-US/docs/Web/HTML/Element/img#src"><code>src</code></a> attribute is specified as well.
61981///
61982/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/image>
61983#[deprecated]
61984#[cfg(feature = "alloc")]
61985#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
61986pub struct ImageOwned {
61987    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
61988    ///   
61989    pub accesskey: core::option::Option<AttributeValueOwned>,
61990    ///
61991    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
61992    ///     <ul>
61993    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
61994    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
61995    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
61996    ///       <li><code>characters</code>, all letters should default to uppercase</li>
61997    ///     </ul>
61998    ///   
61999    pub autocapitalize: core::option::Option<AttributeValueOwned>,
62000    ///
62001    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
62002    ///   
62003    pub autofocus: core::option::Option<AttributeValueOwned>,
62004    ///
62005    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
62006    ///   
62007    pub class: core::option::Option<AttributeValueOwned>,
62008    ///
62009    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
62010    ///     <ul>
62011    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
62012    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
62013    ///     </ul>
62014    ///   
62015    pub contenteditable: core::option::Option<AttributeValueOwned>,
62016    ///
62017    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
62018    ///   
62019    pub contextmenu: core::option::Option<AttributeValueOwned>,
62020    ///
62021    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
62022    ///   
62023    #[cfg(feature = "alloc")]
62024    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
62025    ///
62026    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
62027    ///     <ul>
62028    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
62029    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
62030    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
62031    ///     </ul>
62032    ///   
62033    pub dir: core::option::Option<AttributeValueOwned>,
62034    ///
62035    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
62036    ///     <ul>
62037    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
62038    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
62039    ///     </ul>
62040    ///   
62041    pub draggable: core::option::Option<AttributeValueOwned>,
62042    ///
62043    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
62044    ///   
62045    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
62046    ///
62047    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
62048    ///   
62049    pub exportparts: core::option::Option<AttributeValueOwned>,
62050    /// /// Extra attributes of the element.
62051
62052    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
62053    #[cfg(feature = "alloc")]
62054    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
62055    ///
62056    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
62057    ///   
62058    pub hidden: core::option::Option<AttributeValueOwned>,
62059    ///
62060    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
62061    ///   
62062    pub id: core::option::Option<AttributeValueOwned>,
62063    ///
62064    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
62065    ///   
62066    pub inert: core::option::Option<AttributeValueOwned>,
62067    ///
62068    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
62069    ///   
62070    pub inputmode: core::option::Option<AttributeValueOwned>,
62071    ///
62072    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
62073    ///   
62074    pub is: core::option::Option<AttributeValueOwned>,
62075    ///
62076    ///     <p>The unique, global identifier of an item.</p>
62077    ///   
62078    pub itemid: core::option::Option<AttributeValueOwned>,
62079    ///
62080    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
62081    ///   
62082    pub itemprop: core::option::Option<AttributeValueOwned>,
62083    ///
62084    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
62085    ///   
62086    pub itemref: core::option::Option<AttributeValueOwned>,
62087    ///
62088    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
62089    ///   
62090    pub itemscope: core::option::Option<AttributeValueOwned>,
62091    ///
62092    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
62093    ///   
62094    pub itemtype: core::option::Option<AttributeValueOwned>,
62095    ///
62096    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
62097    ///   
62098    pub lang: core::option::Option<AttributeValueOwned>,
62099    ///
62100    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
62101    ///   
62102    pub nonce: core::option::Option<AttributeValueOwned>,
62103    ///
62104    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
62105    ///   
62106    pub part: core::option::Option<AttributeValueOwned>,
62107    ///
62108    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
62109    ///   
62110    pub popover: core::option::Option<AttributeValueOwned>,
62111    ///
62112    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
62113    ///   
62114    pub role: core::option::Option<AttributeValueOwned>,
62115    ///
62116    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
62117    ///   
62118    pub slot: core::option::Option<AttributeValueOwned>,
62119    ///
62120    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
62121    ///     <ul>
62122    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
62123    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
62124    ///     </ul>
62125    ///   
62126    pub spellcheck: core::option::Option<AttributeValueOwned>,
62127    ///
62128    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
62129    ///   
62130    pub style: core::option::Option<AttributeValueOwned>,
62131    ///
62132    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
62133    ///     <ul>
62134    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
62135    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
62136    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
62137    ///     </ul>
62138    ///   
62139    pub tabindex: core::option::Option<AttributeValueOwned>,
62140    ///
62141    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
62142    ///   
62143    pub title: core::option::Option<AttributeValueOwned>,
62144    ///
62145    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
62146    ///     <ul>
62147    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
62148    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
62149    ///     </ul>
62150    ///   
62151    pub translate: core::option::Option<AttributeValueOwned>,
62152    ///
62153    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
62154    ///     <ul>
62155    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
62156    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
62157    ///     </ul>
62158    ///   
62159    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
62160}
62161#[allow(deprecated)]
62162#[cfg(feature = "alloc")]
62163impl ImageOwned {
62164    /// Get the tag name of the element.
62165    /// This is the same as the name of the struct, in kebab-case.
62166    pub fn tag() -> &'static str {
62167        "image"
62168    }
62169    /// Sets an attribute of the element.
62170    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
62171    /// If the `alloc` feature is disabled, this function will silently fail.
62172    ///
62173    /// # Note
62174    /// This only works when the attribute is lowercase.
62175    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
62176        match name {
62177            "accesskey" => self.accesskey = Some(value.into()),
62178            "autocapitalize" => self.autocapitalize = Some(value.into()),
62179            "autofocus" => self.autofocus = Some(value.into()),
62180            "class" => self.class = Some(value.into()),
62181            "contenteditable" => self.contenteditable = Some(value.into()),
62182            "contextmenu" => self.contextmenu = Some(value.into()),
62183            "dir" => self.dir = Some(value.into()),
62184            "draggable" => self.draggable = Some(value.into()),
62185            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
62186            "exportparts" => self.exportparts = Some(value.into()),
62187            "hidden" => self.hidden = Some(value.into()),
62188            "id" => self.id = Some(value.into()),
62189            "inert" => self.inert = Some(value.into()),
62190            "inputmode" => self.inputmode = Some(value.into()),
62191            "is" => self.is = Some(value.into()),
62192            "itemid" => self.itemid = Some(value.into()),
62193            "itemprop" => self.itemprop = Some(value.into()),
62194            "itemref" => self.itemref = Some(value.into()),
62195            "itemscope" => self.itemscope = Some(value.into()),
62196            "itemtype" => self.itemtype = Some(value.into()),
62197            "lang" => self.lang = Some(value.into()),
62198            "nonce" => self.nonce = Some(value.into()),
62199            "part" => self.part = Some(value.into()),
62200            "popover" => self.popover = Some(value.into()),
62201            "role" => self.role = Some(value.into()),
62202            "slot" => self.slot = Some(value.into()),
62203            "spellcheck" => self.spellcheck = Some(value.into()),
62204            "style" => self.style = Some(value.into()),
62205            "tabindex" => self.tabindex = Some(value.into()),
62206            "title" => self.title = Some(value.into()),
62207            "translate" => self.translate = Some(value.into()),
62208            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
62209            #[cfg(feature = "alloc")]
62210            _ => {
62211                #[allow(clippy::useless_conversion)]
62212                self.extra.insert(name.into(), value.into());
62213            }
62214            #[cfg(not(feature = "alloc"))]
62215            _ => {}
62216        }
62217    }
62218}
62219/// The <strong><code>&lt;keygen&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element exists to facilitate generation of key material, and submission of the public key as part of an <a href="/en-US/docs/Learn/Forms">HTML form</a>. This mechanism is designed for use with Web-based certificate management systems. It is expected that the <code>&lt;keygen&gt;</code> element will be used in an HTML form along with other information needed to construct a certificate request, and that the result of the process will be a signed certificate.
62220///
62221/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/keygen>
62222#[deprecated]
62223#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
62224pub struct Keygen<'life> {
62225    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
62226    ///   
62227    pub accesskey: core::option::Option<AttributeValue<'life>>,
62228    ///
62229    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
62230    ///     <ul>
62231    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
62232    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
62233    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
62234    ///       <li><code>characters</code>, all letters should default to uppercase</li>
62235    ///     </ul>
62236    ///   
62237    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
62238    ///
62239    ///     <p>This Boolean attribute lets you specify that the control should have input focus when the page loads, unless the user overrides it, for example by typing in a different control. Only one form element in a document can have the <code>autofocus</code> attribute, which is a Boolean.</p>
62240    ///   
62241    pub autofocus: core::option::Option<AttributeValue<'life>>,
62242    ///
62243    ///     <p>A challenge string that is submitted along with the public key. Defaults to an empty string if not specified.</p>
62244    ///   
62245    pub challenge: core::option::Option<AttributeValue<'life>>,
62246    ///
62247    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
62248    ///   
62249    pub class: core::option::Option<AttributeValue<'life>>,
62250    ///
62251    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
62252    ///     <ul>
62253    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
62254    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
62255    ///     </ul>
62256    ///   
62257    pub contenteditable: core::option::Option<AttributeValue<'life>>,
62258    ///
62259    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
62260    ///   
62261    pub contextmenu: core::option::Option<AttributeValue<'life>>,
62262    ///
62263    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
62264    ///   
62265    #[cfg(feature = "alloc")]
62266    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
62267    ///
62268    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
62269    ///     <ul>
62270    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
62271    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
62272    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
62273    ///     </ul>
62274    ///   
62275    pub dir: core::option::Option<AttributeValue<'life>>,
62276    ///
62277    ///     <p>This Boolean attribute indicates that the form control is not available for interaction.</p>
62278    ///   
62279    pub disabled: core::option::Option<AttributeValue<'life>>,
62280    ///
62281    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
62282    ///     <ul>
62283    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
62284    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
62285    ///     </ul>
62286    ///   
62287    pub draggable: core::option::Option<AttributeValue<'life>>,
62288    ///
62289    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
62290    ///   
62291    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
62292    ///
62293    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
62294    ///   
62295    pub exportparts: core::option::Option<AttributeValue<'life>>,
62296    /// /// Extra attributes of the element.
62297
62298    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
62299    #[cfg(feature = "alloc")]
62300    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
62301    ///
62302    ///     <p>The form element that this element is associated with (its <em>form owner</em>). The value of the attribute must be an <code>id</code> of a <a href="/en-US/docs/Web/HTML/Element/form"><code>&lt;form&gt;</code></a> element in the same document. If this attribute is not specified, this element must be a descendant of a <a href="/en-US/docs/Web/HTML/Element/form"><code>&lt;form&gt;</code></a> element. This attribute enables you to place <code>&lt;keygen&gt;</code> elements anywhere within a document, not just as descendants of their form elements.</p>
62303    ///   
62304    pub form: core::option::Option<AttributeValue<'life>>,
62305    ///
62306    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
62307    ///   
62308    pub hidden: core::option::Option<AttributeValue<'life>>,
62309    ///
62310    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
62311    ///   
62312    pub id: core::option::Option<AttributeValue<'life>>,
62313    ///
62314    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
62315    ///   
62316    pub inert: core::option::Option<AttributeValue<'life>>,
62317    ///
62318    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
62319    ///   
62320    pub inputmode: core::option::Option<AttributeValue<'life>>,
62321    ///
62322    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
62323    ///   
62324    pub is: core::option::Option<AttributeValue<'life>>,
62325    ///
62326    ///     <p>The unique, global identifier of an item.</p>
62327    ///   
62328    pub itemid: core::option::Option<AttributeValue<'life>>,
62329    ///
62330    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
62331    ///   
62332    pub itemprop: core::option::Option<AttributeValue<'life>>,
62333    ///
62334    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
62335    ///   
62336    pub itemref: core::option::Option<AttributeValue<'life>>,
62337    ///
62338    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
62339    ///   
62340    pub itemscope: core::option::Option<AttributeValue<'life>>,
62341    ///
62342    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
62343    ///   
62344    pub itemtype: core::option::Option<AttributeValue<'life>>,
62345    ///
62346    ///     <p>The type of key generated. The default value is <code>RSA</code>.</p>
62347    ///   
62348    pub keytype: core::option::Option<AttributeValue<'life>>,
62349    ///
62350    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
62351    ///   
62352    pub lang: core::option::Option<AttributeValue<'life>>,
62353    ///
62354    ///     <p>The name of the control, which is submitted with the form data.</p>
62355    ///   
62356    pub name: core::option::Option<AttributeValue<'life>>,
62357    ///
62358    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
62359    ///   
62360    pub nonce: core::option::Option<AttributeValue<'life>>,
62361    ///
62362    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
62363    ///   
62364    pub part: core::option::Option<AttributeValue<'life>>,
62365    ///
62366    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
62367    ///   
62368    pub popover: core::option::Option<AttributeValue<'life>>,
62369    ///
62370    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
62371    ///   
62372    pub role: core::option::Option<AttributeValue<'life>>,
62373    ///
62374    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
62375    ///   
62376    pub slot: core::option::Option<AttributeValue<'life>>,
62377    ///
62378    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
62379    ///     <ul>
62380    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
62381    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
62382    ///     </ul>
62383    ///   
62384    pub spellcheck: core::option::Option<AttributeValue<'life>>,
62385    ///
62386    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
62387    ///   
62388    pub style: core::option::Option<AttributeValue<'life>>,
62389    ///
62390    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
62391    ///     <ul>
62392    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
62393    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
62394    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
62395    ///     </ul>
62396    ///   
62397    pub tabindex: core::option::Option<AttributeValue<'life>>,
62398    ///
62399    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
62400    ///   
62401    pub title: core::option::Option<AttributeValue<'life>>,
62402    ///
62403    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
62404    ///     <ul>
62405    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
62406    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
62407    ///     </ul>
62408    ///   
62409    pub translate: core::option::Option<AttributeValue<'life>>,
62410    ///
62411    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
62412    ///     <ul>
62413    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
62414    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
62415    ///     </ul>
62416    ///   
62417    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
62418}
62419#[allow(deprecated)]
62420
62421impl<'life> Keygen<'life> {
62422    /// Get the tag name of the element.
62423    /// This is the same as the name of the struct, in kebab-case.
62424    pub fn tag() -> &'static str {
62425        "keygen"
62426    }
62427    /// Sets an attribute of the element.
62428    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
62429    /// If the `alloc` feature is disabled, this function will silently fail.
62430    ///
62431    /// # Note
62432    /// This only works when the attribute is lowercase.
62433    pub fn set_attr(
62434        &mut self,
62435        name: &'life str,
62436        value: impl core::convert::Into<AttributeValue<'life>>,
62437    ) {
62438        match name {
62439            "accesskey" => self.accesskey = Some(value.into()),
62440            "autocapitalize" => self.autocapitalize = Some(value.into()),
62441            "autofocus" => self.autofocus = Some(value.into()),
62442            "challenge" => self.challenge = Some(value.into()),
62443            "class" => self.class = Some(value.into()),
62444            "contenteditable" => self.contenteditable = Some(value.into()),
62445            "contextmenu" => self.contextmenu = Some(value.into()),
62446            "dir" => self.dir = Some(value.into()),
62447            "disabled" => self.disabled = Some(value.into()),
62448            "draggable" => self.draggable = Some(value.into()),
62449            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
62450            "exportparts" => self.exportparts = Some(value.into()),
62451            "form" => self.form = Some(value.into()),
62452            "hidden" => self.hidden = Some(value.into()),
62453            "id" => self.id = Some(value.into()),
62454            "inert" => self.inert = Some(value.into()),
62455            "inputmode" => self.inputmode = Some(value.into()),
62456            "is" => self.is = Some(value.into()),
62457            "itemid" => self.itemid = Some(value.into()),
62458            "itemprop" => self.itemprop = Some(value.into()),
62459            "itemref" => self.itemref = Some(value.into()),
62460            "itemscope" => self.itemscope = Some(value.into()),
62461            "itemtype" => self.itemtype = Some(value.into()),
62462            "keytype" => self.keytype = Some(value.into()),
62463            "lang" => self.lang = Some(value.into()),
62464            "name" => self.name = Some(value.into()),
62465            "nonce" => self.nonce = Some(value.into()),
62466            "part" => self.part = Some(value.into()),
62467            "popover" => self.popover = Some(value.into()),
62468            "role" => self.role = Some(value.into()),
62469            "slot" => self.slot = Some(value.into()),
62470            "spellcheck" => self.spellcheck = Some(value.into()),
62471            "style" => self.style = Some(value.into()),
62472            "tabindex" => self.tabindex = Some(value.into()),
62473            "title" => self.title = Some(value.into()),
62474            "translate" => self.translate = Some(value.into()),
62475            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
62476            #[cfg(feature = "alloc")]
62477            _ => {
62478                #[allow(clippy::useless_conversion)]
62479                self.extra.insert(name.into(), value.into());
62480            }
62481            #[cfg(not(feature = "alloc"))]
62482            _ => {}
62483        }
62484    }
62485}
62486/// The <strong><code>&lt;keygen&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element exists to facilitate generation of key material, and submission of the public key as part of an <a href="/en-US/docs/Learn/Forms">HTML form</a>. This mechanism is designed for use with Web-based certificate management systems. It is expected that the <code>&lt;keygen&gt;</code> element will be used in an HTML form along with other information needed to construct a certificate request, and that the result of the process will be a signed certificate.
62487///
62488/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/keygen>
62489#[deprecated]
62490#[cfg(feature = "alloc")]
62491#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
62492pub struct KeygenOwned {
62493    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
62494    ///   
62495    pub accesskey: core::option::Option<AttributeValueOwned>,
62496    ///
62497    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
62498    ///     <ul>
62499    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
62500    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
62501    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
62502    ///       <li><code>characters</code>, all letters should default to uppercase</li>
62503    ///     </ul>
62504    ///   
62505    pub autocapitalize: core::option::Option<AttributeValueOwned>,
62506    ///
62507    ///     <p>This Boolean attribute lets you specify that the control should have input focus when the page loads, unless the user overrides it, for example by typing in a different control. Only one form element in a document can have the <code>autofocus</code> attribute, which is a Boolean.</p>
62508    ///   
62509    pub autofocus: core::option::Option<AttributeValueOwned>,
62510    ///
62511    ///     <p>A challenge string that is submitted along with the public key. Defaults to an empty string if not specified.</p>
62512    ///   
62513    pub challenge: core::option::Option<AttributeValueOwned>,
62514    ///
62515    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
62516    ///   
62517    pub class: core::option::Option<AttributeValueOwned>,
62518    ///
62519    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
62520    ///     <ul>
62521    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
62522    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
62523    ///     </ul>
62524    ///   
62525    pub contenteditable: core::option::Option<AttributeValueOwned>,
62526    ///
62527    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
62528    ///   
62529    pub contextmenu: core::option::Option<AttributeValueOwned>,
62530    ///
62531    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
62532    ///   
62533    #[cfg(feature = "alloc")]
62534    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
62535    ///
62536    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
62537    ///     <ul>
62538    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
62539    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
62540    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
62541    ///     </ul>
62542    ///   
62543    pub dir: core::option::Option<AttributeValueOwned>,
62544    ///
62545    ///     <p>This Boolean attribute indicates that the form control is not available for interaction.</p>
62546    ///   
62547    pub disabled: core::option::Option<AttributeValueOwned>,
62548    ///
62549    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
62550    ///     <ul>
62551    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
62552    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
62553    ///     </ul>
62554    ///   
62555    pub draggable: core::option::Option<AttributeValueOwned>,
62556    ///
62557    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
62558    ///   
62559    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
62560    ///
62561    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
62562    ///   
62563    pub exportparts: core::option::Option<AttributeValueOwned>,
62564    /// /// Extra attributes of the element.
62565
62566    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
62567    #[cfg(feature = "alloc")]
62568    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
62569    ///
62570    ///     <p>The form element that this element is associated with (its <em>form owner</em>). The value of the attribute must be an <code>id</code> of a <a href="/en-US/docs/Web/HTML/Element/form"><code>&lt;form&gt;</code></a> element in the same document. If this attribute is not specified, this element must be a descendant of a <a href="/en-US/docs/Web/HTML/Element/form"><code>&lt;form&gt;</code></a> element. This attribute enables you to place <code>&lt;keygen&gt;</code> elements anywhere within a document, not just as descendants of their form elements.</p>
62571    ///   
62572    pub form: core::option::Option<AttributeValueOwned>,
62573    ///
62574    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
62575    ///   
62576    pub hidden: core::option::Option<AttributeValueOwned>,
62577    ///
62578    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
62579    ///   
62580    pub id: core::option::Option<AttributeValueOwned>,
62581    ///
62582    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
62583    ///   
62584    pub inert: core::option::Option<AttributeValueOwned>,
62585    ///
62586    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
62587    ///   
62588    pub inputmode: core::option::Option<AttributeValueOwned>,
62589    ///
62590    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
62591    ///   
62592    pub is: core::option::Option<AttributeValueOwned>,
62593    ///
62594    ///     <p>The unique, global identifier of an item.</p>
62595    ///   
62596    pub itemid: core::option::Option<AttributeValueOwned>,
62597    ///
62598    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
62599    ///   
62600    pub itemprop: core::option::Option<AttributeValueOwned>,
62601    ///
62602    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
62603    ///   
62604    pub itemref: core::option::Option<AttributeValueOwned>,
62605    ///
62606    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
62607    ///   
62608    pub itemscope: core::option::Option<AttributeValueOwned>,
62609    ///
62610    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
62611    ///   
62612    pub itemtype: core::option::Option<AttributeValueOwned>,
62613    ///
62614    ///     <p>The type of key generated. The default value is <code>RSA</code>.</p>
62615    ///   
62616    pub keytype: core::option::Option<AttributeValueOwned>,
62617    ///
62618    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
62619    ///   
62620    pub lang: core::option::Option<AttributeValueOwned>,
62621    ///
62622    ///     <p>The name of the control, which is submitted with the form data.</p>
62623    ///   
62624    pub name: core::option::Option<AttributeValueOwned>,
62625    ///
62626    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
62627    ///   
62628    pub nonce: core::option::Option<AttributeValueOwned>,
62629    ///
62630    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
62631    ///   
62632    pub part: core::option::Option<AttributeValueOwned>,
62633    ///
62634    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
62635    ///   
62636    pub popover: core::option::Option<AttributeValueOwned>,
62637    ///
62638    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
62639    ///   
62640    pub role: core::option::Option<AttributeValueOwned>,
62641    ///
62642    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
62643    ///   
62644    pub slot: core::option::Option<AttributeValueOwned>,
62645    ///
62646    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
62647    ///     <ul>
62648    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
62649    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
62650    ///     </ul>
62651    ///   
62652    pub spellcheck: core::option::Option<AttributeValueOwned>,
62653    ///
62654    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
62655    ///   
62656    pub style: core::option::Option<AttributeValueOwned>,
62657    ///
62658    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
62659    ///     <ul>
62660    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
62661    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
62662    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
62663    ///     </ul>
62664    ///   
62665    pub tabindex: core::option::Option<AttributeValueOwned>,
62666    ///
62667    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
62668    ///   
62669    pub title: core::option::Option<AttributeValueOwned>,
62670    ///
62671    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
62672    ///     <ul>
62673    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
62674    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
62675    ///     </ul>
62676    ///   
62677    pub translate: core::option::Option<AttributeValueOwned>,
62678    ///
62679    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
62680    ///     <ul>
62681    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
62682    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
62683    ///     </ul>
62684    ///   
62685    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
62686}
62687#[allow(deprecated)]
62688#[cfg(feature = "alloc")]
62689impl KeygenOwned {
62690    /// Get the tag name of the element.
62691    /// This is the same as the name of the struct, in kebab-case.
62692    pub fn tag() -> &'static str {
62693        "keygen"
62694    }
62695    /// Sets an attribute of the element.
62696    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
62697    /// If the `alloc` feature is disabled, this function will silently fail.
62698    ///
62699    /// # Note
62700    /// This only works when the attribute is lowercase.
62701    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
62702        match name {
62703            "accesskey" => self.accesskey = Some(value.into()),
62704            "autocapitalize" => self.autocapitalize = Some(value.into()),
62705            "autofocus" => self.autofocus = Some(value.into()),
62706            "challenge" => self.challenge = Some(value.into()),
62707            "class" => self.class = Some(value.into()),
62708            "contenteditable" => self.contenteditable = Some(value.into()),
62709            "contextmenu" => self.contextmenu = Some(value.into()),
62710            "dir" => self.dir = Some(value.into()),
62711            "disabled" => self.disabled = Some(value.into()),
62712            "draggable" => self.draggable = Some(value.into()),
62713            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
62714            "exportparts" => self.exportparts = Some(value.into()),
62715            "form" => self.form = Some(value.into()),
62716            "hidden" => self.hidden = Some(value.into()),
62717            "id" => self.id = Some(value.into()),
62718            "inert" => self.inert = Some(value.into()),
62719            "inputmode" => self.inputmode = Some(value.into()),
62720            "is" => self.is = Some(value.into()),
62721            "itemid" => self.itemid = Some(value.into()),
62722            "itemprop" => self.itemprop = Some(value.into()),
62723            "itemref" => self.itemref = Some(value.into()),
62724            "itemscope" => self.itemscope = Some(value.into()),
62725            "itemtype" => self.itemtype = Some(value.into()),
62726            "keytype" => self.keytype = Some(value.into()),
62727            "lang" => self.lang = Some(value.into()),
62728            "name" => self.name = Some(value.into()),
62729            "nonce" => self.nonce = Some(value.into()),
62730            "part" => self.part = Some(value.into()),
62731            "popover" => self.popover = Some(value.into()),
62732            "role" => self.role = Some(value.into()),
62733            "slot" => self.slot = Some(value.into()),
62734            "spellcheck" => self.spellcheck = Some(value.into()),
62735            "style" => self.style = Some(value.into()),
62736            "tabindex" => self.tabindex = Some(value.into()),
62737            "title" => self.title = Some(value.into()),
62738            "translate" => self.translate = Some(value.into()),
62739            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
62740            #[cfg(feature = "alloc")]
62741            _ => {
62742                #[allow(clippy::useless_conversion)]
62743                self.extra.insert(name.into(), value.into());
62744            }
62745            #[cfg(not(feature = "alloc"))]
62746            _ => {}
62747        }
62748    }
62749}
62750/// The <strong><code>&lt;marquee&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> 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.
62751///
62752/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/marquee>
62753#[deprecated]
62754#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
62755pub struct Marquee<'life> {
62756    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
62757    ///   
62758    pub accesskey: core::option::Option<AttributeValue<'life>>,
62759    ///
62760    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
62761    ///     <ul>
62762    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
62763    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
62764    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
62765    ///       <li><code>characters</code>, all letters should default to uppercase</li>
62766    ///     </ul>
62767    ///   
62768    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
62769    ///
62770    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
62771    ///   
62772    pub autofocus: core::option::Option<AttributeValue<'life>>,
62773    ///
62774    ///     <p>Sets how the text is scrolled within the marquee. Possible values are <code>scroll</code>, <code>slide</code> and <code>alternate</code>. If no value is specified, the default value is <code>scroll</code>.</p>
62775    ///   
62776    pub behavior: core::option::Option<AttributeValue<'life>>,
62777    ///
62778    ///     <p>Sets the background color through color name or hexadecimal value.</p>
62779    ///   
62780    pub bgcolor: core::option::Option<AttributeValue<'life>>,
62781    ///
62782    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
62783    ///   
62784    pub class: core::option::Option<AttributeValue<'life>>,
62785    ///
62786    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
62787    ///     <ul>
62788    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
62789    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
62790    ///     </ul>
62791    ///   
62792    pub contenteditable: core::option::Option<AttributeValue<'life>>,
62793    ///
62794    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
62795    ///   
62796    pub contextmenu: core::option::Option<AttributeValue<'life>>,
62797    ///
62798    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
62799    ///   
62800    #[cfg(feature = "alloc")]
62801    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
62802    ///
62803    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
62804    ///     <ul>
62805    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
62806    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
62807    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
62808    ///     </ul>
62809    ///   
62810    pub dir: core::option::Option<AttributeValue<'life>>,
62811    ///
62812    ///     <p>Sets the direction of the scrolling within the marquee. Possible values are <code>left</code>, <code>right</code>, <code>up</code> and <code>down</code>. If no value is specified, the default value is <code>left</code>.</p>
62813    ///   
62814    pub direction: core::option::Option<AttributeValue<'life>>,
62815    ///
62816    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
62817    ///     <ul>
62818    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
62819    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
62820    ///     </ul>
62821    ///   
62822    pub draggable: core::option::Option<AttributeValue<'life>>,
62823    ///
62824    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
62825    ///   
62826    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
62827    ///
62828    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
62829    ///   
62830    pub exportparts: core::option::Option<AttributeValue<'life>>,
62831    /// /// Extra attributes of the element.
62832
62833    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
62834    #[cfg(feature = "alloc")]
62835    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
62836    ///
62837    ///     <p>Sets the height in pixels or percentage value.</p>
62838    ///   
62839    pub height: core::option::Option<AttributeValue<'life>>,
62840    ///
62841    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
62842    ///   
62843    pub hidden: core::option::Option<AttributeValue<'life>>,
62844    ///
62845    ///     <p>Sets the horizontal margin</p>
62846    ///   
62847    pub hspace: core::option::Option<AttributeValue<'life>>,
62848    ///
62849    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
62850    ///   
62851    pub id: core::option::Option<AttributeValue<'life>>,
62852    ///
62853    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
62854    ///   
62855    pub inert: core::option::Option<AttributeValue<'life>>,
62856    ///
62857    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
62858    ///   
62859    pub inputmode: core::option::Option<AttributeValue<'life>>,
62860    ///
62861    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
62862    ///   
62863    pub is: core::option::Option<AttributeValue<'life>>,
62864    ///
62865    ///     <p>The unique, global identifier of an item.</p>
62866    ///   
62867    pub itemid: core::option::Option<AttributeValue<'life>>,
62868    ///
62869    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
62870    ///   
62871    pub itemprop: core::option::Option<AttributeValue<'life>>,
62872    ///
62873    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
62874    ///   
62875    pub itemref: core::option::Option<AttributeValue<'life>>,
62876    ///
62877    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
62878    ///   
62879    pub itemscope: core::option::Option<AttributeValue<'life>>,
62880    ///
62881    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
62882    ///   
62883    pub itemtype: core::option::Option<AttributeValue<'life>>,
62884    ///
62885    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
62886    ///   
62887    pub lang: core::option::Option<AttributeValue<'life>>,
62888    ///
62889    ///     <p>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.</p>
62890    ///   
62891    pub loop_: core::option::Option<AttributeValue<'life>>,
62892    ///
62893    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
62894    ///   
62895    pub nonce: core::option::Option<AttributeValue<'life>>,
62896    ///
62897    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
62898    ///   
62899    pub part: core::option::Option<AttributeValue<'life>>,
62900    ///
62901    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
62902    ///   
62903    pub popover: core::option::Option<AttributeValue<'life>>,
62904    ///
62905    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
62906    ///   
62907    pub role: core::option::Option<AttributeValue<'life>>,
62908    ///
62909    ///     <p>Sets the amount of scrolling at each interval in pixels. The default value is 6.</p>
62910    ///   
62911    pub scrollamount: core::option::Option<AttributeValue<'life>>,
62912    ///
62913    ///     <p>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 <code>truespeed</code> is specified.</p>
62914    ///   
62915    pub scrolldelay: core::option::Option<AttributeValue<'life>>,
62916    ///
62917    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
62918    ///   
62919    pub slot: core::option::Option<AttributeValue<'life>>,
62920    ///
62921    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
62922    ///     <ul>
62923    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
62924    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
62925    ///     </ul>
62926    ///   
62927    pub spellcheck: core::option::Option<AttributeValue<'life>>,
62928    ///
62929    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
62930    ///   
62931    pub style: core::option::Option<AttributeValue<'life>>,
62932    ///
62933    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
62934    ///     <ul>
62935    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
62936    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
62937    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
62938    ///     </ul>
62939    ///   
62940    pub tabindex: core::option::Option<AttributeValue<'life>>,
62941    ///
62942    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
62943    ///   
62944    pub title: core::option::Option<AttributeValue<'life>>,
62945    ///
62946    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
62947    ///     <ul>
62948    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
62949    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
62950    ///     </ul>
62951    ///   
62952    pub translate: core::option::Option<AttributeValue<'life>>,
62953    ///
62954    ///     <p>By default, <code>scrolldelay</code> values lower than 60 are ignored. If <code>truespeed</code> is present, those values are not ignored.</p>
62955    ///   
62956    pub truespeed: core::option::Option<AttributeValue<'life>>,
62957    ///
62958    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
62959    ///     <ul>
62960    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
62961    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
62962    ///     </ul>
62963    ///   
62964    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
62965    ///
62966    ///     <p>Sets the vertical margin in pixels or percentage value.</p>
62967    ///   
62968    pub vspace: core::option::Option<AttributeValue<'life>>,
62969    ///
62970    ///     <p>Sets the width in pixels or percentage value.</p>
62971    ///   
62972    pub width: core::option::Option<AttributeValue<'life>>,
62973}
62974#[allow(deprecated)]
62975
62976impl<'life> Marquee<'life> {
62977    /// Get the tag name of the element.
62978    /// This is the same as the name of the struct, in kebab-case.
62979    pub fn tag() -> &'static str {
62980        "marquee"
62981    }
62982    /// Sets an attribute of the element.
62983    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
62984    /// If the `alloc` feature is disabled, this function will silently fail.
62985    ///
62986    /// # Note
62987    /// This only works when the attribute is lowercase.
62988    pub fn set_attr(
62989        &mut self,
62990        name: &'life str,
62991        value: impl core::convert::Into<AttributeValue<'life>>,
62992    ) {
62993        match name {
62994            "accesskey" => self.accesskey = Some(value.into()),
62995            "autocapitalize" => self.autocapitalize = Some(value.into()),
62996            "autofocus" => self.autofocus = Some(value.into()),
62997            "behavior" => self.behavior = Some(value.into()),
62998            "bgcolor" => self.bgcolor = Some(value.into()),
62999            "class" => self.class = Some(value.into()),
63000            "contenteditable" => self.contenteditable = Some(value.into()),
63001            "contextmenu" => self.contextmenu = Some(value.into()),
63002            "dir" => self.dir = Some(value.into()),
63003            "direction" => self.direction = Some(value.into()),
63004            "draggable" => self.draggable = Some(value.into()),
63005            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
63006            "exportparts" => self.exportparts = Some(value.into()),
63007            "height" => self.height = Some(value.into()),
63008            "hidden" => self.hidden = Some(value.into()),
63009            "hspace" => self.hspace = Some(value.into()),
63010            "id" => self.id = Some(value.into()),
63011            "inert" => self.inert = Some(value.into()),
63012            "inputmode" => self.inputmode = Some(value.into()),
63013            "is" => self.is = Some(value.into()),
63014            "itemid" => self.itemid = Some(value.into()),
63015            "itemprop" => self.itemprop = Some(value.into()),
63016            "itemref" => self.itemref = Some(value.into()),
63017            "itemscope" => self.itemscope = Some(value.into()),
63018            "itemtype" => self.itemtype = Some(value.into()),
63019            "lang" => self.lang = Some(value.into()),
63020            "loop_" => self.loop_ = Some(value.into()),
63021            "nonce" => self.nonce = Some(value.into()),
63022            "part" => self.part = Some(value.into()),
63023            "popover" => self.popover = Some(value.into()),
63024            "role" => self.role = Some(value.into()),
63025            "scrollamount" => self.scrollamount = Some(value.into()),
63026            "scrolldelay" => self.scrolldelay = Some(value.into()),
63027            "slot" => self.slot = Some(value.into()),
63028            "spellcheck" => self.spellcheck = Some(value.into()),
63029            "style" => self.style = Some(value.into()),
63030            "tabindex" => self.tabindex = Some(value.into()),
63031            "title" => self.title = Some(value.into()),
63032            "translate" => self.translate = Some(value.into()),
63033            "truespeed" => self.truespeed = Some(value.into()),
63034            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
63035            "vspace" => self.vspace = Some(value.into()),
63036            "width" => self.width = Some(value.into()),
63037            #[cfg(feature = "alloc")]
63038            _ => {
63039                #[allow(clippy::useless_conversion)]
63040                self.extra.insert(name.into(), value.into());
63041            }
63042            #[cfg(not(feature = "alloc"))]
63043            _ => {}
63044        }
63045    }
63046}
63047/// The <strong><code>&lt;marquee&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> 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.
63048///
63049/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/marquee>
63050#[deprecated]
63051#[cfg(feature = "alloc")]
63052#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
63053pub struct MarqueeOwned {
63054    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
63055    ///   
63056    pub accesskey: core::option::Option<AttributeValueOwned>,
63057    ///
63058    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
63059    ///     <ul>
63060    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
63061    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
63062    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
63063    ///       <li><code>characters</code>, all letters should default to uppercase</li>
63064    ///     </ul>
63065    ///   
63066    pub autocapitalize: core::option::Option<AttributeValueOwned>,
63067    ///
63068    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
63069    ///   
63070    pub autofocus: core::option::Option<AttributeValueOwned>,
63071    ///
63072    ///     <p>Sets how the text is scrolled within the marquee. Possible values are <code>scroll</code>, <code>slide</code> and <code>alternate</code>. If no value is specified, the default value is <code>scroll</code>.</p>
63073    ///   
63074    pub behavior: core::option::Option<AttributeValueOwned>,
63075    ///
63076    ///     <p>Sets the background color through color name or hexadecimal value.</p>
63077    ///   
63078    pub bgcolor: core::option::Option<AttributeValueOwned>,
63079    ///
63080    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
63081    ///   
63082    pub class: core::option::Option<AttributeValueOwned>,
63083    ///
63084    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
63085    ///     <ul>
63086    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
63087    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
63088    ///     </ul>
63089    ///   
63090    pub contenteditable: core::option::Option<AttributeValueOwned>,
63091    ///
63092    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
63093    ///   
63094    pub contextmenu: core::option::Option<AttributeValueOwned>,
63095    ///
63096    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
63097    ///   
63098    #[cfg(feature = "alloc")]
63099    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
63100    ///
63101    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
63102    ///     <ul>
63103    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
63104    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
63105    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
63106    ///     </ul>
63107    ///   
63108    pub dir: core::option::Option<AttributeValueOwned>,
63109    ///
63110    ///     <p>Sets the direction of the scrolling within the marquee. Possible values are <code>left</code>, <code>right</code>, <code>up</code> and <code>down</code>. If no value is specified, the default value is <code>left</code>.</p>
63111    ///   
63112    pub direction: core::option::Option<AttributeValueOwned>,
63113    ///
63114    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
63115    ///     <ul>
63116    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
63117    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
63118    ///     </ul>
63119    ///   
63120    pub draggable: core::option::Option<AttributeValueOwned>,
63121    ///
63122    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
63123    ///   
63124    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
63125    ///
63126    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
63127    ///   
63128    pub exportparts: core::option::Option<AttributeValueOwned>,
63129    /// /// Extra attributes of the element.
63130
63131    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
63132    #[cfg(feature = "alloc")]
63133    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
63134    ///
63135    ///     <p>Sets the height in pixels or percentage value.</p>
63136    ///   
63137    pub height: core::option::Option<AttributeValueOwned>,
63138    ///
63139    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
63140    ///   
63141    pub hidden: core::option::Option<AttributeValueOwned>,
63142    ///
63143    ///     <p>Sets the horizontal margin</p>
63144    ///   
63145    pub hspace: core::option::Option<AttributeValueOwned>,
63146    ///
63147    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
63148    ///   
63149    pub id: core::option::Option<AttributeValueOwned>,
63150    ///
63151    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
63152    ///   
63153    pub inert: core::option::Option<AttributeValueOwned>,
63154    ///
63155    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
63156    ///   
63157    pub inputmode: core::option::Option<AttributeValueOwned>,
63158    ///
63159    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
63160    ///   
63161    pub is: core::option::Option<AttributeValueOwned>,
63162    ///
63163    ///     <p>The unique, global identifier of an item.</p>
63164    ///   
63165    pub itemid: core::option::Option<AttributeValueOwned>,
63166    ///
63167    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
63168    ///   
63169    pub itemprop: core::option::Option<AttributeValueOwned>,
63170    ///
63171    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
63172    ///   
63173    pub itemref: core::option::Option<AttributeValueOwned>,
63174    ///
63175    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
63176    ///   
63177    pub itemscope: core::option::Option<AttributeValueOwned>,
63178    ///
63179    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
63180    ///   
63181    pub itemtype: core::option::Option<AttributeValueOwned>,
63182    ///
63183    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
63184    ///   
63185    pub lang: core::option::Option<AttributeValueOwned>,
63186    ///
63187    ///     <p>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.</p>
63188    ///   
63189    pub loop_: core::option::Option<AttributeValueOwned>,
63190    ///
63191    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
63192    ///   
63193    pub nonce: core::option::Option<AttributeValueOwned>,
63194    ///
63195    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
63196    ///   
63197    pub part: core::option::Option<AttributeValueOwned>,
63198    ///
63199    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
63200    ///   
63201    pub popover: core::option::Option<AttributeValueOwned>,
63202    ///
63203    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
63204    ///   
63205    pub role: core::option::Option<AttributeValueOwned>,
63206    ///
63207    ///     <p>Sets the amount of scrolling at each interval in pixels. The default value is 6.</p>
63208    ///   
63209    pub scrollamount: core::option::Option<AttributeValueOwned>,
63210    ///
63211    ///     <p>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 <code>truespeed</code> is specified.</p>
63212    ///   
63213    pub scrolldelay: core::option::Option<AttributeValueOwned>,
63214    ///
63215    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
63216    ///   
63217    pub slot: core::option::Option<AttributeValueOwned>,
63218    ///
63219    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
63220    ///     <ul>
63221    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
63222    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
63223    ///     </ul>
63224    ///   
63225    pub spellcheck: core::option::Option<AttributeValueOwned>,
63226    ///
63227    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
63228    ///   
63229    pub style: core::option::Option<AttributeValueOwned>,
63230    ///
63231    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
63232    ///     <ul>
63233    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
63234    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
63235    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
63236    ///     </ul>
63237    ///   
63238    pub tabindex: core::option::Option<AttributeValueOwned>,
63239    ///
63240    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
63241    ///   
63242    pub title: core::option::Option<AttributeValueOwned>,
63243    ///
63244    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
63245    ///     <ul>
63246    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
63247    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
63248    ///     </ul>
63249    ///   
63250    pub translate: core::option::Option<AttributeValueOwned>,
63251    ///
63252    ///     <p>By default, <code>scrolldelay</code> values lower than 60 are ignored. If <code>truespeed</code> is present, those values are not ignored.</p>
63253    ///   
63254    pub truespeed: core::option::Option<AttributeValueOwned>,
63255    ///
63256    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
63257    ///     <ul>
63258    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
63259    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
63260    ///     </ul>
63261    ///   
63262    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
63263    ///
63264    ///     <p>Sets the vertical margin in pixels or percentage value.</p>
63265    ///   
63266    pub vspace: core::option::Option<AttributeValueOwned>,
63267    ///
63268    ///     <p>Sets the width in pixels or percentage value.</p>
63269    ///   
63270    pub width: core::option::Option<AttributeValueOwned>,
63271}
63272#[allow(deprecated)]
63273#[cfg(feature = "alloc")]
63274impl MarqueeOwned {
63275    /// Get the tag name of the element.
63276    /// This is the same as the name of the struct, in kebab-case.
63277    pub fn tag() -> &'static str {
63278        "marquee"
63279    }
63280    /// Sets an attribute of the element.
63281    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
63282    /// If the `alloc` feature is disabled, this function will silently fail.
63283    ///
63284    /// # Note
63285    /// This only works when the attribute is lowercase.
63286    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
63287        match name {
63288            "accesskey" => self.accesskey = Some(value.into()),
63289            "autocapitalize" => self.autocapitalize = Some(value.into()),
63290            "autofocus" => self.autofocus = Some(value.into()),
63291            "behavior" => self.behavior = Some(value.into()),
63292            "bgcolor" => self.bgcolor = Some(value.into()),
63293            "class" => self.class = Some(value.into()),
63294            "contenteditable" => self.contenteditable = Some(value.into()),
63295            "contextmenu" => self.contextmenu = Some(value.into()),
63296            "dir" => self.dir = Some(value.into()),
63297            "direction" => self.direction = Some(value.into()),
63298            "draggable" => self.draggable = Some(value.into()),
63299            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
63300            "exportparts" => self.exportparts = Some(value.into()),
63301            "height" => self.height = Some(value.into()),
63302            "hidden" => self.hidden = Some(value.into()),
63303            "hspace" => self.hspace = Some(value.into()),
63304            "id" => self.id = Some(value.into()),
63305            "inert" => self.inert = Some(value.into()),
63306            "inputmode" => self.inputmode = Some(value.into()),
63307            "is" => self.is = Some(value.into()),
63308            "itemid" => self.itemid = Some(value.into()),
63309            "itemprop" => self.itemprop = Some(value.into()),
63310            "itemref" => self.itemref = Some(value.into()),
63311            "itemscope" => self.itemscope = Some(value.into()),
63312            "itemtype" => self.itemtype = Some(value.into()),
63313            "lang" => self.lang = Some(value.into()),
63314            "loop_" => self.loop_ = Some(value.into()),
63315            "nonce" => self.nonce = Some(value.into()),
63316            "part" => self.part = Some(value.into()),
63317            "popover" => self.popover = Some(value.into()),
63318            "role" => self.role = Some(value.into()),
63319            "scrollamount" => self.scrollamount = Some(value.into()),
63320            "scrolldelay" => self.scrolldelay = Some(value.into()),
63321            "slot" => self.slot = Some(value.into()),
63322            "spellcheck" => self.spellcheck = Some(value.into()),
63323            "style" => self.style = Some(value.into()),
63324            "tabindex" => self.tabindex = Some(value.into()),
63325            "title" => self.title = Some(value.into()),
63326            "translate" => self.translate = Some(value.into()),
63327            "truespeed" => self.truespeed = Some(value.into()),
63328            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
63329            "vspace" => self.vspace = Some(value.into()),
63330            "width" => self.width = Some(value.into()),
63331            #[cfg(feature = "alloc")]
63332            _ => {
63333                #[allow(clippy::useless_conversion)]
63334                self.extra.insert(name.into(), value.into());
63335            }
63336            #[cfg(not(feature = "alloc"))]
63337            _ => {}
63338        }
63339    }
63340}
63341/// The <strong><code>&lt;menuitem&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents a command that a user is able to invoke through a popup menu. This includes context menus, as well as menus that might be attached to a menu button.
63342///
63343/// A command can either be defined explicitly, with a textual label and optional icon to describe its appearance, or alternatively as an <em>indirect command</em> whose behavior is defined by a separate element. Commands can also optionally include a checkbox or be grouped to share radio buttons. (Menu items for indirect commands gain checkboxes or radio buttons when defined against elements <code>&lt;input type="checkbox"&gt;</code> and <code>&lt;input type="radio"&gt;</code>.)
63344///
63345/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/menuitem>
63346#[deprecated]
63347#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
63348pub struct Menuitem<'life> {
63349    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
63350    ///   
63351    pub accesskey: core::option::Option<AttributeValue<'life>>,
63352    ///
63353    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
63354    ///     <ul>
63355    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
63356    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
63357    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
63358    ///       <li><code>characters</code>, all letters should default to uppercase</li>
63359    ///     </ul>
63360    ///   
63361    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
63362    ///
63363    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
63364    ///   
63365    pub autofocus: core::option::Option<AttributeValue<'life>>,
63366    ///
63367    ///     <p>Boolean attribute which indicates whether the command is selected. May only be used when the <code>type</code> attribute is <code>checkbox</code> or <code>radio</code>.</p>
63368    ///   
63369    pub checked: core::option::Option<AttributeValue<'life>>,
63370    ///
63371    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
63372    ///   
63373    pub class: core::option::Option<AttributeValue<'life>>,
63374    ///
63375    ///     <p>Specifies the ID of a separate element, indicating a command to be invoked indirectly. May not be used within a menu item that also includes the attributes <code>checked</code>, <code>disabled</code>, <code>icon</code>, <code>label</code>, <code>radiogroup</code> or <code>type</code>.</p>
63376    ///   
63377    pub command: core::option::Option<AttributeValue<'life>>,
63378    ///
63379    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
63380    ///     <ul>
63381    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
63382    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
63383    ///     </ul>
63384    ///   
63385    pub contenteditable: core::option::Option<AttributeValue<'life>>,
63386    ///
63387    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
63388    ///   
63389    pub contextmenu: core::option::Option<AttributeValue<'life>>,
63390    ///
63391    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
63392    ///   
63393    #[cfg(feature = "alloc")]
63394    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
63395    ///
63396    ///     <p>This Boolean attribute indicates use of the same command as the menu's subject element (such as a <code>button</code> or <code>input</code>).</p>
63397    ///   
63398    pub default: core::option::Option<AttributeValue<'life>>,
63399    ///
63400    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
63401    ///     <ul>
63402    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
63403    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
63404    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
63405    ///     </ul>
63406    ///   
63407    pub dir: core::option::Option<AttributeValue<'life>>,
63408    ///
63409    ///     <p>Boolean attribute which indicates that the command is not available in the current state. Note that <code>disabled</code> is distinct from <code>hidden</code>; the <code>disabled</code> attribute is appropriate in any context where a change in circumstances might render the command relevant.</p>
63410    ///   
63411    pub disabled: core::option::Option<AttributeValue<'life>>,
63412    ///
63413    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
63414    ///     <ul>
63415    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
63416    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
63417    ///     </ul>
63418    ///   
63419    pub draggable: core::option::Option<AttributeValue<'life>>,
63420    ///
63421    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
63422    ///   
63423    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
63424    ///
63425    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
63426    ///   
63427    pub exportparts: core::option::Option<AttributeValue<'life>>,
63428    /// /// Extra attributes of the element.
63429
63430    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
63431    #[cfg(feature = "alloc")]
63432    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
63433    ///
63434    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
63435    ///   
63436    pub hidden: core::option::Option<AttributeValue<'life>>,
63437    ///
63438    ///     <p>Image URL, used to provide a picture to represent the command.</p>
63439    ///   
63440    pub icon: core::option::Option<AttributeValue<'life>>,
63441    ///
63442    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
63443    ///   
63444    pub id: core::option::Option<AttributeValue<'life>>,
63445    ///
63446    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
63447    ///   
63448    pub inert: core::option::Option<AttributeValue<'life>>,
63449    ///
63450    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
63451    ///   
63452    pub inputmode: core::option::Option<AttributeValue<'life>>,
63453    ///
63454    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
63455    ///   
63456    pub is: core::option::Option<AttributeValue<'life>>,
63457    ///
63458    ///     <p>The unique, global identifier of an item.</p>
63459    ///   
63460    pub itemid: core::option::Option<AttributeValue<'life>>,
63461    ///
63462    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
63463    ///   
63464    pub itemprop: core::option::Option<AttributeValue<'life>>,
63465    ///
63466    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
63467    ///   
63468    pub itemref: core::option::Option<AttributeValue<'life>>,
63469    ///
63470    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
63471    ///   
63472    pub itemscope: core::option::Option<AttributeValue<'life>>,
63473    ///
63474    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
63475    ///   
63476    pub itemtype: core::option::Option<AttributeValue<'life>>,
63477    ///
63478    ///     <p>The name of the command as shown to the user. Required when a <code>command</code> attribute is not present.</p>
63479    ///   
63480    pub label: core::option::Option<AttributeValue<'life>>,
63481    ///
63482    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
63483    ///   
63484    pub lang: core::option::Option<AttributeValue<'life>>,
63485    ///
63486    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
63487    ///   
63488    pub nonce: core::option::Option<AttributeValue<'life>>,
63489    ///
63490    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
63491    ///   
63492    pub part: core::option::Option<AttributeValue<'life>>,
63493    ///
63494    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
63495    ///   
63496    pub popover: core::option::Option<AttributeValue<'life>>,
63497    ///
63498    ///     <p>This attribute specifies the name of a group of commands to be toggled as radio buttons when selected. May only be used where the <code>type</code> attribute is <code>radio</code>.</p>
63499    ///   
63500    pub radiogroup: core::option::Option<AttributeValue<'life>>,
63501    ///
63502    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
63503    ///   
63504    pub role: core::option::Option<AttributeValue<'life>>,
63505    ///
63506    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
63507    ///   
63508    pub slot: core::option::Option<AttributeValue<'life>>,
63509    ///
63510    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
63511    ///     <ul>
63512    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
63513    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
63514    ///     </ul>
63515    ///   
63516    pub spellcheck: core::option::Option<AttributeValue<'life>>,
63517    ///
63518    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
63519    ///   
63520    pub style: core::option::Option<AttributeValue<'life>>,
63521    ///
63522    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
63523    ///     <ul>
63524    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
63525    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
63526    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
63527    ///     </ul>
63528    ///   
63529    pub tabindex: core::option::Option<AttributeValue<'life>>,
63530    ///
63531    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
63532    ///   
63533    pub title: core::option::Option<AttributeValue<'life>>,
63534    ///
63535    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
63536    ///     <ul>
63537    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
63538    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
63539    ///     </ul>
63540    ///   
63541    pub translate: core::option::Option<AttributeValue<'life>>,
63542    ///
63543    ///     <p>This attribute indicates the kind of command, and can be one of three values.</p>
63544    ///     <ul>
63545    ///       <li><code>command</code>: A regular command with an associated action. This is the missing value default.</li>
63546    ///       <li><code>checkbox</code>: Represents a command that can be toggled between two different states.</li>
63547    ///       <li><code>radio</code>: Represent one selection from a group of commands that can be toggled as radio buttons.</li>
63548    ///     </ul>
63549    ///   
63550    pub type_: core::option::Option<AttributeValue<'life>>,
63551    ///
63552    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
63553    ///     <ul>
63554    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
63555    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
63556    ///     </ul>
63557    ///   
63558    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
63559}
63560#[allow(deprecated)]
63561
63562impl<'life> Menuitem<'life> {
63563    /// Get the tag name of the element.
63564    /// This is the same as the name of the struct, in kebab-case.
63565    pub fn tag() -> &'static str {
63566        "menuitem"
63567    }
63568    /// Sets an attribute of the element.
63569    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
63570    /// If the `alloc` feature is disabled, this function will silently fail.
63571    ///
63572    /// # Note
63573    /// This only works when the attribute is lowercase.
63574    pub fn set_attr(
63575        &mut self,
63576        name: &'life str,
63577        value: impl core::convert::Into<AttributeValue<'life>>,
63578    ) {
63579        match name {
63580            "accesskey" => self.accesskey = Some(value.into()),
63581            "autocapitalize" => self.autocapitalize = Some(value.into()),
63582            "autofocus" => self.autofocus = Some(value.into()),
63583            "checked" => self.checked = Some(value.into()),
63584            "class" => self.class = Some(value.into()),
63585            "command" => self.command = Some(value.into()),
63586            "contenteditable" => self.contenteditable = Some(value.into()),
63587            "contextmenu" => self.contextmenu = Some(value.into()),
63588            "default" => self.default = Some(value.into()),
63589            "dir" => self.dir = Some(value.into()),
63590            "disabled" => self.disabled = Some(value.into()),
63591            "draggable" => self.draggable = Some(value.into()),
63592            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
63593            "exportparts" => self.exportparts = Some(value.into()),
63594            "hidden" => self.hidden = Some(value.into()),
63595            "icon" => self.icon = Some(value.into()),
63596            "id" => self.id = Some(value.into()),
63597            "inert" => self.inert = Some(value.into()),
63598            "inputmode" => self.inputmode = Some(value.into()),
63599            "is" => self.is = Some(value.into()),
63600            "itemid" => self.itemid = Some(value.into()),
63601            "itemprop" => self.itemprop = Some(value.into()),
63602            "itemref" => self.itemref = Some(value.into()),
63603            "itemscope" => self.itemscope = Some(value.into()),
63604            "itemtype" => self.itemtype = Some(value.into()),
63605            "label" => self.label = Some(value.into()),
63606            "lang" => self.lang = Some(value.into()),
63607            "nonce" => self.nonce = Some(value.into()),
63608            "part" => self.part = Some(value.into()),
63609            "popover" => self.popover = Some(value.into()),
63610            "radiogroup" => self.radiogroup = Some(value.into()),
63611            "role" => self.role = Some(value.into()),
63612            "slot" => self.slot = Some(value.into()),
63613            "spellcheck" => self.spellcheck = Some(value.into()),
63614            "style" => self.style = Some(value.into()),
63615            "tabindex" => self.tabindex = Some(value.into()),
63616            "title" => self.title = Some(value.into()),
63617            "translate" => self.translate = Some(value.into()),
63618            "type_" => self.type_ = Some(value.into()),
63619            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
63620            #[cfg(feature = "alloc")]
63621            _ => {
63622                #[allow(clippy::useless_conversion)]
63623                self.extra.insert(name.into(), value.into());
63624            }
63625            #[cfg(not(feature = "alloc"))]
63626            _ => {}
63627        }
63628    }
63629}
63630/// The <strong><code>&lt;menuitem&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element represents a command that a user is able to invoke through a popup menu. This includes context menus, as well as menus that might be attached to a menu button.
63631///
63632/// A command can either be defined explicitly, with a textual label and optional icon to describe its appearance, or alternatively as an <em>indirect command</em> whose behavior is defined by a separate element. Commands can also optionally include a checkbox or be grouped to share radio buttons. (Menu items for indirect commands gain checkboxes or radio buttons when defined against elements <code>&lt;input type="checkbox"&gt;</code> and <code>&lt;input type="radio"&gt;</code>.)
63633///
63634/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/menuitem>
63635#[deprecated]
63636#[cfg(feature = "alloc")]
63637#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
63638pub struct MenuitemOwned {
63639    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
63640    ///   
63641    pub accesskey: core::option::Option<AttributeValueOwned>,
63642    ///
63643    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
63644    ///     <ul>
63645    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
63646    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
63647    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
63648    ///       <li><code>characters</code>, all letters should default to uppercase</li>
63649    ///     </ul>
63650    ///   
63651    pub autocapitalize: core::option::Option<AttributeValueOwned>,
63652    ///
63653    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
63654    ///   
63655    pub autofocus: core::option::Option<AttributeValueOwned>,
63656    ///
63657    ///     <p>Boolean attribute which indicates whether the command is selected. May only be used when the <code>type</code> attribute is <code>checkbox</code> or <code>radio</code>.</p>
63658    ///   
63659    pub checked: core::option::Option<AttributeValueOwned>,
63660    ///
63661    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
63662    ///   
63663    pub class: core::option::Option<AttributeValueOwned>,
63664    ///
63665    ///     <p>Specifies the ID of a separate element, indicating a command to be invoked indirectly. May not be used within a menu item that also includes the attributes <code>checked</code>, <code>disabled</code>, <code>icon</code>, <code>label</code>, <code>radiogroup</code> or <code>type</code>.</p>
63666    ///   
63667    pub command: core::option::Option<AttributeValueOwned>,
63668    ///
63669    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
63670    ///     <ul>
63671    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
63672    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
63673    ///     </ul>
63674    ///   
63675    pub contenteditable: core::option::Option<AttributeValueOwned>,
63676    ///
63677    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
63678    ///   
63679    pub contextmenu: core::option::Option<AttributeValueOwned>,
63680    ///
63681    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
63682    ///   
63683    #[cfg(feature = "alloc")]
63684    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
63685    ///
63686    ///     <p>This Boolean attribute indicates use of the same command as the menu's subject element (such as a <code>button</code> or <code>input</code>).</p>
63687    ///   
63688    pub default: core::option::Option<AttributeValueOwned>,
63689    ///
63690    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
63691    ///     <ul>
63692    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
63693    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
63694    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
63695    ///     </ul>
63696    ///   
63697    pub dir: core::option::Option<AttributeValueOwned>,
63698    ///
63699    ///     <p>Boolean attribute which indicates that the command is not available in the current state. Note that <code>disabled</code> is distinct from <code>hidden</code>; the <code>disabled</code> attribute is appropriate in any context where a change in circumstances might render the command relevant.</p>
63700    ///   
63701    pub disabled: core::option::Option<AttributeValueOwned>,
63702    ///
63703    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
63704    ///     <ul>
63705    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
63706    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
63707    ///     </ul>
63708    ///   
63709    pub draggable: core::option::Option<AttributeValueOwned>,
63710    ///
63711    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
63712    ///   
63713    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
63714    ///
63715    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
63716    ///   
63717    pub exportparts: core::option::Option<AttributeValueOwned>,
63718    /// /// Extra attributes of the element.
63719
63720    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
63721    #[cfg(feature = "alloc")]
63722    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
63723    ///
63724    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
63725    ///   
63726    pub hidden: core::option::Option<AttributeValueOwned>,
63727    ///
63728    ///     <p>Image URL, used to provide a picture to represent the command.</p>
63729    ///   
63730    pub icon: core::option::Option<AttributeValueOwned>,
63731    ///
63732    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
63733    ///   
63734    pub id: core::option::Option<AttributeValueOwned>,
63735    ///
63736    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
63737    ///   
63738    pub inert: core::option::Option<AttributeValueOwned>,
63739    ///
63740    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
63741    ///   
63742    pub inputmode: core::option::Option<AttributeValueOwned>,
63743    ///
63744    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
63745    ///   
63746    pub is: core::option::Option<AttributeValueOwned>,
63747    ///
63748    ///     <p>The unique, global identifier of an item.</p>
63749    ///   
63750    pub itemid: core::option::Option<AttributeValueOwned>,
63751    ///
63752    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
63753    ///   
63754    pub itemprop: core::option::Option<AttributeValueOwned>,
63755    ///
63756    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
63757    ///   
63758    pub itemref: core::option::Option<AttributeValueOwned>,
63759    ///
63760    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
63761    ///   
63762    pub itemscope: core::option::Option<AttributeValueOwned>,
63763    ///
63764    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
63765    ///   
63766    pub itemtype: core::option::Option<AttributeValueOwned>,
63767    ///
63768    ///     <p>The name of the command as shown to the user. Required when a <code>command</code> attribute is not present.</p>
63769    ///   
63770    pub label: core::option::Option<AttributeValueOwned>,
63771    ///
63772    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
63773    ///   
63774    pub lang: core::option::Option<AttributeValueOwned>,
63775    ///
63776    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
63777    ///   
63778    pub nonce: core::option::Option<AttributeValueOwned>,
63779    ///
63780    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
63781    ///   
63782    pub part: core::option::Option<AttributeValueOwned>,
63783    ///
63784    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
63785    ///   
63786    pub popover: core::option::Option<AttributeValueOwned>,
63787    ///
63788    ///     <p>This attribute specifies the name of a group of commands to be toggled as radio buttons when selected. May only be used where the <code>type</code> attribute is <code>radio</code>.</p>
63789    ///   
63790    pub radiogroup: core::option::Option<AttributeValueOwned>,
63791    ///
63792    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
63793    ///   
63794    pub role: core::option::Option<AttributeValueOwned>,
63795    ///
63796    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
63797    ///   
63798    pub slot: core::option::Option<AttributeValueOwned>,
63799    ///
63800    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
63801    ///     <ul>
63802    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
63803    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
63804    ///     </ul>
63805    ///   
63806    pub spellcheck: core::option::Option<AttributeValueOwned>,
63807    ///
63808    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
63809    ///   
63810    pub style: core::option::Option<AttributeValueOwned>,
63811    ///
63812    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
63813    ///     <ul>
63814    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
63815    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
63816    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
63817    ///     </ul>
63818    ///   
63819    pub tabindex: core::option::Option<AttributeValueOwned>,
63820    ///
63821    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
63822    ///   
63823    pub title: core::option::Option<AttributeValueOwned>,
63824    ///
63825    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
63826    ///     <ul>
63827    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
63828    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
63829    ///     </ul>
63830    ///   
63831    pub translate: core::option::Option<AttributeValueOwned>,
63832    ///
63833    ///     <p>This attribute indicates the kind of command, and can be one of three values.</p>
63834    ///     <ul>
63835    ///       <li><code>command</code>: A regular command with an associated action. This is the missing value default.</li>
63836    ///       <li><code>checkbox</code>: Represents a command that can be toggled between two different states.</li>
63837    ///       <li><code>radio</code>: Represent one selection from a group of commands that can be toggled as radio buttons.</li>
63838    ///     </ul>
63839    ///   
63840    pub type_: core::option::Option<AttributeValueOwned>,
63841    ///
63842    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
63843    ///     <ul>
63844    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
63845    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
63846    ///     </ul>
63847    ///   
63848    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
63849}
63850#[allow(deprecated)]
63851#[cfg(feature = "alloc")]
63852impl MenuitemOwned {
63853    /// Get the tag name of the element.
63854    /// This is the same as the name of the struct, in kebab-case.
63855    pub fn tag() -> &'static str {
63856        "menuitem"
63857    }
63858    /// Sets an attribute of the element.
63859    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
63860    /// If the `alloc` feature is disabled, this function will silently fail.
63861    ///
63862    /// # Note
63863    /// This only works when the attribute is lowercase.
63864    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
63865        match name {
63866            "accesskey" => self.accesskey = Some(value.into()),
63867            "autocapitalize" => self.autocapitalize = Some(value.into()),
63868            "autofocus" => self.autofocus = Some(value.into()),
63869            "checked" => self.checked = Some(value.into()),
63870            "class" => self.class = Some(value.into()),
63871            "command" => self.command = Some(value.into()),
63872            "contenteditable" => self.contenteditable = Some(value.into()),
63873            "contextmenu" => self.contextmenu = Some(value.into()),
63874            "default" => self.default = Some(value.into()),
63875            "dir" => self.dir = Some(value.into()),
63876            "disabled" => self.disabled = Some(value.into()),
63877            "draggable" => self.draggable = Some(value.into()),
63878            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
63879            "exportparts" => self.exportparts = Some(value.into()),
63880            "hidden" => self.hidden = Some(value.into()),
63881            "icon" => self.icon = Some(value.into()),
63882            "id" => self.id = Some(value.into()),
63883            "inert" => self.inert = Some(value.into()),
63884            "inputmode" => self.inputmode = Some(value.into()),
63885            "is" => self.is = Some(value.into()),
63886            "itemid" => self.itemid = Some(value.into()),
63887            "itemprop" => self.itemprop = Some(value.into()),
63888            "itemref" => self.itemref = Some(value.into()),
63889            "itemscope" => self.itemscope = Some(value.into()),
63890            "itemtype" => self.itemtype = Some(value.into()),
63891            "label" => self.label = Some(value.into()),
63892            "lang" => self.lang = Some(value.into()),
63893            "nonce" => self.nonce = Some(value.into()),
63894            "part" => self.part = Some(value.into()),
63895            "popover" => self.popover = Some(value.into()),
63896            "radiogroup" => self.radiogroup = Some(value.into()),
63897            "role" => self.role = Some(value.into()),
63898            "slot" => self.slot = Some(value.into()),
63899            "spellcheck" => self.spellcheck = Some(value.into()),
63900            "style" => self.style = Some(value.into()),
63901            "tabindex" => self.tabindex = Some(value.into()),
63902            "title" => self.title = Some(value.into()),
63903            "translate" => self.translate = Some(value.into()),
63904            "type_" => self.type_ = Some(value.into()),
63905            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
63906            #[cfg(feature = "alloc")]
63907            _ => {
63908                #[allow(clippy::useless_conversion)]
63909                self.extra.insert(name.into(), value.into());
63910            }
63911            #[cfg(not(feature = "alloc"))]
63912            _ => {}
63913        }
63914    }
63915}
63916/// The <strong><code>&lt;nobr&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> 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.
63917///
63918/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/nobr>
63919#[deprecated]
63920#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
63921pub struct Nobr<'life> {
63922    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
63923    ///   
63924    pub accesskey: core::option::Option<AttributeValue<'life>>,
63925    ///
63926    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
63927    ///     <ul>
63928    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
63929    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
63930    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
63931    ///       <li><code>characters</code>, all letters should default to uppercase</li>
63932    ///     </ul>
63933    ///   
63934    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
63935    ///
63936    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
63937    ///   
63938    pub autofocus: core::option::Option<AttributeValue<'life>>,
63939    ///
63940    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
63941    ///   
63942    pub class: core::option::Option<AttributeValue<'life>>,
63943    ///
63944    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
63945    ///     <ul>
63946    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
63947    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
63948    ///     </ul>
63949    ///   
63950    pub contenteditable: core::option::Option<AttributeValue<'life>>,
63951    ///
63952    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
63953    ///   
63954    pub contextmenu: core::option::Option<AttributeValue<'life>>,
63955    ///
63956    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
63957    ///   
63958    #[cfg(feature = "alloc")]
63959    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
63960    ///
63961    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
63962    ///     <ul>
63963    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
63964    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
63965    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
63966    ///     </ul>
63967    ///   
63968    pub dir: core::option::Option<AttributeValue<'life>>,
63969    ///
63970    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
63971    ///     <ul>
63972    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
63973    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
63974    ///     </ul>
63975    ///   
63976    pub draggable: core::option::Option<AttributeValue<'life>>,
63977    ///
63978    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
63979    ///   
63980    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
63981    ///
63982    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
63983    ///   
63984    pub exportparts: core::option::Option<AttributeValue<'life>>,
63985    /// /// Extra attributes of the element.
63986
63987    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
63988    #[cfg(feature = "alloc")]
63989    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
63990    ///
63991    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
63992    ///   
63993    pub hidden: core::option::Option<AttributeValue<'life>>,
63994    ///
63995    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
63996    ///   
63997    pub id: core::option::Option<AttributeValue<'life>>,
63998    ///
63999    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
64000    ///   
64001    pub inert: core::option::Option<AttributeValue<'life>>,
64002    ///
64003    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
64004    ///   
64005    pub inputmode: core::option::Option<AttributeValue<'life>>,
64006    ///
64007    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
64008    ///   
64009    pub is: core::option::Option<AttributeValue<'life>>,
64010    ///
64011    ///     <p>The unique, global identifier of an item.</p>
64012    ///   
64013    pub itemid: core::option::Option<AttributeValue<'life>>,
64014    ///
64015    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
64016    ///   
64017    pub itemprop: core::option::Option<AttributeValue<'life>>,
64018    ///
64019    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
64020    ///   
64021    pub itemref: core::option::Option<AttributeValue<'life>>,
64022    ///
64023    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
64024    ///   
64025    pub itemscope: core::option::Option<AttributeValue<'life>>,
64026    ///
64027    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
64028    ///   
64029    pub itemtype: core::option::Option<AttributeValue<'life>>,
64030    ///
64031    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
64032    ///   
64033    pub lang: core::option::Option<AttributeValue<'life>>,
64034    ///
64035    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
64036    ///   
64037    pub nonce: core::option::Option<AttributeValue<'life>>,
64038    ///
64039    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
64040    ///   
64041    pub part: core::option::Option<AttributeValue<'life>>,
64042    ///
64043    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
64044    ///   
64045    pub popover: core::option::Option<AttributeValue<'life>>,
64046    ///
64047    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
64048    ///   
64049    pub role: core::option::Option<AttributeValue<'life>>,
64050    ///
64051    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
64052    ///   
64053    pub slot: core::option::Option<AttributeValue<'life>>,
64054    ///
64055    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
64056    ///     <ul>
64057    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
64058    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
64059    ///     </ul>
64060    ///   
64061    pub spellcheck: core::option::Option<AttributeValue<'life>>,
64062    ///
64063    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
64064    ///   
64065    pub style: core::option::Option<AttributeValue<'life>>,
64066    ///
64067    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
64068    ///     <ul>
64069    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
64070    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
64071    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
64072    ///     </ul>
64073    ///   
64074    pub tabindex: core::option::Option<AttributeValue<'life>>,
64075    ///
64076    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
64077    ///   
64078    pub title: core::option::Option<AttributeValue<'life>>,
64079    ///
64080    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
64081    ///     <ul>
64082    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
64083    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
64084    ///     </ul>
64085    ///   
64086    pub translate: core::option::Option<AttributeValue<'life>>,
64087    ///
64088    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
64089    ///     <ul>
64090    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
64091    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
64092    ///     </ul>
64093    ///   
64094    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
64095}
64096#[allow(deprecated)]
64097
64098impl<'life> Nobr<'life> {
64099    /// Get the tag name of the element.
64100    /// This is the same as the name of the struct, in kebab-case.
64101    pub fn tag() -> &'static str {
64102        "nobr"
64103    }
64104    /// Sets an attribute of the element.
64105    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
64106    /// If the `alloc` feature is disabled, this function will silently fail.
64107    ///
64108    /// # Note
64109    /// This only works when the attribute is lowercase.
64110    pub fn set_attr(
64111        &mut self,
64112        name: &'life str,
64113        value: impl core::convert::Into<AttributeValue<'life>>,
64114    ) {
64115        match name {
64116            "accesskey" => self.accesskey = Some(value.into()),
64117            "autocapitalize" => self.autocapitalize = Some(value.into()),
64118            "autofocus" => self.autofocus = Some(value.into()),
64119            "class" => self.class = Some(value.into()),
64120            "contenteditable" => self.contenteditable = Some(value.into()),
64121            "contextmenu" => self.contextmenu = Some(value.into()),
64122            "dir" => self.dir = Some(value.into()),
64123            "draggable" => self.draggable = Some(value.into()),
64124            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
64125            "exportparts" => self.exportparts = Some(value.into()),
64126            "hidden" => self.hidden = Some(value.into()),
64127            "id" => self.id = Some(value.into()),
64128            "inert" => self.inert = Some(value.into()),
64129            "inputmode" => self.inputmode = Some(value.into()),
64130            "is" => self.is = Some(value.into()),
64131            "itemid" => self.itemid = Some(value.into()),
64132            "itemprop" => self.itemprop = Some(value.into()),
64133            "itemref" => self.itemref = Some(value.into()),
64134            "itemscope" => self.itemscope = Some(value.into()),
64135            "itemtype" => self.itemtype = Some(value.into()),
64136            "lang" => self.lang = Some(value.into()),
64137            "nonce" => self.nonce = Some(value.into()),
64138            "part" => self.part = Some(value.into()),
64139            "popover" => self.popover = Some(value.into()),
64140            "role" => self.role = Some(value.into()),
64141            "slot" => self.slot = Some(value.into()),
64142            "spellcheck" => self.spellcheck = Some(value.into()),
64143            "style" => self.style = Some(value.into()),
64144            "tabindex" => self.tabindex = Some(value.into()),
64145            "title" => self.title = Some(value.into()),
64146            "translate" => self.translate = Some(value.into()),
64147            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
64148            #[cfg(feature = "alloc")]
64149            _ => {
64150                #[allow(clippy::useless_conversion)]
64151                self.extra.insert(name.into(), value.into());
64152            }
64153            #[cfg(not(feature = "alloc"))]
64154            _ => {}
64155        }
64156    }
64157}
64158/// The <strong><code>&lt;nobr&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> 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.
64159///
64160/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/nobr>
64161#[deprecated]
64162#[cfg(feature = "alloc")]
64163#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
64164pub struct NobrOwned {
64165    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
64166    ///   
64167    pub accesskey: core::option::Option<AttributeValueOwned>,
64168    ///
64169    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
64170    ///     <ul>
64171    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
64172    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
64173    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
64174    ///       <li><code>characters</code>, all letters should default to uppercase</li>
64175    ///     </ul>
64176    ///   
64177    pub autocapitalize: core::option::Option<AttributeValueOwned>,
64178    ///
64179    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
64180    ///   
64181    pub autofocus: core::option::Option<AttributeValueOwned>,
64182    ///
64183    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
64184    ///   
64185    pub class: core::option::Option<AttributeValueOwned>,
64186    ///
64187    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
64188    ///     <ul>
64189    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
64190    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
64191    ///     </ul>
64192    ///   
64193    pub contenteditable: core::option::Option<AttributeValueOwned>,
64194    ///
64195    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
64196    ///   
64197    pub contextmenu: core::option::Option<AttributeValueOwned>,
64198    ///
64199    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
64200    ///   
64201    #[cfg(feature = "alloc")]
64202    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
64203    ///
64204    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
64205    ///     <ul>
64206    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
64207    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
64208    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
64209    ///     </ul>
64210    ///   
64211    pub dir: core::option::Option<AttributeValueOwned>,
64212    ///
64213    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
64214    ///     <ul>
64215    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
64216    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
64217    ///     </ul>
64218    ///   
64219    pub draggable: core::option::Option<AttributeValueOwned>,
64220    ///
64221    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
64222    ///   
64223    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
64224    ///
64225    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
64226    ///   
64227    pub exportparts: core::option::Option<AttributeValueOwned>,
64228    /// /// Extra attributes of the element.
64229
64230    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
64231    #[cfg(feature = "alloc")]
64232    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
64233    ///
64234    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
64235    ///   
64236    pub hidden: core::option::Option<AttributeValueOwned>,
64237    ///
64238    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
64239    ///   
64240    pub id: core::option::Option<AttributeValueOwned>,
64241    ///
64242    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
64243    ///   
64244    pub inert: core::option::Option<AttributeValueOwned>,
64245    ///
64246    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
64247    ///   
64248    pub inputmode: core::option::Option<AttributeValueOwned>,
64249    ///
64250    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
64251    ///   
64252    pub is: core::option::Option<AttributeValueOwned>,
64253    ///
64254    ///     <p>The unique, global identifier of an item.</p>
64255    ///   
64256    pub itemid: core::option::Option<AttributeValueOwned>,
64257    ///
64258    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
64259    ///   
64260    pub itemprop: core::option::Option<AttributeValueOwned>,
64261    ///
64262    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
64263    ///   
64264    pub itemref: core::option::Option<AttributeValueOwned>,
64265    ///
64266    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
64267    ///   
64268    pub itemscope: core::option::Option<AttributeValueOwned>,
64269    ///
64270    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
64271    ///   
64272    pub itemtype: core::option::Option<AttributeValueOwned>,
64273    ///
64274    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
64275    ///   
64276    pub lang: core::option::Option<AttributeValueOwned>,
64277    ///
64278    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
64279    ///   
64280    pub nonce: core::option::Option<AttributeValueOwned>,
64281    ///
64282    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
64283    ///   
64284    pub part: core::option::Option<AttributeValueOwned>,
64285    ///
64286    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
64287    ///   
64288    pub popover: core::option::Option<AttributeValueOwned>,
64289    ///
64290    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
64291    ///   
64292    pub role: core::option::Option<AttributeValueOwned>,
64293    ///
64294    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
64295    ///   
64296    pub slot: core::option::Option<AttributeValueOwned>,
64297    ///
64298    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
64299    ///     <ul>
64300    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
64301    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
64302    ///     </ul>
64303    ///   
64304    pub spellcheck: core::option::Option<AttributeValueOwned>,
64305    ///
64306    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
64307    ///   
64308    pub style: core::option::Option<AttributeValueOwned>,
64309    ///
64310    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
64311    ///     <ul>
64312    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
64313    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
64314    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
64315    ///     </ul>
64316    ///   
64317    pub tabindex: core::option::Option<AttributeValueOwned>,
64318    ///
64319    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
64320    ///   
64321    pub title: core::option::Option<AttributeValueOwned>,
64322    ///
64323    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
64324    ///     <ul>
64325    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
64326    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
64327    ///     </ul>
64328    ///   
64329    pub translate: core::option::Option<AttributeValueOwned>,
64330    ///
64331    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
64332    ///     <ul>
64333    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
64334    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
64335    ///     </ul>
64336    ///   
64337    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
64338}
64339#[allow(deprecated)]
64340#[cfg(feature = "alloc")]
64341impl NobrOwned {
64342    /// Get the tag name of the element.
64343    /// This is the same as the name of the struct, in kebab-case.
64344    pub fn tag() -> &'static str {
64345        "nobr"
64346    }
64347    /// Sets an attribute of the element.
64348    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
64349    /// If the `alloc` feature is disabled, this function will silently fail.
64350    ///
64351    /// # Note
64352    /// This only works when the attribute is lowercase.
64353    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
64354        match name {
64355            "accesskey" => self.accesskey = Some(value.into()),
64356            "autocapitalize" => self.autocapitalize = Some(value.into()),
64357            "autofocus" => self.autofocus = Some(value.into()),
64358            "class" => self.class = Some(value.into()),
64359            "contenteditable" => self.contenteditable = Some(value.into()),
64360            "contextmenu" => self.contextmenu = Some(value.into()),
64361            "dir" => self.dir = Some(value.into()),
64362            "draggable" => self.draggable = Some(value.into()),
64363            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
64364            "exportparts" => self.exportparts = Some(value.into()),
64365            "hidden" => self.hidden = Some(value.into()),
64366            "id" => self.id = Some(value.into()),
64367            "inert" => self.inert = Some(value.into()),
64368            "inputmode" => self.inputmode = Some(value.into()),
64369            "is" => self.is = Some(value.into()),
64370            "itemid" => self.itemid = Some(value.into()),
64371            "itemprop" => self.itemprop = Some(value.into()),
64372            "itemref" => self.itemref = Some(value.into()),
64373            "itemscope" => self.itemscope = Some(value.into()),
64374            "itemtype" => self.itemtype = Some(value.into()),
64375            "lang" => self.lang = Some(value.into()),
64376            "nonce" => self.nonce = Some(value.into()),
64377            "part" => self.part = Some(value.into()),
64378            "popover" => self.popover = Some(value.into()),
64379            "role" => self.role = Some(value.into()),
64380            "slot" => self.slot = Some(value.into()),
64381            "spellcheck" => self.spellcheck = Some(value.into()),
64382            "style" => self.style = Some(value.into()),
64383            "tabindex" => self.tabindex = Some(value.into()),
64384            "title" => self.title = Some(value.into()),
64385            "translate" => self.translate = Some(value.into()),
64386            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
64387            #[cfg(feature = "alloc")]
64388            _ => {
64389                #[allow(clippy::useless_conversion)]
64390                self.extra.insert(name.into(), value.into());
64391            }
64392            #[cfg(not(feature = "alloc"))]
64393            _ => {}
64394        }
64395    }
64396}
64397/// The <strong><code>&lt;noembed&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element is an obsolete, non-standard way to provide alternative, or "fallback", content for browsers that do not support the <a href="/en-US/docs/Web/HTML/Element/embed"><code>&lt;embed&gt;</code></a> element or do not support the type of <a href="/en-US/docs/Web/HTML/Content_categories#embedded_content">embedded content</a> 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 <a href="/en-US/docs/Web/HTML/Element/object"><code>&lt;object&gt;</code></a> element.
64398///
64399/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/noembed>
64400#[deprecated]
64401#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
64402pub struct Noembed<'life> {
64403    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
64404    ///   
64405    pub accesskey: core::option::Option<AttributeValue<'life>>,
64406    ///
64407    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
64408    ///     <ul>
64409    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
64410    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
64411    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
64412    ///       <li><code>characters</code>, all letters should default to uppercase</li>
64413    ///     </ul>
64414    ///   
64415    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
64416    ///
64417    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
64418    ///   
64419    pub autofocus: core::option::Option<AttributeValue<'life>>,
64420    ///
64421    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
64422    ///   
64423    pub class: core::option::Option<AttributeValue<'life>>,
64424    ///
64425    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
64426    ///     <ul>
64427    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
64428    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
64429    ///     </ul>
64430    ///   
64431    pub contenteditable: core::option::Option<AttributeValue<'life>>,
64432    ///
64433    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
64434    ///   
64435    pub contextmenu: core::option::Option<AttributeValue<'life>>,
64436    ///
64437    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
64438    ///   
64439    #[cfg(feature = "alloc")]
64440    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
64441    ///
64442    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
64443    ///     <ul>
64444    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
64445    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
64446    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
64447    ///     </ul>
64448    ///   
64449    pub dir: core::option::Option<AttributeValue<'life>>,
64450    ///
64451    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
64452    ///     <ul>
64453    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
64454    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
64455    ///     </ul>
64456    ///   
64457    pub draggable: core::option::Option<AttributeValue<'life>>,
64458    ///
64459    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
64460    ///   
64461    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
64462    ///
64463    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
64464    ///   
64465    pub exportparts: core::option::Option<AttributeValue<'life>>,
64466    /// /// Extra attributes of the element.
64467
64468    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
64469    #[cfg(feature = "alloc")]
64470    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
64471    ///
64472    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
64473    ///   
64474    pub hidden: core::option::Option<AttributeValue<'life>>,
64475    ///
64476    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
64477    ///   
64478    pub id: core::option::Option<AttributeValue<'life>>,
64479    ///
64480    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
64481    ///   
64482    pub inert: core::option::Option<AttributeValue<'life>>,
64483    ///
64484    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
64485    ///   
64486    pub inputmode: core::option::Option<AttributeValue<'life>>,
64487    ///
64488    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
64489    ///   
64490    pub is: core::option::Option<AttributeValue<'life>>,
64491    ///
64492    ///     <p>The unique, global identifier of an item.</p>
64493    ///   
64494    pub itemid: core::option::Option<AttributeValue<'life>>,
64495    ///
64496    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
64497    ///   
64498    pub itemprop: core::option::Option<AttributeValue<'life>>,
64499    ///
64500    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
64501    ///   
64502    pub itemref: core::option::Option<AttributeValue<'life>>,
64503    ///
64504    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
64505    ///   
64506    pub itemscope: core::option::Option<AttributeValue<'life>>,
64507    ///
64508    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
64509    ///   
64510    pub itemtype: core::option::Option<AttributeValue<'life>>,
64511    ///
64512    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
64513    ///   
64514    pub lang: core::option::Option<AttributeValue<'life>>,
64515    ///
64516    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
64517    ///   
64518    pub nonce: core::option::Option<AttributeValue<'life>>,
64519    ///
64520    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
64521    ///   
64522    pub part: core::option::Option<AttributeValue<'life>>,
64523    ///
64524    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
64525    ///   
64526    pub popover: core::option::Option<AttributeValue<'life>>,
64527    ///
64528    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
64529    ///   
64530    pub role: core::option::Option<AttributeValue<'life>>,
64531    ///
64532    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
64533    ///   
64534    pub slot: core::option::Option<AttributeValue<'life>>,
64535    ///
64536    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
64537    ///     <ul>
64538    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
64539    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
64540    ///     </ul>
64541    ///   
64542    pub spellcheck: core::option::Option<AttributeValue<'life>>,
64543    ///
64544    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
64545    ///   
64546    pub style: core::option::Option<AttributeValue<'life>>,
64547    ///
64548    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
64549    ///     <ul>
64550    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
64551    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
64552    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
64553    ///     </ul>
64554    ///   
64555    pub tabindex: core::option::Option<AttributeValue<'life>>,
64556    ///
64557    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
64558    ///   
64559    pub title: core::option::Option<AttributeValue<'life>>,
64560    ///
64561    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
64562    ///     <ul>
64563    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
64564    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
64565    ///     </ul>
64566    ///   
64567    pub translate: core::option::Option<AttributeValue<'life>>,
64568    ///
64569    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
64570    ///     <ul>
64571    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
64572    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
64573    ///     </ul>
64574    ///   
64575    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
64576}
64577#[allow(deprecated)]
64578
64579impl<'life> Noembed<'life> {
64580    /// Get the tag name of the element.
64581    /// This is the same as the name of the struct, in kebab-case.
64582    pub fn tag() -> &'static str {
64583        "noembed"
64584    }
64585    /// Sets an attribute of the element.
64586    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
64587    /// If the `alloc` feature is disabled, this function will silently fail.
64588    ///
64589    /// # Note
64590    /// This only works when the attribute is lowercase.
64591    pub fn set_attr(
64592        &mut self,
64593        name: &'life str,
64594        value: impl core::convert::Into<AttributeValue<'life>>,
64595    ) {
64596        match name {
64597            "accesskey" => self.accesskey = Some(value.into()),
64598            "autocapitalize" => self.autocapitalize = Some(value.into()),
64599            "autofocus" => self.autofocus = Some(value.into()),
64600            "class" => self.class = Some(value.into()),
64601            "contenteditable" => self.contenteditable = Some(value.into()),
64602            "contextmenu" => self.contextmenu = Some(value.into()),
64603            "dir" => self.dir = Some(value.into()),
64604            "draggable" => self.draggable = Some(value.into()),
64605            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
64606            "exportparts" => self.exportparts = Some(value.into()),
64607            "hidden" => self.hidden = Some(value.into()),
64608            "id" => self.id = Some(value.into()),
64609            "inert" => self.inert = Some(value.into()),
64610            "inputmode" => self.inputmode = Some(value.into()),
64611            "is" => self.is = Some(value.into()),
64612            "itemid" => self.itemid = Some(value.into()),
64613            "itemprop" => self.itemprop = Some(value.into()),
64614            "itemref" => self.itemref = Some(value.into()),
64615            "itemscope" => self.itemscope = Some(value.into()),
64616            "itemtype" => self.itemtype = Some(value.into()),
64617            "lang" => self.lang = Some(value.into()),
64618            "nonce" => self.nonce = Some(value.into()),
64619            "part" => self.part = Some(value.into()),
64620            "popover" => self.popover = Some(value.into()),
64621            "role" => self.role = Some(value.into()),
64622            "slot" => self.slot = Some(value.into()),
64623            "spellcheck" => self.spellcheck = Some(value.into()),
64624            "style" => self.style = Some(value.into()),
64625            "tabindex" => self.tabindex = Some(value.into()),
64626            "title" => self.title = Some(value.into()),
64627            "translate" => self.translate = Some(value.into()),
64628            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
64629            #[cfg(feature = "alloc")]
64630            _ => {
64631                #[allow(clippy::useless_conversion)]
64632                self.extra.insert(name.into(), value.into());
64633            }
64634            #[cfg(not(feature = "alloc"))]
64635            _ => {}
64636        }
64637    }
64638}
64639/// The <strong><code>&lt;noembed&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element is an obsolete, non-standard way to provide alternative, or "fallback", content for browsers that do not support the <a href="/en-US/docs/Web/HTML/Element/embed"><code>&lt;embed&gt;</code></a> element or do not support the type of <a href="/en-US/docs/Web/HTML/Content_categories#embedded_content">embedded content</a> 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 <a href="/en-US/docs/Web/HTML/Element/object"><code>&lt;object&gt;</code></a> element.
64640///
64641/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/noembed>
64642#[deprecated]
64643#[cfg(feature = "alloc")]
64644#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
64645pub struct NoembedOwned {
64646    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
64647    ///   
64648    pub accesskey: core::option::Option<AttributeValueOwned>,
64649    ///
64650    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
64651    ///     <ul>
64652    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
64653    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
64654    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
64655    ///       <li><code>characters</code>, all letters should default to uppercase</li>
64656    ///     </ul>
64657    ///   
64658    pub autocapitalize: core::option::Option<AttributeValueOwned>,
64659    ///
64660    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
64661    ///   
64662    pub autofocus: core::option::Option<AttributeValueOwned>,
64663    ///
64664    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
64665    ///   
64666    pub class: core::option::Option<AttributeValueOwned>,
64667    ///
64668    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
64669    ///     <ul>
64670    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
64671    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
64672    ///     </ul>
64673    ///   
64674    pub contenteditable: core::option::Option<AttributeValueOwned>,
64675    ///
64676    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
64677    ///   
64678    pub contextmenu: core::option::Option<AttributeValueOwned>,
64679    ///
64680    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
64681    ///   
64682    #[cfg(feature = "alloc")]
64683    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
64684    ///
64685    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
64686    ///     <ul>
64687    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
64688    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
64689    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
64690    ///     </ul>
64691    ///   
64692    pub dir: core::option::Option<AttributeValueOwned>,
64693    ///
64694    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
64695    ///     <ul>
64696    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
64697    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
64698    ///     </ul>
64699    ///   
64700    pub draggable: core::option::Option<AttributeValueOwned>,
64701    ///
64702    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
64703    ///   
64704    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
64705    ///
64706    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
64707    ///   
64708    pub exportparts: core::option::Option<AttributeValueOwned>,
64709    /// /// Extra attributes of the element.
64710
64711    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
64712    #[cfg(feature = "alloc")]
64713    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
64714    ///
64715    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
64716    ///   
64717    pub hidden: core::option::Option<AttributeValueOwned>,
64718    ///
64719    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
64720    ///   
64721    pub id: core::option::Option<AttributeValueOwned>,
64722    ///
64723    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
64724    ///   
64725    pub inert: core::option::Option<AttributeValueOwned>,
64726    ///
64727    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
64728    ///   
64729    pub inputmode: core::option::Option<AttributeValueOwned>,
64730    ///
64731    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
64732    ///   
64733    pub is: core::option::Option<AttributeValueOwned>,
64734    ///
64735    ///     <p>The unique, global identifier of an item.</p>
64736    ///   
64737    pub itemid: core::option::Option<AttributeValueOwned>,
64738    ///
64739    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
64740    ///   
64741    pub itemprop: core::option::Option<AttributeValueOwned>,
64742    ///
64743    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
64744    ///   
64745    pub itemref: core::option::Option<AttributeValueOwned>,
64746    ///
64747    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
64748    ///   
64749    pub itemscope: core::option::Option<AttributeValueOwned>,
64750    ///
64751    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
64752    ///   
64753    pub itemtype: core::option::Option<AttributeValueOwned>,
64754    ///
64755    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
64756    ///   
64757    pub lang: core::option::Option<AttributeValueOwned>,
64758    ///
64759    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
64760    ///   
64761    pub nonce: core::option::Option<AttributeValueOwned>,
64762    ///
64763    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
64764    ///   
64765    pub part: core::option::Option<AttributeValueOwned>,
64766    ///
64767    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
64768    ///   
64769    pub popover: core::option::Option<AttributeValueOwned>,
64770    ///
64771    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
64772    ///   
64773    pub role: core::option::Option<AttributeValueOwned>,
64774    ///
64775    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
64776    ///   
64777    pub slot: core::option::Option<AttributeValueOwned>,
64778    ///
64779    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
64780    ///     <ul>
64781    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
64782    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
64783    ///     </ul>
64784    ///   
64785    pub spellcheck: core::option::Option<AttributeValueOwned>,
64786    ///
64787    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
64788    ///   
64789    pub style: core::option::Option<AttributeValueOwned>,
64790    ///
64791    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
64792    ///     <ul>
64793    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
64794    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
64795    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
64796    ///     </ul>
64797    ///   
64798    pub tabindex: core::option::Option<AttributeValueOwned>,
64799    ///
64800    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
64801    ///   
64802    pub title: core::option::Option<AttributeValueOwned>,
64803    ///
64804    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
64805    ///     <ul>
64806    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
64807    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
64808    ///     </ul>
64809    ///   
64810    pub translate: core::option::Option<AttributeValueOwned>,
64811    ///
64812    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
64813    ///     <ul>
64814    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
64815    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
64816    ///     </ul>
64817    ///   
64818    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
64819}
64820#[allow(deprecated)]
64821#[cfg(feature = "alloc")]
64822impl NoembedOwned {
64823    /// Get the tag name of the element.
64824    /// This is the same as the name of the struct, in kebab-case.
64825    pub fn tag() -> &'static str {
64826        "noembed"
64827    }
64828    /// Sets an attribute of the element.
64829    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
64830    /// If the `alloc` feature is disabled, this function will silently fail.
64831    ///
64832    /// # Note
64833    /// This only works when the attribute is lowercase.
64834    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
64835        match name {
64836            "accesskey" => self.accesskey = Some(value.into()),
64837            "autocapitalize" => self.autocapitalize = Some(value.into()),
64838            "autofocus" => self.autofocus = Some(value.into()),
64839            "class" => self.class = Some(value.into()),
64840            "contenteditable" => self.contenteditable = Some(value.into()),
64841            "contextmenu" => self.contextmenu = Some(value.into()),
64842            "dir" => self.dir = Some(value.into()),
64843            "draggable" => self.draggable = Some(value.into()),
64844            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
64845            "exportparts" => self.exportparts = Some(value.into()),
64846            "hidden" => self.hidden = Some(value.into()),
64847            "id" => self.id = Some(value.into()),
64848            "inert" => self.inert = Some(value.into()),
64849            "inputmode" => self.inputmode = Some(value.into()),
64850            "is" => self.is = Some(value.into()),
64851            "itemid" => self.itemid = Some(value.into()),
64852            "itemprop" => self.itemprop = Some(value.into()),
64853            "itemref" => self.itemref = Some(value.into()),
64854            "itemscope" => self.itemscope = Some(value.into()),
64855            "itemtype" => self.itemtype = Some(value.into()),
64856            "lang" => self.lang = Some(value.into()),
64857            "nonce" => self.nonce = Some(value.into()),
64858            "part" => self.part = Some(value.into()),
64859            "popover" => self.popover = Some(value.into()),
64860            "role" => self.role = Some(value.into()),
64861            "slot" => self.slot = Some(value.into()),
64862            "spellcheck" => self.spellcheck = Some(value.into()),
64863            "style" => self.style = Some(value.into()),
64864            "tabindex" => self.tabindex = Some(value.into()),
64865            "title" => self.title = Some(value.into()),
64866            "translate" => self.translate = Some(value.into()),
64867            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
64868            #[cfg(feature = "alloc")]
64869            _ => {
64870                #[allow(clippy::useless_conversion)]
64871                self.extra.insert(name.into(), value.into());
64872            }
64873            #[cfg(not(feature = "alloc"))]
64874            _ => {}
64875        }
64876    }
64877}
64878/// The <strong><code>&lt;noframes&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element provides content to be presented in browsers that don't support (or have disabled support for) the <a href="/en-US/docs/Web/HTML/Element/frame"><code>&lt;frame&gt;</code></a> 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.
64879///
64880/// A <code>&lt;noframes&gt;</code> element can contain any HTML elements that are allowed within the body of an HTML document, except for the <a href="/en-US/docs/Web/HTML/Element/frameset"><code>&lt;frameset&gt;</code></a> and <a href="/en-US/docs/Web/HTML/Element/frame"><code>&lt;frame&gt;</code></a> elements, since using frames when they aren't supported doesn't make sense.
64881///
64882/// <code>&lt;noframes&gt;</code> 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.
64883///
64884/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/noframes>
64885#[deprecated]
64886#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
64887pub struct Noframes<'life> {
64888    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
64889    ///   
64890    pub accesskey: core::option::Option<AttributeValue<'life>>,
64891    ///
64892    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
64893    ///     <ul>
64894    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
64895    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
64896    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
64897    ///       <li><code>characters</code>, all letters should default to uppercase</li>
64898    ///     </ul>
64899    ///   
64900    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
64901    ///
64902    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
64903    ///   
64904    pub autofocus: core::option::Option<AttributeValue<'life>>,
64905    ///
64906    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
64907    ///   
64908    pub class: core::option::Option<AttributeValue<'life>>,
64909    ///
64910    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
64911    ///     <ul>
64912    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
64913    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
64914    ///     </ul>
64915    ///   
64916    pub contenteditable: core::option::Option<AttributeValue<'life>>,
64917    ///
64918    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
64919    ///   
64920    pub contextmenu: core::option::Option<AttributeValue<'life>>,
64921    ///
64922    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
64923    ///   
64924    #[cfg(feature = "alloc")]
64925    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
64926    ///
64927    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
64928    ///     <ul>
64929    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
64930    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
64931    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
64932    ///     </ul>
64933    ///   
64934    pub dir: core::option::Option<AttributeValue<'life>>,
64935    ///
64936    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
64937    ///     <ul>
64938    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
64939    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
64940    ///     </ul>
64941    ///   
64942    pub draggable: core::option::Option<AttributeValue<'life>>,
64943    ///
64944    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
64945    ///   
64946    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
64947    ///
64948    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
64949    ///   
64950    pub exportparts: core::option::Option<AttributeValue<'life>>,
64951    /// /// Extra attributes of the element.
64952
64953    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
64954    #[cfg(feature = "alloc")]
64955    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
64956    ///
64957    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
64958    ///   
64959    pub hidden: core::option::Option<AttributeValue<'life>>,
64960    ///
64961    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
64962    ///   
64963    pub id: core::option::Option<AttributeValue<'life>>,
64964    ///
64965    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
64966    ///   
64967    pub inert: core::option::Option<AttributeValue<'life>>,
64968    ///
64969    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
64970    ///   
64971    pub inputmode: core::option::Option<AttributeValue<'life>>,
64972    ///
64973    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
64974    ///   
64975    pub is: core::option::Option<AttributeValue<'life>>,
64976    ///
64977    ///     <p>The unique, global identifier of an item.</p>
64978    ///   
64979    pub itemid: core::option::Option<AttributeValue<'life>>,
64980    ///
64981    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
64982    ///   
64983    pub itemprop: core::option::Option<AttributeValue<'life>>,
64984    ///
64985    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
64986    ///   
64987    pub itemref: core::option::Option<AttributeValue<'life>>,
64988    ///
64989    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
64990    ///   
64991    pub itemscope: core::option::Option<AttributeValue<'life>>,
64992    ///
64993    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
64994    ///   
64995    pub itemtype: core::option::Option<AttributeValue<'life>>,
64996    ///
64997    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
64998    ///   
64999    pub lang: core::option::Option<AttributeValue<'life>>,
65000    ///
65001    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
65002    ///   
65003    pub nonce: core::option::Option<AttributeValue<'life>>,
65004    ///
65005    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
65006    ///   
65007    pub part: core::option::Option<AttributeValue<'life>>,
65008    ///
65009    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
65010    ///   
65011    pub popover: core::option::Option<AttributeValue<'life>>,
65012    ///
65013    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
65014    ///   
65015    pub role: core::option::Option<AttributeValue<'life>>,
65016    ///
65017    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
65018    ///   
65019    pub slot: core::option::Option<AttributeValue<'life>>,
65020    ///
65021    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
65022    ///     <ul>
65023    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
65024    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
65025    ///     </ul>
65026    ///   
65027    pub spellcheck: core::option::Option<AttributeValue<'life>>,
65028    ///
65029    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
65030    ///   
65031    pub style: core::option::Option<AttributeValue<'life>>,
65032    ///
65033    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
65034    ///     <ul>
65035    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
65036    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
65037    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
65038    ///     </ul>
65039    ///   
65040    pub tabindex: core::option::Option<AttributeValue<'life>>,
65041    ///
65042    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
65043    ///   
65044    pub title: core::option::Option<AttributeValue<'life>>,
65045    ///
65046    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
65047    ///     <ul>
65048    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
65049    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
65050    ///     </ul>
65051    ///   
65052    pub translate: core::option::Option<AttributeValue<'life>>,
65053    ///
65054    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
65055    ///     <ul>
65056    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
65057    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
65058    ///     </ul>
65059    ///   
65060    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
65061}
65062#[allow(deprecated)]
65063
65064impl<'life> Noframes<'life> {
65065    /// Get the tag name of the element.
65066    /// This is the same as the name of the struct, in kebab-case.
65067    pub fn tag() -> &'static str {
65068        "noframes"
65069    }
65070    /// Sets an attribute of the element.
65071    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
65072    /// If the `alloc` feature is disabled, this function will silently fail.
65073    ///
65074    /// # Note
65075    /// This only works when the attribute is lowercase.
65076    pub fn set_attr(
65077        &mut self,
65078        name: &'life str,
65079        value: impl core::convert::Into<AttributeValue<'life>>,
65080    ) {
65081        match name {
65082            "accesskey" => self.accesskey = Some(value.into()),
65083            "autocapitalize" => self.autocapitalize = Some(value.into()),
65084            "autofocus" => self.autofocus = Some(value.into()),
65085            "class" => self.class = Some(value.into()),
65086            "contenteditable" => self.contenteditable = Some(value.into()),
65087            "contextmenu" => self.contextmenu = Some(value.into()),
65088            "dir" => self.dir = Some(value.into()),
65089            "draggable" => self.draggable = Some(value.into()),
65090            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
65091            "exportparts" => self.exportparts = Some(value.into()),
65092            "hidden" => self.hidden = Some(value.into()),
65093            "id" => self.id = Some(value.into()),
65094            "inert" => self.inert = Some(value.into()),
65095            "inputmode" => self.inputmode = Some(value.into()),
65096            "is" => self.is = Some(value.into()),
65097            "itemid" => self.itemid = Some(value.into()),
65098            "itemprop" => self.itemprop = Some(value.into()),
65099            "itemref" => self.itemref = Some(value.into()),
65100            "itemscope" => self.itemscope = Some(value.into()),
65101            "itemtype" => self.itemtype = Some(value.into()),
65102            "lang" => self.lang = Some(value.into()),
65103            "nonce" => self.nonce = Some(value.into()),
65104            "part" => self.part = Some(value.into()),
65105            "popover" => self.popover = Some(value.into()),
65106            "role" => self.role = Some(value.into()),
65107            "slot" => self.slot = Some(value.into()),
65108            "spellcheck" => self.spellcheck = Some(value.into()),
65109            "style" => self.style = Some(value.into()),
65110            "tabindex" => self.tabindex = Some(value.into()),
65111            "title" => self.title = Some(value.into()),
65112            "translate" => self.translate = Some(value.into()),
65113            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
65114            #[cfg(feature = "alloc")]
65115            _ => {
65116                #[allow(clippy::useless_conversion)]
65117                self.extra.insert(name.into(), value.into());
65118            }
65119            #[cfg(not(feature = "alloc"))]
65120            _ => {}
65121        }
65122    }
65123}
65124/// The <strong><code>&lt;noframes&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element provides content to be presented in browsers that don't support (or have disabled support for) the <a href="/en-US/docs/Web/HTML/Element/frame"><code>&lt;frame&gt;</code></a> 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.
65125///
65126/// A <code>&lt;noframes&gt;</code> element can contain any HTML elements that are allowed within the body of an HTML document, except for the <a href="/en-US/docs/Web/HTML/Element/frameset"><code>&lt;frameset&gt;</code></a> and <a href="/en-US/docs/Web/HTML/Element/frame"><code>&lt;frame&gt;</code></a> elements, since using frames when they aren't supported doesn't make sense.
65127///
65128/// <code>&lt;noframes&gt;</code> 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.
65129///
65130/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/noframes>
65131#[deprecated]
65132#[cfg(feature = "alloc")]
65133#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
65134pub struct NoframesOwned {
65135    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
65136    ///   
65137    pub accesskey: core::option::Option<AttributeValueOwned>,
65138    ///
65139    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
65140    ///     <ul>
65141    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
65142    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
65143    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
65144    ///       <li><code>characters</code>, all letters should default to uppercase</li>
65145    ///     </ul>
65146    ///   
65147    pub autocapitalize: core::option::Option<AttributeValueOwned>,
65148    ///
65149    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
65150    ///   
65151    pub autofocus: core::option::Option<AttributeValueOwned>,
65152    ///
65153    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
65154    ///   
65155    pub class: core::option::Option<AttributeValueOwned>,
65156    ///
65157    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
65158    ///     <ul>
65159    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
65160    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
65161    ///     </ul>
65162    ///   
65163    pub contenteditable: core::option::Option<AttributeValueOwned>,
65164    ///
65165    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
65166    ///   
65167    pub contextmenu: core::option::Option<AttributeValueOwned>,
65168    ///
65169    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
65170    ///   
65171    #[cfg(feature = "alloc")]
65172    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
65173    ///
65174    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
65175    ///     <ul>
65176    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
65177    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
65178    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
65179    ///     </ul>
65180    ///   
65181    pub dir: core::option::Option<AttributeValueOwned>,
65182    ///
65183    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
65184    ///     <ul>
65185    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
65186    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
65187    ///     </ul>
65188    ///   
65189    pub draggable: core::option::Option<AttributeValueOwned>,
65190    ///
65191    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
65192    ///   
65193    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
65194    ///
65195    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
65196    ///   
65197    pub exportparts: core::option::Option<AttributeValueOwned>,
65198    /// /// Extra attributes of the element.
65199
65200    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
65201    #[cfg(feature = "alloc")]
65202    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
65203    ///
65204    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
65205    ///   
65206    pub hidden: core::option::Option<AttributeValueOwned>,
65207    ///
65208    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
65209    ///   
65210    pub id: core::option::Option<AttributeValueOwned>,
65211    ///
65212    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
65213    ///   
65214    pub inert: core::option::Option<AttributeValueOwned>,
65215    ///
65216    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
65217    ///   
65218    pub inputmode: core::option::Option<AttributeValueOwned>,
65219    ///
65220    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
65221    ///   
65222    pub is: core::option::Option<AttributeValueOwned>,
65223    ///
65224    ///     <p>The unique, global identifier of an item.</p>
65225    ///   
65226    pub itemid: core::option::Option<AttributeValueOwned>,
65227    ///
65228    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
65229    ///   
65230    pub itemprop: core::option::Option<AttributeValueOwned>,
65231    ///
65232    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
65233    ///   
65234    pub itemref: core::option::Option<AttributeValueOwned>,
65235    ///
65236    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
65237    ///   
65238    pub itemscope: core::option::Option<AttributeValueOwned>,
65239    ///
65240    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
65241    ///   
65242    pub itemtype: core::option::Option<AttributeValueOwned>,
65243    ///
65244    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
65245    ///   
65246    pub lang: core::option::Option<AttributeValueOwned>,
65247    ///
65248    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
65249    ///   
65250    pub nonce: core::option::Option<AttributeValueOwned>,
65251    ///
65252    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
65253    ///   
65254    pub part: core::option::Option<AttributeValueOwned>,
65255    ///
65256    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
65257    ///   
65258    pub popover: core::option::Option<AttributeValueOwned>,
65259    ///
65260    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
65261    ///   
65262    pub role: core::option::Option<AttributeValueOwned>,
65263    ///
65264    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
65265    ///   
65266    pub slot: core::option::Option<AttributeValueOwned>,
65267    ///
65268    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
65269    ///     <ul>
65270    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
65271    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
65272    ///     </ul>
65273    ///   
65274    pub spellcheck: core::option::Option<AttributeValueOwned>,
65275    ///
65276    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
65277    ///   
65278    pub style: core::option::Option<AttributeValueOwned>,
65279    ///
65280    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
65281    ///     <ul>
65282    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
65283    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
65284    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
65285    ///     </ul>
65286    ///   
65287    pub tabindex: core::option::Option<AttributeValueOwned>,
65288    ///
65289    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
65290    ///   
65291    pub title: core::option::Option<AttributeValueOwned>,
65292    ///
65293    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
65294    ///     <ul>
65295    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
65296    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
65297    ///     </ul>
65298    ///   
65299    pub translate: core::option::Option<AttributeValueOwned>,
65300    ///
65301    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
65302    ///     <ul>
65303    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
65304    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
65305    ///     </ul>
65306    ///   
65307    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
65308}
65309#[allow(deprecated)]
65310#[cfg(feature = "alloc")]
65311impl NoframesOwned {
65312    /// Get the tag name of the element.
65313    /// This is the same as the name of the struct, in kebab-case.
65314    pub fn tag() -> &'static str {
65315        "noframes"
65316    }
65317    /// Sets an attribute of the element.
65318    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
65319    /// If the `alloc` feature is disabled, this function will silently fail.
65320    ///
65321    /// # Note
65322    /// This only works when the attribute is lowercase.
65323    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
65324        match name {
65325            "accesskey" => self.accesskey = Some(value.into()),
65326            "autocapitalize" => self.autocapitalize = Some(value.into()),
65327            "autofocus" => self.autofocus = Some(value.into()),
65328            "class" => self.class = Some(value.into()),
65329            "contenteditable" => self.contenteditable = Some(value.into()),
65330            "contextmenu" => self.contextmenu = Some(value.into()),
65331            "dir" => self.dir = Some(value.into()),
65332            "draggable" => self.draggable = Some(value.into()),
65333            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
65334            "exportparts" => self.exportparts = Some(value.into()),
65335            "hidden" => self.hidden = Some(value.into()),
65336            "id" => self.id = Some(value.into()),
65337            "inert" => self.inert = Some(value.into()),
65338            "inputmode" => self.inputmode = Some(value.into()),
65339            "is" => self.is = Some(value.into()),
65340            "itemid" => self.itemid = Some(value.into()),
65341            "itemprop" => self.itemprop = Some(value.into()),
65342            "itemref" => self.itemref = Some(value.into()),
65343            "itemscope" => self.itemscope = Some(value.into()),
65344            "itemtype" => self.itemtype = Some(value.into()),
65345            "lang" => self.lang = Some(value.into()),
65346            "nonce" => self.nonce = Some(value.into()),
65347            "part" => self.part = Some(value.into()),
65348            "popover" => self.popover = Some(value.into()),
65349            "role" => self.role = Some(value.into()),
65350            "slot" => self.slot = Some(value.into()),
65351            "spellcheck" => self.spellcheck = Some(value.into()),
65352            "style" => self.style = Some(value.into()),
65353            "tabindex" => self.tabindex = Some(value.into()),
65354            "title" => self.title = Some(value.into()),
65355            "translate" => self.translate = Some(value.into()),
65356            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
65357            #[cfg(feature = "alloc")]
65358            _ => {
65359                #[allow(clippy::useless_conversion)]
65360                self.extra.insert(name.into(), value.into());
65361            }
65362            #[cfg(not(feature = "alloc"))]
65363            _ => {}
65364        }
65365    }
65366}
65367/// The <strong><code>&lt;param&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element defines parameters for an <a href="/en-US/docs/Web/HTML/Element/object"><code>&lt;object&gt;</code></a> element.
65368///
65369/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/param>
65370#[deprecated]
65371#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
65372pub struct Param<'life> {
65373    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
65374    ///   
65375    pub accesskey: core::option::Option<AttributeValue<'life>>,
65376    ///
65377    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
65378    ///     <ul>
65379    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
65380    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
65381    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
65382    ///       <li><code>characters</code>, all letters should default to uppercase</li>
65383    ///     </ul>
65384    ///   
65385    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
65386    ///
65387    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
65388    ///   
65389    pub autofocus: core::option::Option<AttributeValue<'life>>,
65390    ///
65391    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
65392    ///   
65393    pub class: core::option::Option<AttributeValue<'life>>,
65394    ///
65395    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
65396    ///     <ul>
65397    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
65398    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
65399    ///     </ul>
65400    ///   
65401    pub contenteditable: core::option::Option<AttributeValue<'life>>,
65402    ///
65403    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
65404    ///   
65405    pub contextmenu: core::option::Option<AttributeValue<'life>>,
65406    ///
65407    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
65408    ///   
65409    #[cfg(feature = "alloc")]
65410    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
65411    ///
65412    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
65413    ///     <ul>
65414    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
65415    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
65416    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
65417    ///     </ul>
65418    ///   
65419    pub dir: core::option::Option<AttributeValue<'life>>,
65420    ///
65421    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
65422    ///     <ul>
65423    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
65424    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
65425    ///     </ul>
65426    ///   
65427    pub draggable: core::option::Option<AttributeValue<'life>>,
65428    ///
65429    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
65430    ///   
65431    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
65432    ///
65433    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
65434    ///   
65435    pub exportparts: core::option::Option<AttributeValue<'life>>,
65436    /// /// Extra attributes of the element.
65437
65438    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
65439    #[cfg(feature = "alloc")]
65440    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
65441    ///
65442    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
65443    ///   
65444    pub hidden: core::option::Option<AttributeValue<'life>>,
65445    ///
65446    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
65447    ///   
65448    pub id: core::option::Option<AttributeValue<'life>>,
65449    ///
65450    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
65451    ///   
65452    pub inert: core::option::Option<AttributeValue<'life>>,
65453    ///
65454    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
65455    ///   
65456    pub inputmode: core::option::Option<AttributeValue<'life>>,
65457    ///
65458    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
65459    ///   
65460    pub is: core::option::Option<AttributeValue<'life>>,
65461    ///
65462    ///     <p>The unique, global identifier of an item.</p>
65463    ///   
65464    pub itemid: core::option::Option<AttributeValue<'life>>,
65465    ///
65466    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
65467    ///   
65468    pub itemprop: core::option::Option<AttributeValue<'life>>,
65469    ///
65470    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
65471    ///   
65472    pub itemref: core::option::Option<AttributeValue<'life>>,
65473    ///
65474    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
65475    ///   
65476    pub itemscope: core::option::Option<AttributeValue<'life>>,
65477    ///
65478    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
65479    ///   
65480    pub itemtype: core::option::Option<AttributeValue<'life>>,
65481    ///
65482    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
65483    ///   
65484    pub lang: core::option::Option<AttributeValue<'life>>,
65485    ///
65486    ///     <p>Name of the parameter.</p>
65487    ///   
65488    pub name: core::option::Option<AttributeValue<'life>>,
65489    ///
65490    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
65491    ///   
65492    pub nonce: core::option::Option<AttributeValue<'life>>,
65493    ///
65494    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
65495    ///   
65496    pub part: core::option::Option<AttributeValue<'life>>,
65497    ///
65498    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
65499    ///   
65500    pub popover: core::option::Option<AttributeValue<'life>>,
65501    ///
65502    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
65503    ///   
65504    pub role: core::option::Option<AttributeValue<'life>>,
65505    ///
65506    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
65507    ///   
65508    pub slot: core::option::Option<AttributeValue<'life>>,
65509    ///
65510    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
65511    ///     <ul>
65512    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
65513    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
65514    ///     </ul>
65515    ///   
65516    pub spellcheck: core::option::Option<AttributeValue<'life>>,
65517    ///
65518    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
65519    ///   
65520    pub style: core::option::Option<AttributeValue<'life>>,
65521    ///
65522    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
65523    ///     <ul>
65524    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
65525    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
65526    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
65527    ///     </ul>
65528    ///   
65529    pub tabindex: core::option::Option<AttributeValue<'life>>,
65530    ///
65531    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
65532    ///   
65533    pub title: core::option::Option<AttributeValue<'life>>,
65534    ///
65535    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
65536    ///     <ul>
65537    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
65538    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
65539    ///     </ul>
65540    ///   
65541    pub translate: core::option::Option<AttributeValue<'life>>,
65542    ///
65543    ///     <p>Only used if the <code>valuetype</code> is set to <code>ref</code>. Specifies the MIME type of values found at the URI specified by value.</p>
65544    ///   
65545    pub type_: core::option::Option<AttributeValue<'life>>,
65546    ///
65547    ///     <p>Specifies the value of the parameter.</p>
65548    ///   
65549    pub value: core::option::Option<AttributeValue<'life>>,
65550    ///
65551    ///     <p>Specifies the type of the <code>value</code> attribute. Possible values are:</p>
65552    ///     <ul>
65553    ///       <li><code>data</code>: Default value. The value is passed to the object's implementation as a string.</li>
65554    ///       <li><code>ref</code>: The value is a URI to a resource where run-time values are stored.</li>
65555    ///       <li><code>object</code>: An ID of another <a href="/en-US/docs/Web/HTML/Element/object"><code>&lt;object&gt;</code></a> in the same document.</li>
65556    ///     </ul>
65557    ///   
65558    pub valuetype: core::option::Option<AttributeValue<'life>>,
65559    ///
65560    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
65561    ///     <ul>
65562    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
65563    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
65564    ///     </ul>
65565    ///   
65566    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
65567}
65568#[allow(deprecated)]
65569
65570impl<'life> Param<'life> {
65571    /// Get the tag name of the element.
65572    /// This is the same as the name of the struct, in kebab-case.
65573    pub fn tag() -> &'static str {
65574        "param"
65575    }
65576    /// Sets an attribute of the element.
65577    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
65578    /// If the `alloc` feature is disabled, this function will silently fail.
65579    ///
65580    /// # Note
65581    /// This only works when the attribute is lowercase.
65582    pub fn set_attr(
65583        &mut self,
65584        name: &'life str,
65585        value: impl core::convert::Into<AttributeValue<'life>>,
65586    ) {
65587        match name {
65588            "accesskey" => self.accesskey = Some(value.into()),
65589            "autocapitalize" => self.autocapitalize = Some(value.into()),
65590            "autofocus" => self.autofocus = Some(value.into()),
65591            "class" => self.class = Some(value.into()),
65592            "contenteditable" => self.contenteditable = Some(value.into()),
65593            "contextmenu" => self.contextmenu = Some(value.into()),
65594            "dir" => self.dir = Some(value.into()),
65595            "draggable" => self.draggable = Some(value.into()),
65596            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
65597            "exportparts" => self.exportparts = Some(value.into()),
65598            "hidden" => self.hidden = Some(value.into()),
65599            "id" => self.id = Some(value.into()),
65600            "inert" => self.inert = Some(value.into()),
65601            "inputmode" => self.inputmode = Some(value.into()),
65602            "is" => self.is = Some(value.into()),
65603            "itemid" => self.itemid = Some(value.into()),
65604            "itemprop" => self.itemprop = Some(value.into()),
65605            "itemref" => self.itemref = Some(value.into()),
65606            "itemscope" => self.itemscope = Some(value.into()),
65607            "itemtype" => self.itemtype = Some(value.into()),
65608            "lang" => self.lang = Some(value.into()),
65609            "name" => self.name = Some(value.into()),
65610            "nonce" => self.nonce = Some(value.into()),
65611            "part" => self.part = Some(value.into()),
65612            "popover" => self.popover = Some(value.into()),
65613            "role" => self.role = Some(value.into()),
65614            "slot" => self.slot = Some(value.into()),
65615            "spellcheck" => self.spellcheck = Some(value.into()),
65616            "style" => self.style = Some(value.into()),
65617            "tabindex" => self.tabindex = Some(value.into()),
65618            "title" => self.title = Some(value.into()),
65619            "translate" => self.translate = Some(value.into()),
65620            "type_" => self.type_ = Some(value.into()),
65621            "value" => self.value = Some(value.into()),
65622            "valuetype" => self.valuetype = Some(value.into()),
65623            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
65624            #[cfg(feature = "alloc")]
65625            _ => {
65626                #[allow(clippy::useless_conversion)]
65627                self.extra.insert(name.into(), value.into());
65628            }
65629            #[cfg(not(feature = "alloc"))]
65630            _ => {}
65631        }
65632    }
65633}
65634/// The <strong><code>&lt;param&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element defines parameters for an <a href="/en-US/docs/Web/HTML/Element/object"><code>&lt;object&gt;</code></a> element.
65635///
65636/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/param>
65637#[deprecated]
65638#[cfg(feature = "alloc")]
65639#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
65640pub struct ParamOwned {
65641    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
65642    ///   
65643    pub accesskey: core::option::Option<AttributeValueOwned>,
65644    ///
65645    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
65646    ///     <ul>
65647    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
65648    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
65649    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
65650    ///       <li><code>characters</code>, all letters should default to uppercase</li>
65651    ///     </ul>
65652    ///   
65653    pub autocapitalize: core::option::Option<AttributeValueOwned>,
65654    ///
65655    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
65656    ///   
65657    pub autofocus: core::option::Option<AttributeValueOwned>,
65658    ///
65659    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
65660    ///   
65661    pub class: core::option::Option<AttributeValueOwned>,
65662    ///
65663    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
65664    ///     <ul>
65665    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
65666    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
65667    ///     </ul>
65668    ///   
65669    pub contenteditable: core::option::Option<AttributeValueOwned>,
65670    ///
65671    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
65672    ///   
65673    pub contextmenu: core::option::Option<AttributeValueOwned>,
65674    ///
65675    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
65676    ///   
65677    #[cfg(feature = "alloc")]
65678    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
65679    ///
65680    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
65681    ///     <ul>
65682    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
65683    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
65684    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
65685    ///     </ul>
65686    ///   
65687    pub dir: core::option::Option<AttributeValueOwned>,
65688    ///
65689    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
65690    ///     <ul>
65691    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
65692    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
65693    ///     </ul>
65694    ///   
65695    pub draggable: core::option::Option<AttributeValueOwned>,
65696    ///
65697    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
65698    ///   
65699    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
65700    ///
65701    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
65702    ///   
65703    pub exportparts: core::option::Option<AttributeValueOwned>,
65704    /// /// Extra attributes of the element.
65705
65706    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
65707    #[cfg(feature = "alloc")]
65708    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
65709    ///
65710    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
65711    ///   
65712    pub hidden: core::option::Option<AttributeValueOwned>,
65713    ///
65714    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
65715    ///   
65716    pub id: core::option::Option<AttributeValueOwned>,
65717    ///
65718    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
65719    ///   
65720    pub inert: core::option::Option<AttributeValueOwned>,
65721    ///
65722    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
65723    ///   
65724    pub inputmode: core::option::Option<AttributeValueOwned>,
65725    ///
65726    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
65727    ///   
65728    pub is: core::option::Option<AttributeValueOwned>,
65729    ///
65730    ///     <p>The unique, global identifier of an item.</p>
65731    ///   
65732    pub itemid: core::option::Option<AttributeValueOwned>,
65733    ///
65734    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
65735    ///   
65736    pub itemprop: core::option::Option<AttributeValueOwned>,
65737    ///
65738    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
65739    ///   
65740    pub itemref: core::option::Option<AttributeValueOwned>,
65741    ///
65742    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
65743    ///   
65744    pub itemscope: core::option::Option<AttributeValueOwned>,
65745    ///
65746    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
65747    ///   
65748    pub itemtype: core::option::Option<AttributeValueOwned>,
65749    ///
65750    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
65751    ///   
65752    pub lang: core::option::Option<AttributeValueOwned>,
65753    ///
65754    ///     <p>Name of the parameter.</p>
65755    ///   
65756    pub name: core::option::Option<AttributeValueOwned>,
65757    ///
65758    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
65759    ///   
65760    pub nonce: core::option::Option<AttributeValueOwned>,
65761    ///
65762    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
65763    ///   
65764    pub part: core::option::Option<AttributeValueOwned>,
65765    ///
65766    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
65767    ///   
65768    pub popover: core::option::Option<AttributeValueOwned>,
65769    ///
65770    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
65771    ///   
65772    pub role: core::option::Option<AttributeValueOwned>,
65773    ///
65774    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
65775    ///   
65776    pub slot: core::option::Option<AttributeValueOwned>,
65777    ///
65778    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
65779    ///     <ul>
65780    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
65781    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
65782    ///     </ul>
65783    ///   
65784    pub spellcheck: core::option::Option<AttributeValueOwned>,
65785    ///
65786    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
65787    ///   
65788    pub style: core::option::Option<AttributeValueOwned>,
65789    ///
65790    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
65791    ///     <ul>
65792    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
65793    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
65794    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
65795    ///     </ul>
65796    ///   
65797    pub tabindex: core::option::Option<AttributeValueOwned>,
65798    ///
65799    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
65800    ///   
65801    pub title: core::option::Option<AttributeValueOwned>,
65802    ///
65803    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
65804    ///     <ul>
65805    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
65806    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
65807    ///     </ul>
65808    ///   
65809    pub translate: core::option::Option<AttributeValueOwned>,
65810    ///
65811    ///     <p>Only used if the <code>valuetype</code> is set to <code>ref</code>. Specifies the MIME type of values found at the URI specified by value.</p>
65812    ///   
65813    pub type_: core::option::Option<AttributeValueOwned>,
65814    ///
65815    ///     <p>Specifies the value of the parameter.</p>
65816    ///   
65817    pub value: core::option::Option<AttributeValueOwned>,
65818    ///
65819    ///     <p>Specifies the type of the <code>value</code> attribute. Possible values are:</p>
65820    ///     <ul>
65821    ///       <li><code>data</code>: Default value. The value is passed to the object's implementation as a string.</li>
65822    ///       <li><code>ref</code>: The value is a URI to a resource where run-time values are stored.</li>
65823    ///       <li><code>object</code>: An ID of another <a href="/en-US/docs/Web/HTML/Element/object"><code>&lt;object&gt;</code></a> in the same document.</li>
65824    ///     </ul>
65825    ///   
65826    pub valuetype: core::option::Option<AttributeValueOwned>,
65827    ///
65828    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
65829    ///     <ul>
65830    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
65831    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
65832    ///     </ul>
65833    ///   
65834    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
65835}
65836#[allow(deprecated)]
65837#[cfg(feature = "alloc")]
65838impl ParamOwned {
65839    /// Get the tag name of the element.
65840    /// This is the same as the name of the struct, in kebab-case.
65841    pub fn tag() -> &'static str {
65842        "param"
65843    }
65844    /// Sets an attribute of the element.
65845    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
65846    /// If the `alloc` feature is disabled, this function will silently fail.
65847    ///
65848    /// # Note
65849    /// This only works when the attribute is lowercase.
65850    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
65851        match name {
65852            "accesskey" => self.accesskey = Some(value.into()),
65853            "autocapitalize" => self.autocapitalize = Some(value.into()),
65854            "autofocus" => self.autofocus = Some(value.into()),
65855            "class" => self.class = Some(value.into()),
65856            "contenteditable" => self.contenteditable = Some(value.into()),
65857            "contextmenu" => self.contextmenu = Some(value.into()),
65858            "dir" => self.dir = Some(value.into()),
65859            "draggable" => self.draggable = Some(value.into()),
65860            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
65861            "exportparts" => self.exportparts = Some(value.into()),
65862            "hidden" => self.hidden = Some(value.into()),
65863            "id" => self.id = Some(value.into()),
65864            "inert" => self.inert = Some(value.into()),
65865            "inputmode" => self.inputmode = Some(value.into()),
65866            "is" => self.is = Some(value.into()),
65867            "itemid" => self.itemid = Some(value.into()),
65868            "itemprop" => self.itemprop = Some(value.into()),
65869            "itemref" => self.itemref = Some(value.into()),
65870            "itemscope" => self.itemscope = Some(value.into()),
65871            "itemtype" => self.itemtype = Some(value.into()),
65872            "lang" => self.lang = Some(value.into()),
65873            "name" => self.name = Some(value.into()),
65874            "nonce" => self.nonce = Some(value.into()),
65875            "part" => self.part = Some(value.into()),
65876            "popover" => self.popover = Some(value.into()),
65877            "role" => self.role = Some(value.into()),
65878            "slot" => self.slot = Some(value.into()),
65879            "spellcheck" => self.spellcheck = Some(value.into()),
65880            "style" => self.style = Some(value.into()),
65881            "tabindex" => self.tabindex = Some(value.into()),
65882            "title" => self.title = Some(value.into()),
65883            "translate" => self.translate = Some(value.into()),
65884            "type_" => self.type_ = Some(value.into()),
65885            "value" => self.value = Some(value.into()),
65886            "valuetype" => self.valuetype = Some(value.into()),
65887            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
65888            #[cfg(feature = "alloc")]
65889            _ => {
65890                #[allow(clippy::useless_conversion)]
65891                self.extra.insert(name.into(), value.into());
65892            }
65893            #[cfg(not(feature = "alloc"))]
65894            _ => {}
65895        }
65896    }
65897}
65898/// The <strong><code>&lt;plaintext&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> 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.
65899///
65900/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/plaintext>
65901#[deprecated]
65902#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
65903pub struct Plaintext<'life> {
65904    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
65905    ///   
65906    pub accesskey: core::option::Option<AttributeValue<'life>>,
65907    ///
65908    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
65909    ///     <ul>
65910    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
65911    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
65912    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
65913    ///       <li><code>characters</code>, all letters should default to uppercase</li>
65914    ///     </ul>
65915    ///   
65916    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
65917    ///
65918    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
65919    ///   
65920    pub autofocus: core::option::Option<AttributeValue<'life>>,
65921    ///
65922    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
65923    ///   
65924    pub class: core::option::Option<AttributeValue<'life>>,
65925    ///
65926    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
65927    ///     <ul>
65928    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
65929    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
65930    ///     </ul>
65931    ///   
65932    pub contenteditable: core::option::Option<AttributeValue<'life>>,
65933    ///
65934    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
65935    ///   
65936    pub contextmenu: core::option::Option<AttributeValue<'life>>,
65937    ///
65938    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
65939    ///   
65940    #[cfg(feature = "alloc")]
65941    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
65942    ///
65943    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
65944    ///     <ul>
65945    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
65946    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
65947    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
65948    ///     </ul>
65949    ///   
65950    pub dir: core::option::Option<AttributeValue<'life>>,
65951    ///
65952    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
65953    ///     <ul>
65954    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
65955    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
65956    ///     </ul>
65957    ///   
65958    pub draggable: core::option::Option<AttributeValue<'life>>,
65959    ///
65960    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
65961    ///   
65962    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
65963    ///
65964    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
65965    ///   
65966    pub exportparts: core::option::Option<AttributeValue<'life>>,
65967    /// /// Extra attributes of the element.
65968
65969    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
65970    #[cfg(feature = "alloc")]
65971    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
65972    ///
65973    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
65974    ///   
65975    pub hidden: core::option::Option<AttributeValue<'life>>,
65976    ///
65977    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
65978    ///   
65979    pub id: core::option::Option<AttributeValue<'life>>,
65980    ///
65981    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
65982    ///   
65983    pub inert: core::option::Option<AttributeValue<'life>>,
65984    ///
65985    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
65986    ///   
65987    pub inputmode: core::option::Option<AttributeValue<'life>>,
65988    ///
65989    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
65990    ///   
65991    pub is: core::option::Option<AttributeValue<'life>>,
65992    ///
65993    ///     <p>The unique, global identifier of an item.</p>
65994    ///   
65995    pub itemid: core::option::Option<AttributeValue<'life>>,
65996    ///
65997    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
65998    ///   
65999    pub itemprop: core::option::Option<AttributeValue<'life>>,
66000    ///
66001    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
66002    ///   
66003    pub itemref: core::option::Option<AttributeValue<'life>>,
66004    ///
66005    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
66006    ///   
66007    pub itemscope: core::option::Option<AttributeValue<'life>>,
66008    ///
66009    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
66010    ///   
66011    pub itemtype: core::option::Option<AttributeValue<'life>>,
66012    ///
66013    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
66014    ///   
66015    pub lang: core::option::Option<AttributeValue<'life>>,
66016    ///
66017    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
66018    ///   
66019    pub nonce: core::option::Option<AttributeValue<'life>>,
66020    ///
66021    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
66022    ///   
66023    pub part: core::option::Option<AttributeValue<'life>>,
66024    ///
66025    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
66026    ///   
66027    pub popover: core::option::Option<AttributeValue<'life>>,
66028    ///
66029    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
66030    ///   
66031    pub role: core::option::Option<AttributeValue<'life>>,
66032    ///
66033    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
66034    ///   
66035    pub slot: core::option::Option<AttributeValue<'life>>,
66036    ///
66037    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
66038    ///     <ul>
66039    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
66040    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
66041    ///     </ul>
66042    ///   
66043    pub spellcheck: core::option::Option<AttributeValue<'life>>,
66044    ///
66045    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
66046    ///   
66047    pub style: core::option::Option<AttributeValue<'life>>,
66048    ///
66049    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
66050    ///     <ul>
66051    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
66052    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
66053    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
66054    ///     </ul>
66055    ///   
66056    pub tabindex: core::option::Option<AttributeValue<'life>>,
66057    ///
66058    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
66059    ///   
66060    pub title: core::option::Option<AttributeValue<'life>>,
66061    ///
66062    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
66063    ///     <ul>
66064    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
66065    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
66066    ///     </ul>
66067    ///   
66068    pub translate: core::option::Option<AttributeValue<'life>>,
66069    ///
66070    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
66071    ///     <ul>
66072    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
66073    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
66074    ///     </ul>
66075    ///   
66076    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
66077}
66078#[allow(deprecated)]
66079
66080impl<'life> Plaintext<'life> {
66081    /// Get the tag name of the element.
66082    /// This is the same as the name of the struct, in kebab-case.
66083    pub fn tag() -> &'static str {
66084        "plaintext"
66085    }
66086    /// Sets an attribute of the element.
66087    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
66088    /// If the `alloc` feature is disabled, this function will silently fail.
66089    ///
66090    /// # Note
66091    /// This only works when the attribute is lowercase.
66092    pub fn set_attr(
66093        &mut self,
66094        name: &'life str,
66095        value: impl core::convert::Into<AttributeValue<'life>>,
66096    ) {
66097        match name {
66098            "accesskey" => self.accesskey = Some(value.into()),
66099            "autocapitalize" => self.autocapitalize = Some(value.into()),
66100            "autofocus" => self.autofocus = Some(value.into()),
66101            "class" => self.class = Some(value.into()),
66102            "contenteditable" => self.contenteditable = Some(value.into()),
66103            "contextmenu" => self.contextmenu = Some(value.into()),
66104            "dir" => self.dir = Some(value.into()),
66105            "draggable" => self.draggable = Some(value.into()),
66106            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
66107            "exportparts" => self.exportparts = Some(value.into()),
66108            "hidden" => self.hidden = Some(value.into()),
66109            "id" => self.id = Some(value.into()),
66110            "inert" => self.inert = Some(value.into()),
66111            "inputmode" => self.inputmode = Some(value.into()),
66112            "is" => self.is = Some(value.into()),
66113            "itemid" => self.itemid = Some(value.into()),
66114            "itemprop" => self.itemprop = Some(value.into()),
66115            "itemref" => self.itemref = Some(value.into()),
66116            "itemscope" => self.itemscope = Some(value.into()),
66117            "itemtype" => self.itemtype = Some(value.into()),
66118            "lang" => self.lang = Some(value.into()),
66119            "nonce" => self.nonce = Some(value.into()),
66120            "part" => self.part = Some(value.into()),
66121            "popover" => self.popover = Some(value.into()),
66122            "role" => self.role = Some(value.into()),
66123            "slot" => self.slot = Some(value.into()),
66124            "spellcheck" => self.spellcheck = Some(value.into()),
66125            "style" => self.style = Some(value.into()),
66126            "tabindex" => self.tabindex = Some(value.into()),
66127            "title" => self.title = Some(value.into()),
66128            "translate" => self.translate = Some(value.into()),
66129            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
66130            #[cfg(feature = "alloc")]
66131            _ => {
66132                #[allow(clippy::useless_conversion)]
66133                self.extra.insert(name.into(), value.into());
66134            }
66135            #[cfg(not(feature = "alloc"))]
66136            _ => {}
66137        }
66138    }
66139}
66140/// The <strong><code>&lt;plaintext&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> 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.
66141///
66142/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/plaintext>
66143#[deprecated]
66144#[cfg(feature = "alloc")]
66145#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
66146pub struct PlaintextOwned {
66147    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
66148    ///   
66149    pub accesskey: core::option::Option<AttributeValueOwned>,
66150    ///
66151    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
66152    ///     <ul>
66153    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
66154    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
66155    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
66156    ///       <li><code>characters</code>, all letters should default to uppercase</li>
66157    ///     </ul>
66158    ///   
66159    pub autocapitalize: core::option::Option<AttributeValueOwned>,
66160    ///
66161    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
66162    ///   
66163    pub autofocus: core::option::Option<AttributeValueOwned>,
66164    ///
66165    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
66166    ///   
66167    pub class: core::option::Option<AttributeValueOwned>,
66168    ///
66169    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
66170    ///     <ul>
66171    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
66172    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
66173    ///     </ul>
66174    ///   
66175    pub contenteditable: core::option::Option<AttributeValueOwned>,
66176    ///
66177    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
66178    ///   
66179    pub contextmenu: core::option::Option<AttributeValueOwned>,
66180    ///
66181    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
66182    ///   
66183    #[cfg(feature = "alloc")]
66184    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
66185    ///
66186    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
66187    ///     <ul>
66188    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
66189    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
66190    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
66191    ///     </ul>
66192    ///   
66193    pub dir: core::option::Option<AttributeValueOwned>,
66194    ///
66195    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
66196    ///     <ul>
66197    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
66198    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
66199    ///     </ul>
66200    ///   
66201    pub draggable: core::option::Option<AttributeValueOwned>,
66202    ///
66203    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
66204    ///   
66205    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
66206    ///
66207    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
66208    ///   
66209    pub exportparts: core::option::Option<AttributeValueOwned>,
66210    /// /// Extra attributes of the element.
66211
66212    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
66213    #[cfg(feature = "alloc")]
66214    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
66215    ///
66216    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
66217    ///   
66218    pub hidden: core::option::Option<AttributeValueOwned>,
66219    ///
66220    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
66221    ///   
66222    pub id: core::option::Option<AttributeValueOwned>,
66223    ///
66224    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
66225    ///   
66226    pub inert: core::option::Option<AttributeValueOwned>,
66227    ///
66228    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
66229    ///   
66230    pub inputmode: core::option::Option<AttributeValueOwned>,
66231    ///
66232    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
66233    ///   
66234    pub is: core::option::Option<AttributeValueOwned>,
66235    ///
66236    ///     <p>The unique, global identifier of an item.</p>
66237    ///   
66238    pub itemid: core::option::Option<AttributeValueOwned>,
66239    ///
66240    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
66241    ///   
66242    pub itemprop: core::option::Option<AttributeValueOwned>,
66243    ///
66244    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
66245    ///   
66246    pub itemref: core::option::Option<AttributeValueOwned>,
66247    ///
66248    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
66249    ///   
66250    pub itemscope: core::option::Option<AttributeValueOwned>,
66251    ///
66252    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
66253    ///   
66254    pub itemtype: core::option::Option<AttributeValueOwned>,
66255    ///
66256    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
66257    ///   
66258    pub lang: core::option::Option<AttributeValueOwned>,
66259    ///
66260    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
66261    ///   
66262    pub nonce: core::option::Option<AttributeValueOwned>,
66263    ///
66264    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
66265    ///   
66266    pub part: core::option::Option<AttributeValueOwned>,
66267    ///
66268    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
66269    ///   
66270    pub popover: core::option::Option<AttributeValueOwned>,
66271    ///
66272    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
66273    ///   
66274    pub role: core::option::Option<AttributeValueOwned>,
66275    ///
66276    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
66277    ///   
66278    pub slot: core::option::Option<AttributeValueOwned>,
66279    ///
66280    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
66281    ///     <ul>
66282    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
66283    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
66284    ///     </ul>
66285    ///   
66286    pub spellcheck: core::option::Option<AttributeValueOwned>,
66287    ///
66288    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
66289    ///   
66290    pub style: core::option::Option<AttributeValueOwned>,
66291    ///
66292    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
66293    ///     <ul>
66294    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
66295    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
66296    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
66297    ///     </ul>
66298    ///   
66299    pub tabindex: core::option::Option<AttributeValueOwned>,
66300    ///
66301    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
66302    ///   
66303    pub title: core::option::Option<AttributeValueOwned>,
66304    ///
66305    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
66306    ///     <ul>
66307    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
66308    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
66309    ///     </ul>
66310    ///   
66311    pub translate: core::option::Option<AttributeValueOwned>,
66312    ///
66313    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
66314    ///     <ul>
66315    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
66316    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
66317    ///     </ul>
66318    ///   
66319    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
66320}
66321#[allow(deprecated)]
66322#[cfg(feature = "alloc")]
66323impl PlaintextOwned {
66324    /// Get the tag name of the element.
66325    /// This is the same as the name of the struct, in kebab-case.
66326    pub fn tag() -> &'static str {
66327        "plaintext"
66328    }
66329    /// Sets an attribute of the element.
66330    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
66331    /// If the `alloc` feature is disabled, this function will silently fail.
66332    ///
66333    /// # Note
66334    /// This only works when the attribute is lowercase.
66335    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
66336        match name {
66337            "accesskey" => self.accesskey = Some(value.into()),
66338            "autocapitalize" => self.autocapitalize = Some(value.into()),
66339            "autofocus" => self.autofocus = Some(value.into()),
66340            "class" => self.class = Some(value.into()),
66341            "contenteditable" => self.contenteditable = Some(value.into()),
66342            "contextmenu" => self.contextmenu = Some(value.into()),
66343            "dir" => self.dir = Some(value.into()),
66344            "draggable" => self.draggable = Some(value.into()),
66345            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
66346            "exportparts" => self.exportparts = Some(value.into()),
66347            "hidden" => self.hidden = Some(value.into()),
66348            "id" => self.id = Some(value.into()),
66349            "inert" => self.inert = Some(value.into()),
66350            "inputmode" => self.inputmode = Some(value.into()),
66351            "is" => self.is = Some(value.into()),
66352            "itemid" => self.itemid = Some(value.into()),
66353            "itemprop" => self.itemprop = Some(value.into()),
66354            "itemref" => self.itemref = Some(value.into()),
66355            "itemscope" => self.itemscope = Some(value.into()),
66356            "itemtype" => self.itemtype = Some(value.into()),
66357            "lang" => self.lang = Some(value.into()),
66358            "nonce" => self.nonce = Some(value.into()),
66359            "part" => self.part = Some(value.into()),
66360            "popover" => self.popover = Some(value.into()),
66361            "role" => self.role = Some(value.into()),
66362            "slot" => self.slot = Some(value.into()),
66363            "spellcheck" => self.spellcheck = Some(value.into()),
66364            "style" => self.style = Some(value.into()),
66365            "tabindex" => self.tabindex = Some(value.into()),
66366            "title" => self.title = Some(value.into()),
66367            "translate" => self.translate = Some(value.into()),
66368            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
66369            #[cfg(feature = "alloc")]
66370            _ => {
66371                #[allow(clippy::useless_conversion)]
66372                self.extra.insert(name.into(), value.into());
66373            }
66374            #[cfg(not(feature = "alloc"))]
66375            _ => {}
66376        }
66377    }
66378}
66379/// The <strong><code>&lt;rb&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element is used to delimit the base text component of a <a href="/en-US/docs/Web/HTML/Element/ruby"><code>&lt;ruby&gt;</code></a> annotation, i.e. the text that is being annotated. One <code>&lt;rb&gt;</code> element should wrap each separate atomic segment of the base text.
66380///
66381/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/rb>
66382#[deprecated]
66383#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
66384pub struct Rb<'life> {
66385    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
66386    ///   
66387    pub accesskey: core::option::Option<AttributeValue<'life>>,
66388    ///
66389    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
66390    ///     <ul>
66391    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
66392    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
66393    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
66394    ///       <li><code>characters</code>, all letters should default to uppercase</li>
66395    ///     </ul>
66396    ///   
66397    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
66398    ///
66399    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
66400    ///   
66401    pub autofocus: core::option::Option<AttributeValue<'life>>,
66402    ///
66403    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
66404    ///   
66405    pub class: core::option::Option<AttributeValue<'life>>,
66406    ///
66407    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
66408    ///     <ul>
66409    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
66410    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
66411    ///     </ul>
66412    ///   
66413    pub contenteditable: core::option::Option<AttributeValue<'life>>,
66414    ///
66415    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
66416    ///   
66417    pub contextmenu: core::option::Option<AttributeValue<'life>>,
66418    ///
66419    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
66420    ///   
66421    #[cfg(feature = "alloc")]
66422    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
66423    ///
66424    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
66425    ///     <ul>
66426    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
66427    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
66428    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
66429    ///     </ul>
66430    ///   
66431    pub dir: core::option::Option<AttributeValue<'life>>,
66432    ///
66433    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
66434    ///     <ul>
66435    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
66436    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
66437    ///     </ul>
66438    ///   
66439    pub draggable: core::option::Option<AttributeValue<'life>>,
66440    ///
66441    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
66442    ///   
66443    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
66444    ///
66445    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
66446    ///   
66447    pub exportparts: core::option::Option<AttributeValue<'life>>,
66448    /// /// Extra attributes of the element.
66449
66450    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
66451    #[cfg(feature = "alloc")]
66452    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
66453    ///
66454    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
66455    ///   
66456    pub hidden: core::option::Option<AttributeValue<'life>>,
66457    ///
66458    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
66459    ///   
66460    pub id: core::option::Option<AttributeValue<'life>>,
66461    ///
66462    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
66463    ///   
66464    pub inert: core::option::Option<AttributeValue<'life>>,
66465    ///
66466    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
66467    ///   
66468    pub inputmode: core::option::Option<AttributeValue<'life>>,
66469    ///
66470    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
66471    ///   
66472    pub is: core::option::Option<AttributeValue<'life>>,
66473    ///
66474    ///     <p>The unique, global identifier of an item.</p>
66475    ///   
66476    pub itemid: core::option::Option<AttributeValue<'life>>,
66477    ///
66478    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
66479    ///   
66480    pub itemprop: core::option::Option<AttributeValue<'life>>,
66481    ///
66482    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
66483    ///   
66484    pub itemref: core::option::Option<AttributeValue<'life>>,
66485    ///
66486    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
66487    ///   
66488    pub itemscope: core::option::Option<AttributeValue<'life>>,
66489    ///
66490    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
66491    ///   
66492    pub itemtype: core::option::Option<AttributeValue<'life>>,
66493    ///
66494    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
66495    ///   
66496    pub lang: core::option::Option<AttributeValue<'life>>,
66497    ///
66498    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
66499    ///   
66500    pub nonce: core::option::Option<AttributeValue<'life>>,
66501    ///
66502    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
66503    ///   
66504    pub part: core::option::Option<AttributeValue<'life>>,
66505    ///
66506    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
66507    ///   
66508    pub popover: core::option::Option<AttributeValue<'life>>,
66509    ///
66510    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
66511    ///   
66512    pub role: core::option::Option<AttributeValue<'life>>,
66513    ///
66514    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
66515    ///   
66516    pub slot: core::option::Option<AttributeValue<'life>>,
66517    ///
66518    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
66519    ///     <ul>
66520    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
66521    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
66522    ///     </ul>
66523    ///   
66524    pub spellcheck: core::option::Option<AttributeValue<'life>>,
66525    ///
66526    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
66527    ///   
66528    pub style: core::option::Option<AttributeValue<'life>>,
66529    ///
66530    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
66531    ///     <ul>
66532    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
66533    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
66534    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
66535    ///     </ul>
66536    ///   
66537    pub tabindex: core::option::Option<AttributeValue<'life>>,
66538    ///
66539    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
66540    ///   
66541    pub title: core::option::Option<AttributeValue<'life>>,
66542    ///
66543    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
66544    ///     <ul>
66545    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
66546    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
66547    ///     </ul>
66548    ///   
66549    pub translate: core::option::Option<AttributeValue<'life>>,
66550    ///
66551    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
66552    ///     <ul>
66553    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
66554    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
66555    ///     </ul>
66556    ///   
66557    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
66558}
66559#[allow(deprecated)]
66560
66561impl<'life> Rb<'life> {
66562    /// Get the tag name of the element.
66563    /// This is the same as the name of the struct, in kebab-case.
66564    pub fn tag() -> &'static str {
66565        "rb"
66566    }
66567    /// Sets an attribute of the element.
66568    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
66569    /// If the `alloc` feature is disabled, this function will silently fail.
66570    ///
66571    /// # Note
66572    /// This only works when the attribute is lowercase.
66573    pub fn set_attr(
66574        &mut self,
66575        name: &'life str,
66576        value: impl core::convert::Into<AttributeValue<'life>>,
66577    ) {
66578        match name {
66579            "accesskey" => self.accesskey = Some(value.into()),
66580            "autocapitalize" => self.autocapitalize = Some(value.into()),
66581            "autofocus" => self.autofocus = Some(value.into()),
66582            "class" => self.class = Some(value.into()),
66583            "contenteditable" => self.contenteditable = Some(value.into()),
66584            "contextmenu" => self.contextmenu = Some(value.into()),
66585            "dir" => self.dir = Some(value.into()),
66586            "draggable" => self.draggable = Some(value.into()),
66587            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
66588            "exportparts" => self.exportparts = Some(value.into()),
66589            "hidden" => self.hidden = Some(value.into()),
66590            "id" => self.id = Some(value.into()),
66591            "inert" => self.inert = Some(value.into()),
66592            "inputmode" => self.inputmode = Some(value.into()),
66593            "is" => self.is = Some(value.into()),
66594            "itemid" => self.itemid = Some(value.into()),
66595            "itemprop" => self.itemprop = Some(value.into()),
66596            "itemref" => self.itemref = Some(value.into()),
66597            "itemscope" => self.itemscope = Some(value.into()),
66598            "itemtype" => self.itemtype = Some(value.into()),
66599            "lang" => self.lang = Some(value.into()),
66600            "nonce" => self.nonce = Some(value.into()),
66601            "part" => self.part = Some(value.into()),
66602            "popover" => self.popover = Some(value.into()),
66603            "role" => self.role = Some(value.into()),
66604            "slot" => self.slot = Some(value.into()),
66605            "spellcheck" => self.spellcheck = Some(value.into()),
66606            "style" => self.style = Some(value.into()),
66607            "tabindex" => self.tabindex = Some(value.into()),
66608            "title" => self.title = Some(value.into()),
66609            "translate" => self.translate = Some(value.into()),
66610            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
66611            #[cfg(feature = "alloc")]
66612            _ => {
66613                #[allow(clippy::useless_conversion)]
66614                self.extra.insert(name.into(), value.into());
66615            }
66616            #[cfg(not(feature = "alloc"))]
66617            _ => {}
66618        }
66619    }
66620}
66621/// The <strong><code>&lt;rb&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element is used to delimit the base text component of a <a href="/en-US/docs/Web/HTML/Element/ruby"><code>&lt;ruby&gt;</code></a> annotation, i.e. the text that is being annotated. One <code>&lt;rb&gt;</code> element should wrap each separate atomic segment of the base text.
66622///
66623/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/rb>
66624#[deprecated]
66625#[cfg(feature = "alloc")]
66626#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
66627pub struct RbOwned {
66628    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
66629    ///   
66630    pub accesskey: core::option::Option<AttributeValueOwned>,
66631    ///
66632    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
66633    ///     <ul>
66634    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
66635    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
66636    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
66637    ///       <li><code>characters</code>, all letters should default to uppercase</li>
66638    ///     </ul>
66639    ///   
66640    pub autocapitalize: core::option::Option<AttributeValueOwned>,
66641    ///
66642    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
66643    ///   
66644    pub autofocus: core::option::Option<AttributeValueOwned>,
66645    ///
66646    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
66647    ///   
66648    pub class: core::option::Option<AttributeValueOwned>,
66649    ///
66650    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
66651    ///     <ul>
66652    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
66653    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
66654    ///     </ul>
66655    ///   
66656    pub contenteditable: core::option::Option<AttributeValueOwned>,
66657    ///
66658    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
66659    ///   
66660    pub contextmenu: core::option::Option<AttributeValueOwned>,
66661    ///
66662    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
66663    ///   
66664    #[cfg(feature = "alloc")]
66665    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
66666    ///
66667    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
66668    ///     <ul>
66669    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
66670    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
66671    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
66672    ///     </ul>
66673    ///   
66674    pub dir: core::option::Option<AttributeValueOwned>,
66675    ///
66676    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
66677    ///     <ul>
66678    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
66679    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
66680    ///     </ul>
66681    ///   
66682    pub draggable: core::option::Option<AttributeValueOwned>,
66683    ///
66684    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
66685    ///   
66686    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
66687    ///
66688    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
66689    ///   
66690    pub exportparts: core::option::Option<AttributeValueOwned>,
66691    /// /// Extra attributes of the element.
66692
66693    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
66694    #[cfg(feature = "alloc")]
66695    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
66696    ///
66697    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
66698    ///   
66699    pub hidden: core::option::Option<AttributeValueOwned>,
66700    ///
66701    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
66702    ///   
66703    pub id: core::option::Option<AttributeValueOwned>,
66704    ///
66705    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
66706    ///   
66707    pub inert: core::option::Option<AttributeValueOwned>,
66708    ///
66709    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
66710    ///   
66711    pub inputmode: core::option::Option<AttributeValueOwned>,
66712    ///
66713    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
66714    ///   
66715    pub is: core::option::Option<AttributeValueOwned>,
66716    ///
66717    ///     <p>The unique, global identifier of an item.</p>
66718    ///   
66719    pub itemid: core::option::Option<AttributeValueOwned>,
66720    ///
66721    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
66722    ///   
66723    pub itemprop: core::option::Option<AttributeValueOwned>,
66724    ///
66725    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
66726    ///   
66727    pub itemref: core::option::Option<AttributeValueOwned>,
66728    ///
66729    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
66730    ///   
66731    pub itemscope: core::option::Option<AttributeValueOwned>,
66732    ///
66733    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
66734    ///   
66735    pub itemtype: core::option::Option<AttributeValueOwned>,
66736    ///
66737    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
66738    ///   
66739    pub lang: core::option::Option<AttributeValueOwned>,
66740    ///
66741    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
66742    ///   
66743    pub nonce: core::option::Option<AttributeValueOwned>,
66744    ///
66745    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
66746    ///   
66747    pub part: core::option::Option<AttributeValueOwned>,
66748    ///
66749    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
66750    ///   
66751    pub popover: core::option::Option<AttributeValueOwned>,
66752    ///
66753    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
66754    ///   
66755    pub role: core::option::Option<AttributeValueOwned>,
66756    ///
66757    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
66758    ///   
66759    pub slot: core::option::Option<AttributeValueOwned>,
66760    ///
66761    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
66762    ///     <ul>
66763    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
66764    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
66765    ///     </ul>
66766    ///   
66767    pub spellcheck: core::option::Option<AttributeValueOwned>,
66768    ///
66769    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
66770    ///   
66771    pub style: core::option::Option<AttributeValueOwned>,
66772    ///
66773    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
66774    ///     <ul>
66775    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
66776    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
66777    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
66778    ///     </ul>
66779    ///   
66780    pub tabindex: core::option::Option<AttributeValueOwned>,
66781    ///
66782    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
66783    ///   
66784    pub title: core::option::Option<AttributeValueOwned>,
66785    ///
66786    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
66787    ///     <ul>
66788    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
66789    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
66790    ///     </ul>
66791    ///   
66792    pub translate: core::option::Option<AttributeValueOwned>,
66793    ///
66794    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
66795    ///     <ul>
66796    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
66797    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
66798    ///     </ul>
66799    ///   
66800    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
66801}
66802#[allow(deprecated)]
66803#[cfg(feature = "alloc")]
66804impl RbOwned {
66805    /// Get the tag name of the element.
66806    /// This is the same as the name of the struct, in kebab-case.
66807    pub fn tag() -> &'static str {
66808        "rb"
66809    }
66810    /// Sets an attribute of the element.
66811    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
66812    /// If the `alloc` feature is disabled, this function will silently fail.
66813    ///
66814    /// # Note
66815    /// This only works when the attribute is lowercase.
66816    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
66817        match name {
66818            "accesskey" => self.accesskey = Some(value.into()),
66819            "autocapitalize" => self.autocapitalize = Some(value.into()),
66820            "autofocus" => self.autofocus = Some(value.into()),
66821            "class" => self.class = Some(value.into()),
66822            "contenteditable" => self.contenteditable = Some(value.into()),
66823            "contextmenu" => self.contextmenu = Some(value.into()),
66824            "dir" => self.dir = Some(value.into()),
66825            "draggable" => self.draggable = Some(value.into()),
66826            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
66827            "exportparts" => self.exportparts = Some(value.into()),
66828            "hidden" => self.hidden = Some(value.into()),
66829            "id" => self.id = Some(value.into()),
66830            "inert" => self.inert = Some(value.into()),
66831            "inputmode" => self.inputmode = Some(value.into()),
66832            "is" => self.is = Some(value.into()),
66833            "itemid" => self.itemid = Some(value.into()),
66834            "itemprop" => self.itemprop = Some(value.into()),
66835            "itemref" => self.itemref = Some(value.into()),
66836            "itemscope" => self.itemscope = Some(value.into()),
66837            "itemtype" => self.itemtype = Some(value.into()),
66838            "lang" => self.lang = Some(value.into()),
66839            "nonce" => self.nonce = Some(value.into()),
66840            "part" => self.part = Some(value.into()),
66841            "popover" => self.popover = Some(value.into()),
66842            "role" => self.role = Some(value.into()),
66843            "slot" => self.slot = Some(value.into()),
66844            "spellcheck" => self.spellcheck = Some(value.into()),
66845            "style" => self.style = Some(value.into()),
66846            "tabindex" => self.tabindex = Some(value.into()),
66847            "title" => self.title = Some(value.into()),
66848            "translate" => self.translate = Some(value.into()),
66849            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
66850            #[cfg(feature = "alloc")]
66851            _ => {
66852                #[allow(clippy::useless_conversion)]
66853                self.extra.insert(name.into(), value.into());
66854            }
66855            #[cfg(not(feature = "alloc"))]
66856            _ => {}
66857        }
66858    }
66859}
66860/// The <strong><code>&lt;rtc&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element embraces semantic annotations of characters presented in a ruby of <a href="/en-US/docs/Web/HTML/Element/rb"><code>&lt;rb&gt;</code></a> elements used inside of <a href="/en-US/docs/Web/HTML/Element/ruby"><code>&lt;ruby&gt;</code></a> element. <a href="/en-US/docs/Web/HTML/Element/rb"><code>&lt;rb&gt;</code></a> elements can have both pronunciation (<a href="/en-US/docs/Web/HTML/Element/rt"><code>&lt;rt&gt;</code></a>) and semantic (<a href="/en-US/docs/Web/HTML/Element/rtc" aria-current="page"><code>&lt;rtc&gt;</code></a>) annotations.
66861///
66862/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/rtc>
66863#[deprecated]
66864#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
66865pub struct Rtc<'life> {
66866    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
66867    ///   
66868    pub accesskey: core::option::Option<AttributeValue<'life>>,
66869    ///
66870    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
66871    ///     <ul>
66872    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
66873    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
66874    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
66875    ///       <li><code>characters</code>, all letters should default to uppercase</li>
66876    ///     </ul>
66877    ///   
66878    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
66879    ///
66880    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
66881    ///   
66882    pub autofocus: core::option::Option<AttributeValue<'life>>,
66883    ///
66884    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
66885    ///   
66886    pub class: core::option::Option<AttributeValue<'life>>,
66887    ///
66888    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
66889    ///     <ul>
66890    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
66891    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
66892    ///     </ul>
66893    ///   
66894    pub contenteditable: core::option::Option<AttributeValue<'life>>,
66895    ///
66896    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
66897    ///   
66898    pub contextmenu: core::option::Option<AttributeValue<'life>>,
66899    ///
66900    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
66901    ///   
66902    #[cfg(feature = "alloc")]
66903    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
66904    ///
66905    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
66906    ///     <ul>
66907    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
66908    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
66909    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
66910    ///     </ul>
66911    ///   
66912    pub dir: core::option::Option<AttributeValue<'life>>,
66913    ///
66914    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
66915    ///     <ul>
66916    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
66917    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
66918    ///     </ul>
66919    ///   
66920    pub draggable: core::option::Option<AttributeValue<'life>>,
66921    ///
66922    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
66923    ///   
66924    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
66925    ///
66926    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
66927    ///   
66928    pub exportparts: core::option::Option<AttributeValue<'life>>,
66929    /// /// Extra attributes of the element.
66930
66931    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
66932    #[cfg(feature = "alloc")]
66933    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
66934    ///
66935    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
66936    ///   
66937    pub hidden: core::option::Option<AttributeValue<'life>>,
66938    ///
66939    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
66940    ///   
66941    pub id: core::option::Option<AttributeValue<'life>>,
66942    ///
66943    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
66944    ///   
66945    pub inert: core::option::Option<AttributeValue<'life>>,
66946    ///
66947    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
66948    ///   
66949    pub inputmode: core::option::Option<AttributeValue<'life>>,
66950    ///
66951    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
66952    ///   
66953    pub is: core::option::Option<AttributeValue<'life>>,
66954    ///
66955    ///     <p>The unique, global identifier of an item.</p>
66956    ///   
66957    pub itemid: core::option::Option<AttributeValue<'life>>,
66958    ///
66959    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
66960    ///   
66961    pub itemprop: core::option::Option<AttributeValue<'life>>,
66962    ///
66963    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
66964    ///   
66965    pub itemref: core::option::Option<AttributeValue<'life>>,
66966    ///
66967    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
66968    ///   
66969    pub itemscope: core::option::Option<AttributeValue<'life>>,
66970    ///
66971    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
66972    ///   
66973    pub itemtype: core::option::Option<AttributeValue<'life>>,
66974    ///
66975    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
66976    ///   
66977    pub lang: core::option::Option<AttributeValue<'life>>,
66978    ///
66979    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
66980    ///   
66981    pub nonce: core::option::Option<AttributeValue<'life>>,
66982    ///
66983    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
66984    ///   
66985    pub part: core::option::Option<AttributeValue<'life>>,
66986    ///
66987    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
66988    ///   
66989    pub popover: core::option::Option<AttributeValue<'life>>,
66990    ///
66991    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
66992    ///   
66993    pub role: core::option::Option<AttributeValue<'life>>,
66994    ///
66995    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
66996    ///   
66997    pub slot: core::option::Option<AttributeValue<'life>>,
66998    ///
66999    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
67000    ///     <ul>
67001    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
67002    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
67003    ///     </ul>
67004    ///   
67005    pub spellcheck: core::option::Option<AttributeValue<'life>>,
67006    ///
67007    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
67008    ///   
67009    pub style: core::option::Option<AttributeValue<'life>>,
67010    ///
67011    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
67012    ///     <ul>
67013    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
67014    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
67015    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
67016    ///     </ul>
67017    ///   
67018    pub tabindex: core::option::Option<AttributeValue<'life>>,
67019    ///
67020    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
67021    ///   
67022    pub title: core::option::Option<AttributeValue<'life>>,
67023    ///
67024    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
67025    ///     <ul>
67026    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
67027    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
67028    ///     </ul>
67029    ///   
67030    pub translate: core::option::Option<AttributeValue<'life>>,
67031    ///
67032    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
67033    ///     <ul>
67034    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
67035    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
67036    ///     </ul>
67037    ///   
67038    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
67039}
67040#[allow(deprecated)]
67041
67042impl<'life> Rtc<'life> {
67043    /// Get the tag name of the element.
67044    /// This is the same as the name of the struct, in kebab-case.
67045    pub fn tag() -> &'static str {
67046        "rtc"
67047    }
67048    /// Sets an attribute of the element.
67049    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
67050    /// If the `alloc` feature is disabled, this function will silently fail.
67051    ///
67052    /// # Note
67053    /// This only works when the attribute is lowercase.
67054    pub fn set_attr(
67055        &mut self,
67056        name: &'life str,
67057        value: impl core::convert::Into<AttributeValue<'life>>,
67058    ) {
67059        match name {
67060            "accesskey" => self.accesskey = Some(value.into()),
67061            "autocapitalize" => self.autocapitalize = Some(value.into()),
67062            "autofocus" => self.autofocus = Some(value.into()),
67063            "class" => self.class = Some(value.into()),
67064            "contenteditable" => self.contenteditable = Some(value.into()),
67065            "contextmenu" => self.contextmenu = Some(value.into()),
67066            "dir" => self.dir = Some(value.into()),
67067            "draggable" => self.draggable = Some(value.into()),
67068            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
67069            "exportparts" => self.exportparts = Some(value.into()),
67070            "hidden" => self.hidden = Some(value.into()),
67071            "id" => self.id = Some(value.into()),
67072            "inert" => self.inert = Some(value.into()),
67073            "inputmode" => self.inputmode = Some(value.into()),
67074            "is" => self.is = Some(value.into()),
67075            "itemid" => self.itemid = Some(value.into()),
67076            "itemprop" => self.itemprop = Some(value.into()),
67077            "itemref" => self.itemref = Some(value.into()),
67078            "itemscope" => self.itemscope = Some(value.into()),
67079            "itemtype" => self.itemtype = Some(value.into()),
67080            "lang" => self.lang = Some(value.into()),
67081            "nonce" => self.nonce = Some(value.into()),
67082            "part" => self.part = Some(value.into()),
67083            "popover" => self.popover = Some(value.into()),
67084            "role" => self.role = Some(value.into()),
67085            "slot" => self.slot = Some(value.into()),
67086            "spellcheck" => self.spellcheck = Some(value.into()),
67087            "style" => self.style = Some(value.into()),
67088            "tabindex" => self.tabindex = Some(value.into()),
67089            "title" => self.title = Some(value.into()),
67090            "translate" => self.translate = Some(value.into()),
67091            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
67092            #[cfg(feature = "alloc")]
67093            _ => {
67094                #[allow(clippy::useless_conversion)]
67095                self.extra.insert(name.into(), value.into());
67096            }
67097            #[cfg(not(feature = "alloc"))]
67098            _ => {}
67099        }
67100    }
67101}
67102/// The <strong><code>&lt;rtc&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element embraces semantic annotations of characters presented in a ruby of <a href="/en-US/docs/Web/HTML/Element/rb"><code>&lt;rb&gt;</code></a> elements used inside of <a href="/en-US/docs/Web/HTML/Element/ruby"><code>&lt;ruby&gt;</code></a> element. <a href="/en-US/docs/Web/HTML/Element/rb"><code>&lt;rb&gt;</code></a> elements can have both pronunciation (<a href="/en-US/docs/Web/HTML/Element/rt"><code>&lt;rt&gt;</code></a>) and semantic (<a href="/en-US/docs/Web/HTML/Element/rtc" aria-current="page"><code>&lt;rtc&gt;</code></a>) annotations.
67103///
67104/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/rtc>
67105#[deprecated]
67106#[cfg(feature = "alloc")]
67107#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
67108pub struct RtcOwned {
67109    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
67110    ///   
67111    pub accesskey: core::option::Option<AttributeValueOwned>,
67112    ///
67113    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
67114    ///     <ul>
67115    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
67116    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
67117    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
67118    ///       <li><code>characters</code>, all letters should default to uppercase</li>
67119    ///     </ul>
67120    ///   
67121    pub autocapitalize: core::option::Option<AttributeValueOwned>,
67122    ///
67123    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
67124    ///   
67125    pub autofocus: core::option::Option<AttributeValueOwned>,
67126    ///
67127    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
67128    ///   
67129    pub class: core::option::Option<AttributeValueOwned>,
67130    ///
67131    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
67132    ///     <ul>
67133    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
67134    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
67135    ///     </ul>
67136    ///   
67137    pub contenteditable: core::option::Option<AttributeValueOwned>,
67138    ///
67139    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
67140    ///   
67141    pub contextmenu: core::option::Option<AttributeValueOwned>,
67142    ///
67143    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
67144    ///   
67145    #[cfg(feature = "alloc")]
67146    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
67147    ///
67148    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
67149    ///     <ul>
67150    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
67151    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
67152    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
67153    ///     </ul>
67154    ///   
67155    pub dir: core::option::Option<AttributeValueOwned>,
67156    ///
67157    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
67158    ///     <ul>
67159    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
67160    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
67161    ///     </ul>
67162    ///   
67163    pub draggable: core::option::Option<AttributeValueOwned>,
67164    ///
67165    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
67166    ///   
67167    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
67168    ///
67169    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
67170    ///   
67171    pub exportparts: core::option::Option<AttributeValueOwned>,
67172    /// /// Extra attributes of the element.
67173
67174    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
67175    #[cfg(feature = "alloc")]
67176    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
67177    ///
67178    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
67179    ///   
67180    pub hidden: core::option::Option<AttributeValueOwned>,
67181    ///
67182    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
67183    ///   
67184    pub id: core::option::Option<AttributeValueOwned>,
67185    ///
67186    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
67187    ///   
67188    pub inert: core::option::Option<AttributeValueOwned>,
67189    ///
67190    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
67191    ///   
67192    pub inputmode: core::option::Option<AttributeValueOwned>,
67193    ///
67194    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
67195    ///   
67196    pub is: core::option::Option<AttributeValueOwned>,
67197    ///
67198    ///     <p>The unique, global identifier of an item.</p>
67199    ///   
67200    pub itemid: core::option::Option<AttributeValueOwned>,
67201    ///
67202    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
67203    ///   
67204    pub itemprop: core::option::Option<AttributeValueOwned>,
67205    ///
67206    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
67207    ///   
67208    pub itemref: core::option::Option<AttributeValueOwned>,
67209    ///
67210    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
67211    ///   
67212    pub itemscope: core::option::Option<AttributeValueOwned>,
67213    ///
67214    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
67215    ///   
67216    pub itemtype: core::option::Option<AttributeValueOwned>,
67217    ///
67218    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
67219    ///   
67220    pub lang: core::option::Option<AttributeValueOwned>,
67221    ///
67222    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
67223    ///   
67224    pub nonce: core::option::Option<AttributeValueOwned>,
67225    ///
67226    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
67227    ///   
67228    pub part: core::option::Option<AttributeValueOwned>,
67229    ///
67230    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
67231    ///   
67232    pub popover: core::option::Option<AttributeValueOwned>,
67233    ///
67234    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
67235    ///   
67236    pub role: core::option::Option<AttributeValueOwned>,
67237    ///
67238    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
67239    ///   
67240    pub slot: core::option::Option<AttributeValueOwned>,
67241    ///
67242    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
67243    ///     <ul>
67244    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
67245    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
67246    ///     </ul>
67247    ///   
67248    pub spellcheck: core::option::Option<AttributeValueOwned>,
67249    ///
67250    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
67251    ///   
67252    pub style: core::option::Option<AttributeValueOwned>,
67253    ///
67254    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
67255    ///     <ul>
67256    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
67257    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
67258    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
67259    ///     </ul>
67260    ///   
67261    pub tabindex: core::option::Option<AttributeValueOwned>,
67262    ///
67263    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
67264    ///   
67265    pub title: core::option::Option<AttributeValueOwned>,
67266    ///
67267    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
67268    ///     <ul>
67269    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
67270    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
67271    ///     </ul>
67272    ///   
67273    pub translate: core::option::Option<AttributeValueOwned>,
67274    ///
67275    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
67276    ///     <ul>
67277    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
67278    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
67279    ///     </ul>
67280    ///   
67281    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
67282}
67283#[allow(deprecated)]
67284#[cfg(feature = "alloc")]
67285impl RtcOwned {
67286    /// Get the tag name of the element.
67287    /// This is the same as the name of the struct, in kebab-case.
67288    pub fn tag() -> &'static str {
67289        "rtc"
67290    }
67291    /// Sets an attribute of the element.
67292    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
67293    /// If the `alloc` feature is disabled, this function will silently fail.
67294    ///
67295    /// # Note
67296    /// This only works when the attribute is lowercase.
67297    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
67298        match name {
67299            "accesskey" => self.accesskey = Some(value.into()),
67300            "autocapitalize" => self.autocapitalize = Some(value.into()),
67301            "autofocus" => self.autofocus = Some(value.into()),
67302            "class" => self.class = Some(value.into()),
67303            "contenteditable" => self.contenteditable = Some(value.into()),
67304            "contextmenu" => self.contextmenu = Some(value.into()),
67305            "dir" => self.dir = Some(value.into()),
67306            "draggable" => self.draggable = Some(value.into()),
67307            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
67308            "exportparts" => self.exportparts = Some(value.into()),
67309            "hidden" => self.hidden = Some(value.into()),
67310            "id" => self.id = Some(value.into()),
67311            "inert" => self.inert = Some(value.into()),
67312            "inputmode" => self.inputmode = Some(value.into()),
67313            "is" => self.is = Some(value.into()),
67314            "itemid" => self.itemid = Some(value.into()),
67315            "itemprop" => self.itemprop = Some(value.into()),
67316            "itemref" => self.itemref = Some(value.into()),
67317            "itemscope" => self.itemscope = Some(value.into()),
67318            "itemtype" => self.itemtype = Some(value.into()),
67319            "lang" => self.lang = Some(value.into()),
67320            "nonce" => self.nonce = Some(value.into()),
67321            "part" => self.part = Some(value.into()),
67322            "popover" => self.popover = Some(value.into()),
67323            "role" => self.role = Some(value.into()),
67324            "slot" => self.slot = Some(value.into()),
67325            "spellcheck" => self.spellcheck = Some(value.into()),
67326            "style" => self.style = Some(value.into()),
67327            "tabindex" => self.tabindex = Some(value.into()),
67328            "title" => self.title = Some(value.into()),
67329            "translate" => self.translate = Some(value.into()),
67330            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
67331            #[cfg(feature = "alloc")]
67332            _ => {
67333                #[allow(clippy::useless_conversion)]
67334                self.extra.insert(name.into(), value.into());
67335            }
67336            #[cfg(not(feature = "alloc"))]
67337            _ => {}
67338        }
67339    }
67340}
67341/// The <strong><code>&lt;spacer&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element is an obsolete HTML element which allowed insertion of empty spaces on pages. It was devised by Netscape to accomplish the same effect as a single-pixel layout image, which was something web designers used to use to add white spaces to web pages without actually using an image. However, <code>&lt;spacer&gt;</code> is no longer supported by any major browser and the same effects can now be achieved using simple CSS.
67342///
67343/// Firefox, which is the descendant of Netscape's browsers, removed support for <code>&lt;spacer&gt;</code> in version 4.
67344///
67345/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/spacer>
67346#[deprecated]
67347#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
67348pub struct Spacer<'life> {
67349    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
67350    ///   
67351    pub accesskey: core::option::Option<AttributeValue<'life>>,
67352    ///
67353    ///     <p>This attribute determines alignment of spacer. Possible values are <code>left</code>, <code>right</code> and <code>center</code>.</p>
67354    ///   
67355    pub align: core::option::Option<AttributeValue<'life>>,
67356    ///
67357    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
67358    ///     <ul>
67359    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
67360    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
67361    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
67362    ///       <li><code>characters</code>, all letters should default to uppercase</li>
67363    ///     </ul>
67364    ///   
67365    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
67366    ///
67367    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
67368    ///   
67369    pub autofocus: core::option::Option<AttributeValue<'life>>,
67370    ///
67371    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
67372    ///   
67373    pub class: core::option::Option<AttributeValue<'life>>,
67374    ///
67375    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
67376    ///     <ul>
67377    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
67378    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
67379    ///     </ul>
67380    ///   
67381    pub contenteditable: core::option::Option<AttributeValue<'life>>,
67382    ///
67383    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
67384    ///   
67385    pub contextmenu: core::option::Option<AttributeValue<'life>>,
67386    ///
67387    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
67388    ///   
67389    #[cfg(feature = "alloc")]
67390    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
67391    ///
67392    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
67393    ///     <ul>
67394    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
67395    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
67396    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
67397    ///     </ul>
67398    ///   
67399    pub dir: core::option::Option<AttributeValue<'life>>,
67400    ///
67401    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
67402    ///     <ul>
67403    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
67404    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
67405    ///     </ul>
67406    ///   
67407    pub draggable: core::option::Option<AttributeValue<'life>>,
67408    ///
67409    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
67410    ///   
67411    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
67412    ///
67413    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
67414    ///   
67415    pub exportparts: core::option::Option<AttributeValue<'life>>,
67416    /// /// Extra attributes of the element.
67417
67418    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
67419    #[cfg(feature = "alloc")]
67420    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
67421    ///
67422    ///     <p>This attribute can be used for defining height of spacer in pixels when type is <code>block</code>.</p>
67423    ///   
67424    pub height: core::option::Option<AttributeValue<'life>>,
67425    ///
67426    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
67427    ///   
67428    pub hidden: core::option::Option<AttributeValue<'life>>,
67429    ///
67430    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
67431    ///   
67432    pub id: core::option::Option<AttributeValue<'life>>,
67433    ///
67434    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
67435    ///   
67436    pub inert: core::option::Option<AttributeValue<'life>>,
67437    ///
67438    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
67439    ///   
67440    pub inputmode: core::option::Option<AttributeValue<'life>>,
67441    ///
67442    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
67443    ///   
67444    pub is: core::option::Option<AttributeValue<'life>>,
67445    ///
67446    ///     <p>The unique, global identifier of an item.</p>
67447    ///   
67448    pub itemid: core::option::Option<AttributeValue<'life>>,
67449    ///
67450    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
67451    ///   
67452    pub itemprop: core::option::Option<AttributeValue<'life>>,
67453    ///
67454    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
67455    ///   
67456    pub itemref: core::option::Option<AttributeValue<'life>>,
67457    ///
67458    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
67459    ///   
67460    pub itemscope: core::option::Option<AttributeValue<'life>>,
67461    ///
67462    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
67463    ///   
67464    pub itemtype: core::option::Option<AttributeValue<'life>>,
67465    ///
67466    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
67467    ///   
67468    pub lang: core::option::Option<AttributeValue<'life>>,
67469    ///
67470    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
67471    ///   
67472    pub nonce: core::option::Option<AttributeValue<'life>>,
67473    ///
67474    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
67475    ///   
67476    pub part: core::option::Option<AttributeValue<'life>>,
67477    ///
67478    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
67479    ///   
67480    pub popover: core::option::Option<AttributeValue<'life>>,
67481    ///
67482    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
67483    ///   
67484    pub role: core::option::Option<AttributeValue<'life>>,
67485    ///
67486    ///     <p>This attribute can be used for defining size of spacer in pixels when type is <code>horizontal</code> or <code>vertical</code>.</p>
67487    ///   
67488    pub size: core::option::Option<AttributeValue<'life>>,
67489    ///
67490    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
67491    ///   
67492    pub slot: core::option::Option<AttributeValue<'life>>,
67493    ///
67494    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
67495    ///     <ul>
67496    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
67497    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
67498    ///     </ul>
67499    ///   
67500    pub spellcheck: core::option::Option<AttributeValue<'life>>,
67501    ///
67502    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
67503    ///   
67504    pub style: core::option::Option<AttributeValue<'life>>,
67505    ///
67506    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
67507    ///     <ul>
67508    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
67509    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
67510    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
67511    ///     </ul>
67512    ///   
67513    pub tabindex: core::option::Option<AttributeValue<'life>>,
67514    ///
67515    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
67516    ///   
67517    pub title: core::option::Option<AttributeValue<'life>>,
67518    ///
67519    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
67520    ///     <ul>
67521    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
67522    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
67523    ///     </ul>
67524    ///   
67525    pub translate: core::option::Option<AttributeValue<'life>>,
67526    ///
67527    ///     <p>This attribute determines type of spacer. Possible values are <code>horizontal</code>, <code>vertical</code> and <code>block</code>.</p>
67528    ///   
67529    pub type_: core::option::Option<AttributeValue<'life>>,
67530    ///
67531    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
67532    ///     <ul>
67533    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
67534    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
67535    ///     </ul>
67536    ///   
67537    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
67538    ///
67539    ///     <p>This attribute can be used for defining width of spacer in pixels when type is <code>block</code>.</p>
67540    ///   
67541    pub width: core::option::Option<AttributeValue<'life>>,
67542}
67543#[allow(deprecated)]
67544
67545impl<'life> Spacer<'life> {
67546    /// Get the tag name of the element.
67547    /// This is the same as the name of the struct, in kebab-case.
67548    pub fn tag() -> &'static str {
67549        "spacer"
67550    }
67551    /// Sets an attribute of the element.
67552    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
67553    /// If the `alloc` feature is disabled, this function will silently fail.
67554    ///
67555    /// # Note
67556    /// This only works when the attribute is lowercase.
67557    pub fn set_attr(
67558        &mut self,
67559        name: &'life str,
67560        value: impl core::convert::Into<AttributeValue<'life>>,
67561    ) {
67562        match name {
67563            "accesskey" => self.accesskey = Some(value.into()),
67564            "align" => self.align = Some(value.into()),
67565            "autocapitalize" => self.autocapitalize = Some(value.into()),
67566            "autofocus" => self.autofocus = Some(value.into()),
67567            "class" => self.class = Some(value.into()),
67568            "contenteditable" => self.contenteditable = Some(value.into()),
67569            "contextmenu" => self.contextmenu = Some(value.into()),
67570            "dir" => self.dir = Some(value.into()),
67571            "draggable" => self.draggable = Some(value.into()),
67572            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
67573            "exportparts" => self.exportparts = Some(value.into()),
67574            "height" => self.height = Some(value.into()),
67575            "hidden" => self.hidden = Some(value.into()),
67576            "id" => self.id = Some(value.into()),
67577            "inert" => self.inert = Some(value.into()),
67578            "inputmode" => self.inputmode = Some(value.into()),
67579            "is" => self.is = Some(value.into()),
67580            "itemid" => self.itemid = Some(value.into()),
67581            "itemprop" => self.itemprop = Some(value.into()),
67582            "itemref" => self.itemref = Some(value.into()),
67583            "itemscope" => self.itemscope = Some(value.into()),
67584            "itemtype" => self.itemtype = Some(value.into()),
67585            "lang" => self.lang = Some(value.into()),
67586            "nonce" => self.nonce = Some(value.into()),
67587            "part" => self.part = Some(value.into()),
67588            "popover" => self.popover = Some(value.into()),
67589            "role" => self.role = Some(value.into()),
67590            "size" => self.size = Some(value.into()),
67591            "slot" => self.slot = Some(value.into()),
67592            "spellcheck" => self.spellcheck = Some(value.into()),
67593            "style" => self.style = Some(value.into()),
67594            "tabindex" => self.tabindex = Some(value.into()),
67595            "title" => self.title = Some(value.into()),
67596            "translate" => self.translate = Some(value.into()),
67597            "type_" => self.type_ = Some(value.into()),
67598            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
67599            "width" => self.width = Some(value.into()),
67600            #[cfg(feature = "alloc")]
67601            _ => {
67602                #[allow(clippy::useless_conversion)]
67603                self.extra.insert(name.into(), value.into());
67604            }
67605            #[cfg(not(feature = "alloc"))]
67606            _ => {}
67607        }
67608    }
67609}
67610/// The <strong><code>&lt;spacer&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element is an obsolete HTML element which allowed insertion of empty spaces on pages. It was devised by Netscape to accomplish the same effect as a single-pixel layout image, which was something web designers used to use to add white spaces to web pages without actually using an image. However, <code>&lt;spacer&gt;</code> is no longer supported by any major browser and the same effects can now be achieved using simple CSS.
67611///
67612/// Firefox, which is the descendant of Netscape's browsers, removed support for <code>&lt;spacer&gt;</code> in version 4.
67613///
67614/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/spacer>
67615#[deprecated]
67616#[cfg(feature = "alloc")]
67617#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
67618pub struct SpacerOwned {
67619    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
67620    ///   
67621    pub accesskey: core::option::Option<AttributeValueOwned>,
67622    ///
67623    ///     <p>This attribute determines alignment of spacer. Possible values are <code>left</code>, <code>right</code> and <code>center</code>.</p>
67624    ///   
67625    pub align: core::option::Option<AttributeValueOwned>,
67626    ///
67627    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
67628    ///     <ul>
67629    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
67630    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
67631    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
67632    ///       <li><code>characters</code>, all letters should default to uppercase</li>
67633    ///     </ul>
67634    ///   
67635    pub autocapitalize: core::option::Option<AttributeValueOwned>,
67636    ///
67637    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
67638    ///   
67639    pub autofocus: core::option::Option<AttributeValueOwned>,
67640    ///
67641    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
67642    ///   
67643    pub class: core::option::Option<AttributeValueOwned>,
67644    ///
67645    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
67646    ///     <ul>
67647    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
67648    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
67649    ///     </ul>
67650    ///   
67651    pub contenteditable: core::option::Option<AttributeValueOwned>,
67652    ///
67653    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
67654    ///   
67655    pub contextmenu: core::option::Option<AttributeValueOwned>,
67656    ///
67657    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
67658    ///   
67659    #[cfg(feature = "alloc")]
67660    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
67661    ///
67662    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
67663    ///     <ul>
67664    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
67665    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
67666    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
67667    ///     </ul>
67668    ///   
67669    pub dir: core::option::Option<AttributeValueOwned>,
67670    ///
67671    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
67672    ///     <ul>
67673    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
67674    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
67675    ///     </ul>
67676    ///   
67677    pub draggable: core::option::Option<AttributeValueOwned>,
67678    ///
67679    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
67680    ///   
67681    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
67682    ///
67683    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
67684    ///   
67685    pub exportparts: core::option::Option<AttributeValueOwned>,
67686    /// /// Extra attributes of the element.
67687
67688    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
67689    #[cfg(feature = "alloc")]
67690    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
67691    ///
67692    ///     <p>This attribute can be used for defining height of spacer in pixels when type is <code>block</code>.</p>
67693    ///   
67694    pub height: core::option::Option<AttributeValueOwned>,
67695    ///
67696    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
67697    ///   
67698    pub hidden: core::option::Option<AttributeValueOwned>,
67699    ///
67700    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
67701    ///   
67702    pub id: core::option::Option<AttributeValueOwned>,
67703    ///
67704    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
67705    ///   
67706    pub inert: core::option::Option<AttributeValueOwned>,
67707    ///
67708    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
67709    ///   
67710    pub inputmode: core::option::Option<AttributeValueOwned>,
67711    ///
67712    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
67713    ///   
67714    pub is: core::option::Option<AttributeValueOwned>,
67715    ///
67716    ///     <p>The unique, global identifier of an item.</p>
67717    ///   
67718    pub itemid: core::option::Option<AttributeValueOwned>,
67719    ///
67720    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
67721    ///   
67722    pub itemprop: core::option::Option<AttributeValueOwned>,
67723    ///
67724    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
67725    ///   
67726    pub itemref: core::option::Option<AttributeValueOwned>,
67727    ///
67728    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
67729    ///   
67730    pub itemscope: core::option::Option<AttributeValueOwned>,
67731    ///
67732    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
67733    ///   
67734    pub itemtype: core::option::Option<AttributeValueOwned>,
67735    ///
67736    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
67737    ///   
67738    pub lang: core::option::Option<AttributeValueOwned>,
67739    ///
67740    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
67741    ///   
67742    pub nonce: core::option::Option<AttributeValueOwned>,
67743    ///
67744    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
67745    ///   
67746    pub part: core::option::Option<AttributeValueOwned>,
67747    ///
67748    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
67749    ///   
67750    pub popover: core::option::Option<AttributeValueOwned>,
67751    ///
67752    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
67753    ///   
67754    pub role: core::option::Option<AttributeValueOwned>,
67755    ///
67756    ///     <p>This attribute can be used for defining size of spacer in pixels when type is <code>horizontal</code> or <code>vertical</code>.</p>
67757    ///   
67758    pub size: core::option::Option<AttributeValueOwned>,
67759    ///
67760    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
67761    ///   
67762    pub slot: core::option::Option<AttributeValueOwned>,
67763    ///
67764    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
67765    ///     <ul>
67766    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
67767    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
67768    ///     </ul>
67769    ///   
67770    pub spellcheck: core::option::Option<AttributeValueOwned>,
67771    ///
67772    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
67773    ///   
67774    pub style: core::option::Option<AttributeValueOwned>,
67775    ///
67776    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
67777    ///     <ul>
67778    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
67779    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
67780    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
67781    ///     </ul>
67782    ///   
67783    pub tabindex: core::option::Option<AttributeValueOwned>,
67784    ///
67785    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
67786    ///   
67787    pub title: core::option::Option<AttributeValueOwned>,
67788    ///
67789    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
67790    ///     <ul>
67791    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
67792    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
67793    ///     </ul>
67794    ///   
67795    pub translate: core::option::Option<AttributeValueOwned>,
67796    ///
67797    ///     <p>This attribute determines type of spacer. Possible values are <code>horizontal</code>, <code>vertical</code> and <code>block</code>.</p>
67798    ///   
67799    pub type_: core::option::Option<AttributeValueOwned>,
67800    ///
67801    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
67802    ///     <ul>
67803    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
67804    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
67805    ///     </ul>
67806    ///   
67807    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
67808    ///
67809    ///     <p>This attribute can be used for defining width of spacer in pixels when type is <code>block</code>.</p>
67810    ///   
67811    pub width: core::option::Option<AttributeValueOwned>,
67812}
67813#[allow(deprecated)]
67814#[cfg(feature = "alloc")]
67815impl SpacerOwned {
67816    /// Get the tag name of the element.
67817    /// This is the same as the name of the struct, in kebab-case.
67818    pub fn tag() -> &'static str {
67819        "spacer"
67820    }
67821    /// Sets an attribute of the element.
67822    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
67823    /// If the `alloc` feature is disabled, this function will silently fail.
67824    ///
67825    /// # Note
67826    /// This only works when the attribute is lowercase.
67827    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
67828        match name {
67829            "accesskey" => self.accesskey = Some(value.into()),
67830            "align" => self.align = Some(value.into()),
67831            "autocapitalize" => self.autocapitalize = Some(value.into()),
67832            "autofocus" => self.autofocus = Some(value.into()),
67833            "class" => self.class = Some(value.into()),
67834            "contenteditable" => self.contenteditable = Some(value.into()),
67835            "contextmenu" => self.contextmenu = Some(value.into()),
67836            "dir" => self.dir = Some(value.into()),
67837            "draggable" => self.draggable = Some(value.into()),
67838            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
67839            "exportparts" => self.exportparts = Some(value.into()),
67840            "height" => self.height = Some(value.into()),
67841            "hidden" => self.hidden = Some(value.into()),
67842            "id" => self.id = Some(value.into()),
67843            "inert" => self.inert = Some(value.into()),
67844            "inputmode" => self.inputmode = Some(value.into()),
67845            "is" => self.is = Some(value.into()),
67846            "itemid" => self.itemid = Some(value.into()),
67847            "itemprop" => self.itemprop = Some(value.into()),
67848            "itemref" => self.itemref = Some(value.into()),
67849            "itemscope" => self.itemscope = Some(value.into()),
67850            "itemtype" => self.itemtype = Some(value.into()),
67851            "lang" => self.lang = Some(value.into()),
67852            "nonce" => self.nonce = Some(value.into()),
67853            "part" => self.part = Some(value.into()),
67854            "popover" => self.popover = Some(value.into()),
67855            "role" => self.role = Some(value.into()),
67856            "size" => self.size = Some(value.into()),
67857            "slot" => self.slot = Some(value.into()),
67858            "spellcheck" => self.spellcheck = Some(value.into()),
67859            "style" => self.style = Some(value.into()),
67860            "tabindex" => self.tabindex = Some(value.into()),
67861            "title" => self.title = Some(value.into()),
67862            "translate" => self.translate = Some(value.into()),
67863            "type_" => self.type_ = Some(value.into()),
67864            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
67865            "width" => self.width = Some(value.into()),
67866            #[cfg(feature = "alloc")]
67867            _ => {
67868                #[allow(clippy::useless_conversion)]
67869                self.extra.insert(name.into(), value.into());
67870            }
67871            #[cfg(not(feature = "alloc"))]
67872            _ => {}
67873        }
67874    }
67875}
67876/// The <strong><code>&lt;strike&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element places a strikethrough (horizontal line) over text.
67877///
67878/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/strike>
67879#[deprecated]
67880#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
67881pub struct Strike<'life> {
67882    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
67883    ///   
67884    pub accesskey: core::option::Option<AttributeValue<'life>>,
67885    ///
67886    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
67887    ///     <ul>
67888    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
67889    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
67890    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
67891    ///       <li><code>characters</code>, all letters should default to uppercase</li>
67892    ///     </ul>
67893    ///   
67894    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
67895    ///
67896    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
67897    ///   
67898    pub autofocus: core::option::Option<AttributeValue<'life>>,
67899    ///
67900    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
67901    ///   
67902    pub class: core::option::Option<AttributeValue<'life>>,
67903    ///
67904    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
67905    ///     <ul>
67906    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
67907    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
67908    ///     </ul>
67909    ///   
67910    pub contenteditable: core::option::Option<AttributeValue<'life>>,
67911    ///
67912    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
67913    ///   
67914    pub contextmenu: core::option::Option<AttributeValue<'life>>,
67915    ///
67916    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
67917    ///   
67918    #[cfg(feature = "alloc")]
67919    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
67920    ///
67921    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
67922    ///     <ul>
67923    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
67924    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
67925    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
67926    ///     </ul>
67927    ///   
67928    pub dir: core::option::Option<AttributeValue<'life>>,
67929    ///
67930    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
67931    ///     <ul>
67932    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
67933    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
67934    ///     </ul>
67935    ///   
67936    pub draggable: core::option::Option<AttributeValue<'life>>,
67937    ///
67938    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
67939    ///   
67940    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
67941    ///
67942    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
67943    ///   
67944    pub exportparts: core::option::Option<AttributeValue<'life>>,
67945    /// /// Extra attributes of the element.
67946
67947    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
67948    #[cfg(feature = "alloc")]
67949    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
67950    ///
67951    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
67952    ///   
67953    pub hidden: core::option::Option<AttributeValue<'life>>,
67954    ///
67955    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
67956    ///   
67957    pub id: core::option::Option<AttributeValue<'life>>,
67958    ///
67959    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
67960    ///   
67961    pub inert: core::option::Option<AttributeValue<'life>>,
67962    ///
67963    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
67964    ///   
67965    pub inputmode: core::option::Option<AttributeValue<'life>>,
67966    ///
67967    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
67968    ///   
67969    pub is: core::option::Option<AttributeValue<'life>>,
67970    ///
67971    ///     <p>The unique, global identifier of an item.</p>
67972    ///   
67973    pub itemid: core::option::Option<AttributeValue<'life>>,
67974    ///
67975    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
67976    ///   
67977    pub itemprop: core::option::Option<AttributeValue<'life>>,
67978    ///
67979    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
67980    ///   
67981    pub itemref: core::option::Option<AttributeValue<'life>>,
67982    ///
67983    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
67984    ///   
67985    pub itemscope: core::option::Option<AttributeValue<'life>>,
67986    ///
67987    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
67988    ///   
67989    pub itemtype: core::option::Option<AttributeValue<'life>>,
67990    ///
67991    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
67992    ///   
67993    pub lang: core::option::Option<AttributeValue<'life>>,
67994    ///
67995    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
67996    ///   
67997    pub nonce: core::option::Option<AttributeValue<'life>>,
67998    ///
67999    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
68000    ///   
68001    pub part: core::option::Option<AttributeValue<'life>>,
68002    ///
68003    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
68004    ///   
68005    pub popover: core::option::Option<AttributeValue<'life>>,
68006    ///
68007    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
68008    ///   
68009    pub role: core::option::Option<AttributeValue<'life>>,
68010    ///
68011    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
68012    ///   
68013    pub slot: core::option::Option<AttributeValue<'life>>,
68014    ///
68015    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
68016    ///     <ul>
68017    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
68018    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
68019    ///     </ul>
68020    ///   
68021    pub spellcheck: core::option::Option<AttributeValue<'life>>,
68022    ///
68023    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
68024    ///   
68025    pub style: core::option::Option<AttributeValue<'life>>,
68026    ///
68027    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
68028    ///     <ul>
68029    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
68030    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
68031    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
68032    ///     </ul>
68033    ///   
68034    pub tabindex: core::option::Option<AttributeValue<'life>>,
68035    ///
68036    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
68037    ///   
68038    pub title: core::option::Option<AttributeValue<'life>>,
68039    ///
68040    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
68041    ///     <ul>
68042    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
68043    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
68044    ///     </ul>
68045    ///   
68046    pub translate: core::option::Option<AttributeValue<'life>>,
68047    ///
68048    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
68049    ///     <ul>
68050    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
68051    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
68052    ///     </ul>
68053    ///   
68054    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
68055}
68056#[allow(deprecated)]
68057
68058impl<'life> Strike<'life> {
68059    /// Get the tag name of the element.
68060    /// This is the same as the name of the struct, in kebab-case.
68061    pub fn tag() -> &'static str {
68062        "strike"
68063    }
68064    /// Sets an attribute of the element.
68065    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
68066    /// If the `alloc` feature is disabled, this function will silently fail.
68067    ///
68068    /// # Note
68069    /// This only works when the attribute is lowercase.
68070    pub fn set_attr(
68071        &mut self,
68072        name: &'life str,
68073        value: impl core::convert::Into<AttributeValue<'life>>,
68074    ) {
68075        match name {
68076            "accesskey" => self.accesskey = Some(value.into()),
68077            "autocapitalize" => self.autocapitalize = Some(value.into()),
68078            "autofocus" => self.autofocus = Some(value.into()),
68079            "class" => self.class = Some(value.into()),
68080            "contenteditable" => self.contenteditable = Some(value.into()),
68081            "contextmenu" => self.contextmenu = Some(value.into()),
68082            "dir" => self.dir = Some(value.into()),
68083            "draggable" => self.draggable = Some(value.into()),
68084            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
68085            "exportparts" => self.exportparts = Some(value.into()),
68086            "hidden" => self.hidden = Some(value.into()),
68087            "id" => self.id = Some(value.into()),
68088            "inert" => self.inert = Some(value.into()),
68089            "inputmode" => self.inputmode = Some(value.into()),
68090            "is" => self.is = Some(value.into()),
68091            "itemid" => self.itemid = Some(value.into()),
68092            "itemprop" => self.itemprop = Some(value.into()),
68093            "itemref" => self.itemref = Some(value.into()),
68094            "itemscope" => self.itemscope = Some(value.into()),
68095            "itemtype" => self.itemtype = Some(value.into()),
68096            "lang" => self.lang = Some(value.into()),
68097            "nonce" => self.nonce = Some(value.into()),
68098            "part" => self.part = Some(value.into()),
68099            "popover" => self.popover = Some(value.into()),
68100            "role" => self.role = Some(value.into()),
68101            "slot" => self.slot = Some(value.into()),
68102            "spellcheck" => self.spellcheck = Some(value.into()),
68103            "style" => self.style = Some(value.into()),
68104            "tabindex" => self.tabindex = Some(value.into()),
68105            "title" => self.title = Some(value.into()),
68106            "translate" => self.translate = Some(value.into()),
68107            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
68108            #[cfg(feature = "alloc")]
68109            _ => {
68110                #[allow(clippy::useless_conversion)]
68111                self.extra.insert(name.into(), value.into());
68112            }
68113            #[cfg(not(feature = "alloc"))]
68114            _ => {}
68115        }
68116    }
68117}
68118/// The <strong><code>&lt;strike&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element places a strikethrough (horizontal line) over text.
68119///
68120/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/strike>
68121#[deprecated]
68122#[cfg(feature = "alloc")]
68123#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
68124pub struct StrikeOwned {
68125    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
68126    ///   
68127    pub accesskey: core::option::Option<AttributeValueOwned>,
68128    ///
68129    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
68130    ///     <ul>
68131    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
68132    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
68133    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
68134    ///       <li><code>characters</code>, all letters should default to uppercase</li>
68135    ///     </ul>
68136    ///   
68137    pub autocapitalize: core::option::Option<AttributeValueOwned>,
68138    ///
68139    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
68140    ///   
68141    pub autofocus: core::option::Option<AttributeValueOwned>,
68142    ///
68143    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
68144    ///   
68145    pub class: core::option::Option<AttributeValueOwned>,
68146    ///
68147    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
68148    ///     <ul>
68149    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
68150    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
68151    ///     </ul>
68152    ///   
68153    pub contenteditable: core::option::Option<AttributeValueOwned>,
68154    ///
68155    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
68156    ///   
68157    pub contextmenu: core::option::Option<AttributeValueOwned>,
68158    ///
68159    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
68160    ///   
68161    #[cfg(feature = "alloc")]
68162    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
68163    ///
68164    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
68165    ///     <ul>
68166    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
68167    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
68168    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
68169    ///     </ul>
68170    ///   
68171    pub dir: core::option::Option<AttributeValueOwned>,
68172    ///
68173    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
68174    ///     <ul>
68175    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
68176    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
68177    ///     </ul>
68178    ///   
68179    pub draggable: core::option::Option<AttributeValueOwned>,
68180    ///
68181    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
68182    ///   
68183    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
68184    ///
68185    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
68186    ///   
68187    pub exportparts: core::option::Option<AttributeValueOwned>,
68188    /// /// Extra attributes of the element.
68189
68190    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
68191    #[cfg(feature = "alloc")]
68192    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
68193    ///
68194    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
68195    ///   
68196    pub hidden: core::option::Option<AttributeValueOwned>,
68197    ///
68198    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
68199    ///   
68200    pub id: core::option::Option<AttributeValueOwned>,
68201    ///
68202    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
68203    ///   
68204    pub inert: core::option::Option<AttributeValueOwned>,
68205    ///
68206    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
68207    ///   
68208    pub inputmode: core::option::Option<AttributeValueOwned>,
68209    ///
68210    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
68211    ///   
68212    pub is: core::option::Option<AttributeValueOwned>,
68213    ///
68214    ///     <p>The unique, global identifier of an item.</p>
68215    ///   
68216    pub itemid: core::option::Option<AttributeValueOwned>,
68217    ///
68218    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
68219    ///   
68220    pub itemprop: core::option::Option<AttributeValueOwned>,
68221    ///
68222    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
68223    ///   
68224    pub itemref: core::option::Option<AttributeValueOwned>,
68225    ///
68226    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
68227    ///   
68228    pub itemscope: core::option::Option<AttributeValueOwned>,
68229    ///
68230    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
68231    ///   
68232    pub itemtype: core::option::Option<AttributeValueOwned>,
68233    ///
68234    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
68235    ///   
68236    pub lang: core::option::Option<AttributeValueOwned>,
68237    ///
68238    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
68239    ///   
68240    pub nonce: core::option::Option<AttributeValueOwned>,
68241    ///
68242    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
68243    ///   
68244    pub part: core::option::Option<AttributeValueOwned>,
68245    ///
68246    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
68247    ///   
68248    pub popover: core::option::Option<AttributeValueOwned>,
68249    ///
68250    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
68251    ///   
68252    pub role: core::option::Option<AttributeValueOwned>,
68253    ///
68254    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
68255    ///   
68256    pub slot: core::option::Option<AttributeValueOwned>,
68257    ///
68258    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
68259    ///     <ul>
68260    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
68261    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
68262    ///     </ul>
68263    ///   
68264    pub spellcheck: core::option::Option<AttributeValueOwned>,
68265    ///
68266    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
68267    ///   
68268    pub style: core::option::Option<AttributeValueOwned>,
68269    ///
68270    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
68271    ///     <ul>
68272    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
68273    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
68274    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
68275    ///     </ul>
68276    ///   
68277    pub tabindex: core::option::Option<AttributeValueOwned>,
68278    ///
68279    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
68280    ///   
68281    pub title: core::option::Option<AttributeValueOwned>,
68282    ///
68283    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
68284    ///     <ul>
68285    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
68286    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
68287    ///     </ul>
68288    ///   
68289    pub translate: core::option::Option<AttributeValueOwned>,
68290    ///
68291    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
68292    ///     <ul>
68293    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
68294    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
68295    ///     </ul>
68296    ///   
68297    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
68298}
68299#[allow(deprecated)]
68300#[cfg(feature = "alloc")]
68301impl StrikeOwned {
68302    /// Get the tag name of the element.
68303    /// This is the same as the name of the struct, in kebab-case.
68304    pub fn tag() -> &'static str {
68305        "strike"
68306    }
68307    /// Sets an attribute of the element.
68308    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
68309    /// If the `alloc` feature is disabled, this function will silently fail.
68310    ///
68311    /// # Note
68312    /// This only works when the attribute is lowercase.
68313    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
68314        match name {
68315            "accesskey" => self.accesskey = Some(value.into()),
68316            "autocapitalize" => self.autocapitalize = Some(value.into()),
68317            "autofocus" => self.autofocus = Some(value.into()),
68318            "class" => self.class = Some(value.into()),
68319            "contenteditable" => self.contenteditable = Some(value.into()),
68320            "contextmenu" => self.contextmenu = Some(value.into()),
68321            "dir" => self.dir = Some(value.into()),
68322            "draggable" => self.draggable = Some(value.into()),
68323            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
68324            "exportparts" => self.exportparts = Some(value.into()),
68325            "hidden" => self.hidden = Some(value.into()),
68326            "id" => self.id = Some(value.into()),
68327            "inert" => self.inert = Some(value.into()),
68328            "inputmode" => self.inputmode = Some(value.into()),
68329            "is" => self.is = Some(value.into()),
68330            "itemid" => self.itemid = Some(value.into()),
68331            "itemprop" => self.itemprop = Some(value.into()),
68332            "itemref" => self.itemref = Some(value.into()),
68333            "itemscope" => self.itemscope = Some(value.into()),
68334            "itemtype" => self.itemtype = Some(value.into()),
68335            "lang" => self.lang = Some(value.into()),
68336            "nonce" => self.nonce = Some(value.into()),
68337            "part" => self.part = Some(value.into()),
68338            "popover" => self.popover = Some(value.into()),
68339            "role" => self.role = Some(value.into()),
68340            "slot" => self.slot = Some(value.into()),
68341            "spellcheck" => self.spellcheck = Some(value.into()),
68342            "style" => self.style = Some(value.into()),
68343            "tabindex" => self.tabindex = Some(value.into()),
68344            "title" => self.title = Some(value.into()),
68345            "translate" => self.translate = Some(value.into()),
68346            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
68347            #[cfg(feature = "alloc")]
68348            _ => {
68349                #[allow(clippy::useless_conversion)]
68350                self.extra.insert(name.into(), value.into());
68351            }
68352            #[cfg(not(feature = "alloc"))]
68353            _ => {}
68354        }
68355    }
68356}
68357/// The <strong><code>&lt;tt&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element creates inline text which is presented using the <a href="/en-US/docs/Glossary/User_agent">user agent's</a> 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.
68358///
68359/// The terms <strong>non-proportional</strong>, <strong>monotype</strong>, and <strong>monospace</strong> are used interchangeably and have the same general meaning: they describe a typeface whose characters are all the same number of pixels wide.
68360///
68361/// This element is obsolete, however. You should use the more semantically helpful <a href="/en-US/docs/Web/HTML/Element/code"><code>&lt;code&gt;</code></a>, <a href="/en-US/docs/Web/HTML/Element/kbd"><code>&lt;kbd&gt;</code></a>, <a href="/en-US/docs/Web/HTML/Element/samp"><code>&lt;samp&gt;</code></a>, or <a href="/en-US/docs/Web/HTML/Element/var"><code>&lt;var&gt;</code></a> elements for inline text that needs to be presented in monospace type, or the <a href="/en-US/docs/Web/HTML/Element/pre"><code>&lt;pre&gt;</code></a> tag for content that should be presented as a separate block.
68362///
68363/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tt>
68364#[deprecated]
68365#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
68366pub struct Tt<'life> {
68367    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
68368    ///   
68369    pub accesskey: core::option::Option<AttributeValue<'life>>,
68370    ///
68371    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
68372    ///     <ul>
68373    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
68374    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
68375    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
68376    ///       <li><code>characters</code>, all letters should default to uppercase</li>
68377    ///     </ul>
68378    ///   
68379    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
68380    ///
68381    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
68382    ///   
68383    pub autofocus: core::option::Option<AttributeValue<'life>>,
68384    ///
68385    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
68386    ///   
68387    pub class: core::option::Option<AttributeValue<'life>>,
68388    ///
68389    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
68390    ///     <ul>
68391    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
68392    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
68393    ///     </ul>
68394    ///   
68395    pub contenteditable: core::option::Option<AttributeValue<'life>>,
68396    ///
68397    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
68398    ///   
68399    pub contextmenu: core::option::Option<AttributeValue<'life>>,
68400    ///
68401    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
68402    ///   
68403    #[cfg(feature = "alloc")]
68404    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
68405    ///
68406    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
68407    ///     <ul>
68408    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
68409    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
68410    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
68411    ///     </ul>
68412    ///   
68413    pub dir: core::option::Option<AttributeValue<'life>>,
68414    ///
68415    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
68416    ///     <ul>
68417    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
68418    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
68419    ///     </ul>
68420    ///   
68421    pub draggable: core::option::Option<AttributeValue<'life>>,
68422    ///
68423    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
68424    ///   
68425    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
68426    ///
68427    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
68428    ///   
68429    pub exportparts: core::option::Option<AttributeValue<'life>>,
68430    /// /// Extra attributes of the element.
68431
68432    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
68433    #[cfg(feature = "alloc")]
68434    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
68435    ///
68436    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
68437    ///   
68438    pub hidden: core::option::Option<AttributeValue<'life>>,
68439    ///
68440    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
68441    ///   
68442    pub id: core::option::Option<AttributeValue<'life>>,
68443    ///
68444    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
68445    ///   
68446    pub inert: core::option::Option<AttributeValue<'life>>,
68447    ///
68448    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
68449    ///   
68450    pub inputmode: core::option::Option<AttributeValue<'life>>,
68451    ///
68452    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
68453    ///   
68454    pub is: core::option::Option<AttributeValue<'life>>,
68455    ///
68456    ///     <p>The unique, global identifier of an item.</p>
68457    ///   
68458    pub itemid: core::option::Option<AttributeValue<'life>>,
68459    ///
68460    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
68461    ///   
68462    pub itemprop: core::option::Option<AttributeValue<'life>>,
68463    ///
68464    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
68465    ///   
68466    pub itemref: core::option::Option<AttributeValue<'life>>,
68467    ///
68468    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
68469    ///   
68470    pub itemscope: core::option::Option<AttributeValue<'life>>,
68471    ///
68472    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
68473    ///   
68474    pub itemtype: core::option::Option<AttributeValue<'life>>,
68475    ///
68476    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
68477    ///   
68478    pub lang: core::option::Option<AttributeValue<'life>>,
68479    ///
68480    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
68481    ///   
68482    pub nonce: core::option::Option<AttributeValue<'life>>,
68483    ///
68484    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
68485    ///   
68486    pub part: core::option::Option<AttributeValue<'life>>,
68487    ///
68488    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
68489    ///   
68490    pub popover: core::option::Option<AttributeValue<'life>>,
68491    ///
68492    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
68493    ///   
68494    pub role: core::option::Option<AttributeValue<'life>>,
68495    ///
68496    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
68497    ///   
68498    pub slot: core::option::Option<AttributeValue<'life>>,
68499    ///
68500    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
68501    ///     <ul>
68502    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
68503    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
68504    ///     </ul>
68505    ///   
68506    pub spellcheck: core::option::Option<AttributeValue<'life>>,
68507    ///
68508    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
68509    ///   
68510    pub style: core::option::Option<AttributeValue<'life>>,
68511    ///
68512    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
68513    ///     <ul>
68514    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
68515    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
68516    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
68517    ///     </ul>
68518    ///   
68519    pub tabindex: core::option::Option<AttributeValue<'life>>,
68520    ///
68521    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
68522    ///   
68523    pub title: core::option::Option<AttributeValue<'life>>,
68524    ///
68525    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
68526    ///     <ul>
68527    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
68528    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
68529    ///     </ul>
68530    ///   
68531    pub translate: core::option::Option<AttributeValue<'life>>,
68532    ///
68533    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
68534    ///     <ul>
68535    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
68536    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
68537    ///     </ul>
68538    ///   
68539    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
68540}
68541#[allow(deprecated)]
68542
68543impl<'life> Tt<'life> {
68544    /// Get the tag name of the element.
68545    /// This is the same as the name of the struct, in kebab-case.
68546    pub fn tag() -> &'static str {
68547        "tt"
68548    }
68549    /// Sets an attribute of the element.
68550    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
68551    /// If the `alloc` feature is disabled, this function will silently fail.
68552    ///
68553    /// # Note
68554    /// This only works when the attribute is lowercase.
68555    pub fn set_attr(
68556        &mut self,
68557        name: &'life str,
68558        value: impl core::convert::Into<AttributeValue<'life>>,
68559    ) {
68560        match name {
68561            "accesskey" => self.accesskey = Some(value.into()),
68562            "autocapitalize" => self.autocapitalize = Some(value.into()),
68563            "autofocus" => self.autofocus = Some(value.into()),
68564            "class" => self.class = Some(value.into()),
68565            "contenteditable" => self.contenteditable = Some(value.into()),
68566            "contextmenu" => self.contextmenu = Some(value.into()),
68567            "dir" => self.dir = Some(value.into()),
68568            "draggable" => self.draggable = Some(value.into()),
68569            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
68570            "exportparts" => self.exportparts = Some(value.into()),
68571            "hidden" => self.hidden = Some(value.into()),
68572            "id" => self.id = Some(value.into()),
68573            "inert" => self.inert = Some(value.into()),
68574            "inputmode" => self.inputmode = Some(value.into()),
68575            "is" => self.is = Some(value.into()),
68576            "itemid" => self.itemid = Some(value.into()),
68577            "itemprop" => self.itemprop = Some(value.into()),
68578            "itemref" => self.itemref = Some(value.into()),
68579            "itemscope" => self.itemscope = Some(value.into()),
68580            "itemtype" => self.itemtype = Some(value.into()),
68581            "lang" => self.lang = Some(value.into()),
68582            "nonce" => self.nonce = Some(value.into()),
68583            "part" => self.part = Some(value.into()),
68584            "popover" => self.popover = Some(value.into()),
68585            "role" => self.role = Some(value.into()),
68586            "slot" => self.slot = Some(value.into()),
68587            "spellcheck" => self.spellcheck = Some(value.into()),
68588            "style" => self.style = Some(value.into()),
68589            "tabindex" => self.tabindex = Some(value.into()),
68590            "title" => self.title = Some(value.into()),
68591            "translate" => self.translate = Some(value.into()),
68592            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
68593            #[cfg(feature = "alloc")]
68594            _ => {
68595                #[allow(clippy::useless_conversion)]
68596                self.extra.insert(name.into(), value.into());
68597            }
68598            #[cfg(not(feature = "alloc"))]
68599            _ => {}
68600        }
68601    }
68602}
68603/// The <strong><code>&lt;tt&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> element creates inline text which is presented using the <a href="/en-US/docs/Glossary/User_agent">user agent's</a> 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.
68604///
68605/// The terms <strong>non-proportional</strong>, <strong>monotype</strong>, and <strong>monospace</strong> are used interchangeably and have the same general meaning: they describe a typeface whose characters are all the same number of pixels wide.
68606///
68607/// This element is obsolete, however. You should use the more semantically helpful <a href="/en-US/docs/Web/HTML/Element/code"><code>&lt;code&gt;</code></a>, <a href="/en-US/docs/Web/HTML/Element/kbd"><code>&lt;kbd&gt;</code></a>, <a href="/en-US/docs/Web/HTML/Element/samp"><code>&lt;samp&gt;</code></a>, or <a href="/en-US/docs/Web/HTML/Element/var"><code>&lt;var&gt;</code></a> elements for inline text that needs to be presented in monospace type, or the <a href="/en-US/docs/Web/HTML/Element/pre"><code>&lt;pre&gt;</code></a> tag for content that should be presented as a separate block.
68608///
68609/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tt>
68610#[deprecated]
68611#[cfg(feature = "alloc")]
68612#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
68613pub struct TtOwned {
68614    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
68615    ///   
68616    pub accesskey: core::option::Option<AttributeValueOwned>,
68617    ///
68618    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
68619    ///     <ul>
68620    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
68621    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
68622    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
68623    ///       <li><code>characters</code>, all letters should default to uppercase</li>
68624    ///     </ul>
68625    ///   
68626    pub autocapitalize: core::option::Option<AttributeValueOwned>,
68627    ///
68628    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
68629    ///   
68630    pub autofocus: core::option::Option<AttributeValueOwned>,
68631    ///
68632    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
68633    ///   
68634    pub class: core::option::Option<AttributeValueOwned>,
68635    ///
68636    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
68637    ///     <ul>
68638    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
68639    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
68640    ///     </ul>
68641    ///   
68642    pub contenteditable: core::option::Option<AttributeValueOwned>,
68643    ///
68644    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
68645    ///   
68646    pub contextmenu: core::option::Option<AttributeValueOwned>,
68647    ///
68648    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
68649    ///   
68650    #[cfg(feature = "alloc")]
68651    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
68652    ///
68653    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
68654    ///     <ul>
68655    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
68656    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
68657    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
68658    ///     </ul>
68659    ///   
68660    pub dir: core::option::Option<AttributeValueOwned>,
68661    ///
68662    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
68663    ///     <ul>
68664    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
68665    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
68666    ///     </ul>
68667    ///   
68668    pub draggable: core::option::Option<AttributeValueOwned>,
68669    ///
68670    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
68671    ///   
68672    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
68673    ///
68674    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
68675    ///   
68676    pub exportparts: core::option::Option<AttributeValueOwned>,
68677    /// /// Extra attributes of the element.
68678
68679    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
68680    #[cfg(feature = "alloc")]
68681    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
68682    ///
68683    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
68684    ///   
68685    pub hidden: core::option::Option<AttributeValueOwned>,
68686    ///
68687    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
68688    ///   
68689    pub id: core::option::Option<AttributeValueOwned>,
68690    ///
68691    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
68692    ///   
68693    pub inert: core::option::Option<AttributeValueOwned>,
68694    ///
68695    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
68696    ///   
68697    pub inputmode: core::option::Option<AttributeValueOwned>,
68698    ///
68699    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
68700    ///   
68701    pub is: core::option::Option<AttributeValueOwned>,
68702    ///
68703    ///     <p>The unique, global identifier of an item.</p>
68704    ///   
68705    pub itemid: core::option::Option<AttributeValueOwned>,
68706    ///
68707    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
68708    ///   
68709    pub itemprop: core::option::Option<AttributeValueOwned>,
68710    ///
68711    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
68712    ///   
68713    pub itemref: core::option::Option<AttributeValueOwned>,
68714    ///
68715    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
68716    ///   
68717    pub itemscope: core::option::Option<AttributeValueOwned>,
68718    ///
68719    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
68720    ///   
68721    pub itemtype: core::option::Option<AttributeValueOwned>,
68722    ///
68723    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
68724    ///   
68725    pub lang: core::option::Option<AttributeValueOwned>,
68726    ///
68727    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
68728    ///   
68729    pub nonce: core::option::Option<AttributeValueOwned>,
68730    ///
68731    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
68732    ///   
68733    pub part: core::option::Option<AttributeValueOwned>,
68734    ///
68735    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
68736    ///   
68737    pub popover: core::option::Option<AttributeValueOwned>,
68738    ///
68739    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
68740    ///   
68741    pub role: core::option::Option<AttributeValueOwned>,
68742    ///
68743    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
68744    ///   
68745    pub slot: core::option::Option<AttributeValueOwned>,
68746    ///
68747    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
68748    ///     <ul>
68749    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
68750    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
68751    ///     </ul>
68752    ///   
68753    pub spellcheck: core::option::Option<AttributeValueOwned>,
68754    ///
68755    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
68756    ///   
68757    pub style: core::option::Option<AttributeValueOwned>,
68758    ///
68759    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
68760    ///     <ul>
68761    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
68762    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
68763    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
68764    ///     </ul>
68765    ///   
68766    pub tabindex: core::option::Option<AttributeValueOwned>,
68767    ///
68768    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
68769    ///   
68770    pub title: core::option::Option<AttributeValueOwned>,
68771    ///
68772    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
68773    ///     <ul>
68774    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
68775    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
68776    ///     </ul>
68777    ///   
68778    pub translate: core::option::Option<AttributeValueOwned>,
68779    ///
68780    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
68781    ///     <ul>
68782    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
68783    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
68784    ///     </ul>
68785    ///   
68786    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
68787}
68788#[allow(deprecated)]
68789#[cfg(feature = "alloc")]
68790impl TtOwned {
68791    /// Get the tag name of the element.
68792    /// This is the same as the name of the struct, in kebab-case.
68793    pub fn tag() -> &'static str {
68794        "tt"
68795    }
68796    /// Sets an attribute of the element.
68797    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
68798    /// If the `alloc` feature is disabled, this function will silently fail.
68799    ///
68800    /// # Note
68801    /// This only works when the attribute is lowercase.
68802    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
68803        match name {
68804            "accesskey" => self.accesskey = Some(value.into()),
68805            "autocapitalize" => self.autocapitalize = Some(value.into()),
68806            "autofocus" => self.autofocus = Some(value.into()),
68807            "class" => self.class = Some(value.into()),
68808            "contenteditable" => self.contenteditable = Some(value.into()),
68809            "contextmenu" => self.contextmenu = Some(value.into()),
68810            "dir" => self.dir = Some(value.into()),
68811            "draggable" => self.draggable = Some(value.into()),
68812            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
68813            "exportparts" => self.exportparts = Some(value.into()),
68814            "hidden" => self.hidden = Some(value.into()),
68815            "id" => self.id = Some(value.into()),
68816            "inert" => self.inert = Some(value.into()),
68817            "inputmode" => self.inputmode = Some(value.into()),
68818            "is" => self.is = Some(value.into()),
68819            "itemid" => self.itemid = Some(value.into()),
68820            "itemprop" => self.itemprop = Some(value.into()),
68821            "itemref" => self.itemref = Some(value.into()),
68822            "itemscope" => self.itemscope = Some(value.into()),
68823            "itemtype" => self.itemtype = Some(value.into()),
68824            "lang" => self.lang = Some(value.into()),
68825            "nonce" => self.nonce = Some(value.into()),
68826            "part" => self.part = Some(value.into()),
68827            "popover" => self.popover = Some(value.into()),
68828            "role" => self.role = Some(value.into()),
68829            "slot" => self.slot = Some(value.into()),
68830            "spellcheck" => self.spellcheck = Some(value.into()),
68831            "style" => self.style = Some(value.into()),
68832            "tabindex" => self.tabindex = Some(value.into()),
68833            "title" => self.title = Some(value.into()),
68834            "translate" => self.translate = Some(value.into()),
68835            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
68836            #[cfg(feature = "alloc")]
68837            _ => {
68838                #[allow(clippy::useless_conversion)]
68839                self.extra.insert(name.into(), value.into());
68840            }
68841            #[cfg(not(feature = "alloc"))]
68842            _ => {}
68843        }
68844    }
68845}
68846/// <p>The <strong><code>&lt;xmp&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> 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.</p>
68847/// <div id="sect2" class="notecard note">
68848///   <p><strong>Note:</strong> Do not use this element.</p>
68849///   <ul>
68850///     <li>It has been deprecated since HTML3.2 and was not implemented in a consistent way. It was completely removed from current HTML.</li>
68851///     <li>Use the <a href="/en-US/docs/Web/HTML/Element/pre"><code>&lt;pre&gt;</code></a> element or, if semantically adequate, the <a href="/en-US/docs/Web/HTML/Element/code"><code>&lt;code&gt;</code></a> element instead. Note that you will need to escape the '<code>&lt;</code>' character as '<code>&amp;lt;</code>' and the '<code>&amp;</code>' character as '<code>&amp;amp;</code>' to make sure they are not interpreted as markup.</li>
68852///     <li>A monospaced font can also be obtained on any element, by applying an adequate <a href="/en-US/docs/Web/CSS">CSS</a> style using <code>monospace</code> as the generic-font value for the <a href="/en-US/docs/Web/CSS/font-family"><code>font-family</code></a> property.</li>
68853///   </ul>
68854/// </div>
68855///
68856/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/xmp>
68857#[deprecated]
68858#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
68859pub struct Xmp<'life> {
68860    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
68861    ///   
68862    pub accesskey: core::option::Option<AttributeValue<'life>>,
68863    ///
68864    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
68865    ///     <ul>
68866    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
68867    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
68868    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
68869    ///       <li><code>characters</code>, all letters should default to uppercase</li>
68870    ///     </ul>
68871    ///   
68872    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
68873    ///
68874    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
68875    ///   
68876    pub autofocus: core::option::Option<AttributeValue<'life>>,
68877    ///
68878    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
68879    ///   
68880    pub class: core::option::Option<AttributeValue<'life>>,
68881    ///
68882    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
68883    ///     <ul>
68884    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
68885    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
68886    ///     </ul>
68887    ///   
68888    pub contenteditable: core::option::Option<AttributeValue<'life>>,
68889    ///
68890    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
68891    ///   
68892    pub contextmenu: core::option::Option<AttributeValue<'life>>,
68893    ///
68894    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
68895    ///   
68896    #[cfg(feature = "alloc")]
68897    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
68898    ///
68899    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
68900    ///     <ul>
68901    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
68902    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
68903    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
68904    ///     </ul>
68905    ///   
68906    pub dir: core::option::Option<AttributeValue<'life>>,
68907    ///
68908    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
68909    ///     <ul>
68910    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
68911    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
68912    ///     </ul>
68913    ///   
68914    pub draggable: core::option::Option<AttributeValue<'life>>,
68915    ///
68916    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
68917    ///   
68918    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
68919    ///
68920    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
68921    ///   
68922    pub exportparts: core::option::Option<AttributeValue<'life>>,
68923    /// /// Extra attributes of the element.
68924
68925    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
68926    #[cfg(feature = "alloc")]
68927    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
68928    ///
68929    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
68930    ///   
68931    pub hidden: core::option::Option<AttributeValue<'life>>,
68932    ///
68933    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
68934    ///   
68935    pub id: core::option::Option<AttributeValue<'life>>,
68936    ///
68937    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
68938    ///   
68939    pub inert: core::option::Option<AttributeValue<'life>>,
68940    ///
68941    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
68942    ///   
68943    pub inputmode: core::option::Option<AttributeValue<'life>>,
68944    ///
68945    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
68946    ///   
68947    pub is: core::option::Option<AttributeValue<'life>>,
68948    ///
68949    ///     <p>The unique, global identifier of an item.</p>
68950    ///   
68951    pub itemid: core::option::Option<AttributeValue<'life>>,
68952    ///
68953    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
68954    ///   
68955    pub itemprop: core::option::Option<AttributeValue<'life>>,
68956    ///
68957    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
68958    ///   
68959    pub itemref: core::option::Option<AttributeValue<'life>>,
68960    ///
68961    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
68962    ///   
68963    pub itemscope: core::option::Option<AttributeValue<'life>>,
68964    ///
68965    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
68966    ///   
68967    pub itemtype: core::option::Option<AttributeValue<'life>>,
68968    ///
68969    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
68970    ///   
68971    pub lang: core::option::Option<AttributeValue<'life>>,
68972    ///
68973    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
68974    ///   
68975    pub nonce: core::option::Option<AttributeValue<'life>>,
68976    ///
68977    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
68978    ///   
68979    pub part: core::option::Option<AttributeValue<'life>>,
68980    ///
68981    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
68982    ///   
68983    pub popover: core::option::Option<AttributeValue<'life>>,
68984    ///
68985    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
68986    ///   
68987    pub role: core::option::Option<AttributeValue<'life>>,
68988    ///
68989    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
68990    ///   
68991    pub slot: core::option::Option<AttributeValue<'life>>,
68992    ///
68993    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
68994    ///     <ul>
68995    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
68996    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
68997    ///     </ul>
68998    ///   
68999    pub spellcheck: core::option::Option<AttributeValue<'life>>,
69000    ///
69001    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
69002    ///   
69003    pub style: core::option::Option<AttributeValue<'life>>,
69004    ///
69005    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
69006    ///     <ul>
69007    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
69008    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
69009    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
69010    ///     </ul>
69011    ///   
69012    pub tabindex: core::option::Option<AttributeValue<'life>>,
69013    ///
69014    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
69015    ///   
69016    pub title: core::option::Option<AttributeValue<'life>>,
69017    ///
69018    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
69019    ///     <ul>
69020    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
69021    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
69022    ///     </ul>
69023    ///   
69024    pub translate: core::option::Option<AttributeValue<'life>>,
69025    ///
69026    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
69027    ///     <ul>
69028    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
69029    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
69030    ///     </ul>
69031    ///   
69032    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
69033}
69034#[allow(deprecated)]
69035
69036impl<'life> Xmp<'life> {
69037    /// Get the tag name of the element.
69038    /// This is the same as the name of the struct, in kebab-case.
69039    pub fn tag() -> &'static str {
69040        "xmp"
69041    }
69042    /// Sets an attribute of the element.
69043    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
69044    /// If the `alloc` feature is disabled, this function will silently fail.
69045    ///
69046    /// # Note
69047    /// This only works when the attribute is lowercase.
69048    pub fn set_attr(
69049        &mut self,
69050        name: &'life str,
69051        value: impl core::convert::Into<AttributeValue<'life>>,
69052    ) {
69053        match name {
69054            "accesskey" => self.accesskey = Some(value.into()),
69055            "autocapitalize" => self.autocapitalize = Some(value.into()),
69056            "autofocus" => self.autofocus = Some(value.into()),
69057            "class" => self.class = Some(value.into()),
69058            "contenteditable" => self.contenteditable = Some(value.into()),
69059            "contextmenu" => self.contextmenu = Some(value.into()),
69060            "dir" => self.dir = Some(value.into()),
69061            "draggable" => self.draggable = Some(value.into()),
69062            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
69063            "exportparts" => self.exportparts = Some(value.into()),
69064            "hidden" => self.hidden = Some(value.into()),
69065            "id" => self.id = Some(value.into()),
69066            "inert" => self.inert = Some(value.into()),
69067            "inputmode" => self.inputmode = Some(value.into()),
69068            "is" => self.is = Some(value.into()),
69069            "itemid" => self.itemid = Some(value.into()),
69070            "itemprop" => self.itemprop = Some(value.into()),
69071            "itemref" => self.itemref = Some(value.into()),
69072            "itemscope" => self.itemscope = Some(value.into()),
69073            "itemtype" => self.itemtype = Some(value.into()),
69074            "lang" => self.lang = Some(value.into()),
69075            "nonce" => self.nonce = Some(value.into()),
69076            "part" => self.part = Some(value.into()),
69077            "popover" => self.popover = Some(value.into()),
69078            "role" => self.role = Some(value.into()),
69079            "slot" => self.slot = Some(value.into()),
69080            "spellcheck" => self.spellcheck = Some(value.into()),
69081            "style" => self.style = Some(value.into()),
69082            "tabindex" => self.tabindex = Some(value.into()),
69083            "title" => self.title = Some(value.into()),
69084            "translate" => self.translate = Some(value.into()),
69085            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
69086            #[cfg(feature = "alloc")]
69087            _ => {
69088                #[allow(clippy::useless_conversion)]
69089                self.extra.insert(name.into(), value.into());
69090            }
69091            #[cfg(not(feature = "alloc"))]
69092            _ => {}
69093        }
69094    }
69095}
69096/// <p>The <strong><code>&lt;xmp&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> 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.</p>
69097/// <div id="sect2" class="notecard note">
69098///   <p><strong>Note:</strong> Do not use this element.</p>
69099///   <ul>
69100///     <li>It has been deprecated since HTML3.2 and was not implemented in a consistent way. It was completely removed from current HTML.</li>
69101///     <li>Use the <a href="/en-US/docs/Web/HTML/Element/pre"><code>&lt;pre&gt;</code></a> element or, if semantically adequate, the <a href="/en-US/docs/Web/HTML/Element/code"><code>&lt;code&gt;</code></a> element instead. Note that you will need to escape the '<code>&lt;</code>' character as '<code>&amp;lt;</code>' and the '<code>&amp;</code>' character as '<code>&amp;amp;</code>' to make sure they are not interpreted as markup.</li>
69102///     <li>A monospaced font can also be obtained on any element, by applying an adequate <a href="/en-US/docs/Web/CSS">CSS</a> style using <code>monospace</code> as the generic-font value for the <a href="/en-US/docs/Web/CSS/font-family"><code>font-family</code></a> property.</li>
69103///   </ul>
69104/// </div>
69105///
69106/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/xmp>
69107#[deprecated]
69108#[cfg(feature = "alloc")]
69109#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
69110pub struct XmpOwned {
69111    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
69112    ///   
69113    pub accesskey: core::option::Option<AttributeValueOwned>,
69114    ///
69115    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
69116    ///     <ul>
69117    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
69118    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
69119    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
69120    ///       <li><code>characters</code>, all letters should default to uppercase</li>
69121    ///     </ul>
69122    ///   
69123    pub autocapitalize: core::option::Option<AttributeValueOwned>,
69124    ///
69125    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
69126    ///   
69127    pub autofocus: core::option::Option<AttributeValueOwned>,
69128    ///
69129    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
69130    ///   
69131    pub class: core::option::Option<AttributeValueOwned>,
69132    ///
69133    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
69134    ///     <ul>
69135    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
69136    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
69137    ///     </ul>
69138    ///   
69139    pub contenteditable: core::option::Option<AttributeValueOwned>,
69140    ///
69141    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
69142    ///   
69143    pub contextmenu: core::option::Option<AttributeValueOwned>,
69144    ///
69145    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
69146    ///   
69147    #[cfg(feature = "alloc")]
69148    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
69149    ///
69150    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
69151    ///     <ul>
69152    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
69153    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
69154    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
69155    ///     </ul>
69156    ///   
69157    pub dir: core::option::Option<AttributeValueOwned>,
69158    ///
69159    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
69160    ///     <ul>
69161    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
69162    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
69163    ///     </ul>
69164    ///   
69165    pub draggable: core::option::Option<AttributeValueOwned>,
69166    ///
69167    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
69168    ///   
69169    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
69170    ///
69171    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
69172    ///   
69173    pub exportparts: core::option::Option<AttributeValueOwned>,
69174    /// /// Extra attributes of the element.
69175
69176    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
69177    #[cfg(feature = "alloc")]
69178    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
69179    ///
69180    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
69181    ///   
69182    pub hidden: core::option::Option<AttributeValueOwned>,
69183    ///
69184    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
69185    ///   
69186    pub id: core::option::Option<AttributeValueOwned>,
69187    ///
69188    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
69189    ///   
69190    pub inert: core::option::Option<AttributeValueOwned>,
69191    ///
69192    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
69193    ///   
69194    pub inputmode: core::option::Option<AttributeValueOwned>,
69195    ///
69196    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
69197    ///   
69198    pub is: core::option::Option<AttributeValueOwned>,
69199    ///
69200    ///     <p>The unique, global identifier of an item.</p>
69201    ///   
69202    pub itemid: core::option::Option<AttributeValueOwned>,
69203    ///
69204    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
69205    ///   
69206    pub itemprop: core::option::Option<AttributeValueOwned>,
69207    ///
69208    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
69209    ///   
69210    pub itemref: core::option::Option<AttributeValueOwned>,
69211    ///
69212    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
69213    ///   
69214    pub itemscope: core::option::Option<AttributeValueOwned>,
69215    ///
69216    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
69217    ///   
69218    pub itemtype: core::option::Option<AttributeValueOwned>,
69219    ///
69220    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
69221    ///   
69222    pub lang: core::option::Option<AttributeValueOwned>,
69223    ///
69224    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
69225    ///   
69226    pub nonce: core::option::Option<AttributeValueOwned>,
69227    ///
69228    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
69229    ///   
69230    pub part: core::option::Option<AttributeValueOwned>,
69231    ///
69232    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
69233    ///   
69234    pub popover: core::option::Option<AttributeValueOwned>,
69235    ///
69236    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
69237    ///   
69238    pub role: core::option::Option<AttributeValueOwned>,
69239    ///
69240    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
69241    ///   
69242    pub slot: core::option::Option<AttributeValueOwned>,
69243    ///
69244    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
69245    ///     <ul>
69246    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
69247    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
69248    ///     </ul>
69249    ///   
69250    pub spellcheck: core::option::Option<AttributeValueOwned>,
69251    ///
69252    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
69253    ///   
69254    pub style: core::option::Option<AttributeValueOwned>,
69255    ///
69256    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
69257    ///     <ul>
69258    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
69259    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
69260    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
69261    ///     </ul>
69262    ///   
69263    pub tabindex: core::option::Option<AttributeValueOwned>,
69264    ///
69265    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
69266    ///   
69267    pub title: core::option::Option<AttributeValueOwned>,
69268    ///
69269    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
69270    ///     <ul>
69271    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
69272    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
69273    ///     </ul>
69274    ///   
69275    pub translate: core::option::Option<AttributeValueOwned>,
69276    ///
69277    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
69278    ///     <ul>
69279    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
69280    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
69281    ///     </ul>
69282    ///   
69283    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
69284}
69285#[allow(deprecated)]
69286#[cfg(feature = "alloc")]
69287impl XmpOwned {
69288    /// Get the tag name of the element.
69289    /// This is the same as the name of the struct, in kebab-case.
69290    pub fn tag() -> &'static str {
69291        "xmp"
69292    }
69293    /// Sets an attribute of the element.
69294    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
69295    /// If the `alloc` feature is disabled, this function will silently fail.
69296    ///
69297    /// # Note
69298    /// This only works when the attribute is lowercase.
69299    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
69300        match name {
69301            "accesskey" => self.accesskey = Some(value.into()),
69302            "autocapitalize" => self.autocapitalize = Some(value.into()),
69303            "autofocus" => self.autofocus = Some(value.into()),
69304            "class" => self.class = Some(value.into()),
69305            "contenteditable" => self.contenteditable = Some(value.into()),
69306            "contextmenu" => self.contextmenu = Some(value.into()),
69307            "dir" => self.dir = Some(value.into()),
69308            "draggable" => self.draggable = Some(value.into()),
69309            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
69310            "exportparts" => self.exportparts = Some(value.into()),
69311            "hidden" => self.hidden = Some(value.into()),
69312            "id" => self.id = Some(value.into()),
69313            "inert" => self.inert = Some(value.into()),
69314            "inputmode" => self.inputmode = Some(value.into()),
69315            "is" => self.is = Some(value.into()),
69316            "itemid" => self.itemid = Some(value.into()),
69317            "itemprop" => self.itemprop = Some(value.into()),
69318            "itemref" => self.itemref = Some(value.into()),
69319            "itemscope" => self.itemscope = Some(value.into()),
69320            "itemtype" => self.itemtype = Some(value.into()),
69321            "lang" => self.lang = Some(value.into()),
69322            "nonce" => self.nonce = Some(value.into()),
69323            "part" => self.part = Some(value.into()),
69324            "popover" => self.popover = Some(value.into()),
69325            "role" => self.role = Some(value.into()),
69326            "slot" => self.slot = Some(value.into()),
69327            "spellcheck" => self.spellcheck = Some(value.into()),
69328            "style" => self.style = Some(value.into()),
69329            "tabindex" => self.tabindex = Some(value.into()),
69330            "title" => self.title = Some(value.into()),
69331            "translate" => self.translate = Some(value.into()),
69332            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
69333            #[cfg(feature = "alloc")]
69334            _ => {
69335                #[allow(clippy::useless_conversion)]
69336                self.extra.insert(name.into(), value.into());
69337            }
69338            #[cfg(not(feature = "alloc"))]
69339            _ => {}
69340        }
69341    }
69342}
69343/// The <strong><code>&lt;h1&gt;</code></strong> to <strong><code>&lt;h6&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> elements represent six levels of section headings. <code>&lt;h1&gt;</code> is the highest section level and <code>&lt;h6&gt;</code> is the lowest.
69344///
69345/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Heading_Elements>
69346
69347#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
69348pub struct H1<'life> {
69349    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
69350    ///   
69351    pub accesskey: core::option::Option<AttributeValue<'life>>,
69352    ///
69353    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
69354    ///     <ul>
69355    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
69356    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
69357    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
69358    ///       <li><code>characters</code>, all letters should default to uppercase</li>
69359    ///     </ul>
69360    ///   
69361    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
69362    ///
69363    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
69364    ///   
69365    pub autofocus: core::option::Option<AttributeValue<'life>>,
69366    ///
69367    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
69368    ///   
69369    pub class: core::option::Option<AttributeValue<'life>>,
69370    ///
69371    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
69372    ///     <ul>
69373    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
69374    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
69375    ///     </ul>
69376    ///   
69377    pub contenteditable: core::option::Option<AttributeValue<'life>>,
69378    ///
69379    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
69380    ///   
69381    pub contextmenu: core::option::Option<AttributeValue<'life>>,
69382    ///
69383    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
69384    ///   
69385    #[cfg(feature = "alloc")]
69386    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
69387    ///
69388    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
69389    ///     <ul>
69390    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
69391    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
69392    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
69393    ///     </ul>
69394    ///   
69395    pub dir: core::option::Option<AttributeValue<'life>>,
69396    ///
69397    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
69398    ///     <ul>
69399    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
69400    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
69401    ///     </ul>
69402    ///   
69403    pub draggable: core::option::Option<AttributeValue<'life>>,
69404    ///
69405    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
69406    ///   
69407    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
69408    ///
69409    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
69410    ///   
69411    pub exportparts: core::option::Option<AttributeValue<'life>>,
69412    /// /// Extra attributes of the element.
69413
69414    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
69415    #[cfg(feature = "alloc")]
69416    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
69417    ///
69418    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
69419    ///   
69420    pub hidden: core::option::Option<AttributeValue<'life>>,
69421    ///
69422    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
69423    ///   
69424    pub id: core::option::Option<AttributeValue<'life>>,
69425    ///
69426    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
69427    ///   
69428    pub inert: core::option::Option<AttributeValue<'life>>,
69429    ///
69430    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
69431    ///   
69432    pub inputmode: core::option::Option<AttributeValue<'life>>,
69433    ///
69434    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
69435    ///   
69436    pub is: core::option::Option<AttributeValue<'life>>,
69437    ///
69438    ///     <p>The unique, global identifier of an item.</p>
69439    ///   
69440    pub itemid: core::option::Option<AttributeValue<'life>>,
69441    ///
69442    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
69443    ///   
69444    pub itemprop: core::option::Option<AttributeValue<'life>>,
69445    ///
69446    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
69447    ///   
69448    pub itemref: core::option::Option<AttributeValue<'life>>,
69449    ///
69450    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
69451    ///   
69452    pub itemscope: core::option::Option<AttributeValue<'life>>,
69453    ///
69454    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
69455    ///   
69456    pub itemtype: core::option::Option<AttributeValue<'life>>,
69457    ///
69458    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
69459    ///   
69460    pub lang: core::option::Option<AttributeValue<'life>>,
69461    ///
69462    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
69463    ///   
69464    pub nonce: core::option::Option<AttributeValue<'life>>,
69465    ///
69466    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
69467    ///   
69468    pub part: core::option::Option<AttributeValue<'life>>,
69469    ///
69470    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
69471    ///   
69472    pub popover: core::option::Option<AttributeValue<'life>>,
69473    ///
69474    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
69475    ///   
69476    pub role: core::option::Option<AttributeValue<'life>>,
69477    ///
69478    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
69479    ///   
69480    pub slot: core::option::Option<AttributeValue<'life>>,
69481    ///
69482    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
69483    ///     <ul>
69484    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
69485    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
69486    ///     </ul>
69487    ///   
69488    pub spellcheck: core::option::Option<AttributeValue<'life>>,
69489    ///
69490    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
69491    ///   
69492    pub style: core::option::Option<AttributeValue<'life>>,
69493    ///
69494    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
69495    ///     <ul>
69496    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
69497    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
69498    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
69499    ///     </ul>
69500    ///   
69501    pub tabindex: core::option::Option<AttributeValue<'life>>,
69502    ///
69503    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
69504    ///   
69505    pub title: core::option::Option<AttributeValue<'life>>,
69506    ///
69507    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
69508    ///     <ul>
69509    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
69510    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
69511    ///     </ul>
69512    ///   
69513    pub translate: core::option::Option<AttributeValue<'life>>,
69514    ///
69515    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
69516    ///     <ul>
69517    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
69518    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
69519    ///     </ul>
69520    ///   
69521    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
69522}
69523#[allow(deprecated)]
69524
69525impl<'life> H1<'life> {
69526    /// Get the tag name of the element.
69527    /// This is the same as the name of the struct, in kebab-case.
69528    pub fn tag() -> &'static str {
69529        "h1"
69530    }
69531    /// Sets an attribute of the element.
69532    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
69533    /// If the `alloc` feature is disabled, this function will silently fail.
69534    ///
69535    /// # Note
69536    /// This only works when the attribute is lowercase.
69537    pub fn set_attr(
69538        &mut self,
69539        name: &'life str,
69540        value: impl core::convert::Into<AttributeValue<'life>>,
69541    ) {
69542        match name {
69543            "accesskey" => self.accesskey = Some(value.into()),
69544            "autocapitalize" => self.autocapitalize = Some(value.into()),
69545            "autofocus" => self.autofocus = Some(value.into()),
69546            "class" => self.class = Some(value.into()),
69547            "contenteditable" => self.contenteditable = Some(value.into()),
69548            "contextmenu" => self.contextmenu = Some(value.into()),
69549            "dir" => self.dir = Some(value.into()),
69550            "draggable" => self.draggable = Some(value.into()),
69551            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
69552            "exportparts" => self.exportparts = Some(value.into()),
69553            "hidden" => self.hidden = Some(value.into()),
69554            "id" => self.id = Some(value.into()),
69555            "inert" => self.inert = Some(value.into()),
69556            "inputmode" => self.inputmode = Some(value.into()),
69557            "is" => self.is = Some(value.into()),
69558            "itemid" => self.itemid = Some(value.into()),
69559            "itemprop" => self.itemprop = Some(value.into()),
69560            "itemref" => self.itemref = Some(value.into()),
69561            "itemscope" => self.itemscope = Some(value.into()),
69562            "itemtype" => self.itemtype = Some(value.into()),
69563            "lang" => self.lang = Some(value.into()),
69564            "nonce" => self.nonce = Some(value.into()),
69565            "part" => self.part = Some(value.into()),
69566            "popover" => self.popover = Some(value.into()),
69567            "role" => self.role = Some(value.into()),
69568            "slot" => self.slot = Some(value.into()),
69569            "spellcheck" => self.spellcheck = Some(value.into()),
69570            "style" => self.style = Some(value.into()),
69571            "tabindex" => self.tabindex = Some(value.into()),
69572            "title" => self.title = Some(value.into()),
69573            "translate" => self.translate = Some(value.into()),
69574            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
69575            #[cfg(feature = "alloc")]
69576            _ => {
69577                #[allow(clippy::useless_conversion)]
69578                self.extra.insert(name.into(), value.into());
69579            }
69580            #[cfg(not(feature = "alloc"))]
69581            _ => {}
69582        }
69583    }
69584}
69585/// The <strong><code>&lt;h1&gt;</code></strong> to <strong><code>&lt;h6&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> elements represent six levels of section headings. <code>&lt;h1&gt;</code> is the highest section level and <code>&lt;h6&gt;</code> is the lowest.
69586///
69587/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Heading_Elements>
69588
69589#[cfg(feature = "alloc")]
69590#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
69591pub struct H1Owned {
69592    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
69593    ///   
69594    pub accesskey: core::option::Option<AttributeValueOwned>,
69595    ///
69596    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
69597    ///     <ul>
69598    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
69599    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
69600    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
69601    ///       <li><code>characters</code>, all letters should default to uppercase</li>
69602    ///     </ul>
69603    ///   
69604    pub autocapitalize: core::option::Option<AttributeValueOwned>,
69605    ///
69606    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
69607    ///   
69608    pub autofocus: core::option::Option<AttributeValueOwned>,
69609    ///
69610    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
69611    ///   
69612    pub class: core::option::Option<AttributeValueOwned>,
69613    ///
69614    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
69615    ///     <ul>
69616    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
69617    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
69618    ///     </ul>
69619    ///   
69620    pub contenteditable: core::option::Option<AttributeValueOwned>,
69621    ///
69622    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
69623    ///   
69624    pub contextmenu: core::option::Option<AttributeValueOwned>,
69625    ///
69626    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
69627    ///   
69628    #[cfg(feature = "alloc")]
69629    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
69630    ///
69631    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
69632    ///     <ul>
69633    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
69634    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
69635    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
69636    ///     </ul>
69637    ///   
69638    pub dir: core::option::Option<AttributeValueOwned>,
69639    ///
69640    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
69641    ///     <ul>
69642    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
69643    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
69644    ///     </ul>
69645    ///   
69646    pub draggable: core::option::Option<AttributeValueOwned>,
69647    ///
69648    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
69649    ///   
69650    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
69651    ///
69652    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
69653    ///   
69654    pub exportparts: core::option::Option<AttributeValueOwned>,
69655    /// /// Extra attributes of the element.
69656
69657    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
69658    #[cfg(feature = "alloc")]
69659    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
69660    ///
69661    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
69662    ///   
69663    pub hidden: core::option::Option<AttributeValueOwned>,
69664    ///
69665    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
69666    ///   
69667    pub id: core::option::Option<AttributeValueOwned>,
69668    ///
69669    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
69670    ///   
69671    pub inert: core::option::Option<AttributeValueOwned>,
69672    ///
69673    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
69674    ///   
69675    pub inputmode: core::option::Option<AttributeValueOwned>,
69676    ///
69677    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
69678    ///   
69679    pub is: core::option::Option<AttributeValueOwned>,
69680    ///
69681    ///     <p>The unique, global identifier of an item.</p>
69682    ///   
69683    pub itemid: core::option::Option<AttributeValueOwned>,
69684    ///
69685    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
69686    ///   
69687    pub itemprop: core::option::Option<AttributeValueOwned>,
69688    ///
69689    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
69690    ///   
69691    pub itemref: core::option::Option<AttributeValueOwned>,
69692    ///
69693    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
69694    ///   
69695    pub itemscope: core::option::Option<AttributeValueOwned>,
69696    ///
69697    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
69698    ///   
69699    pub itemtype: core::option::Option<AttributeValueOwned>,
69700    ///
69701    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
69702    ///   
69703    pub lang: core::option::Option<AttributeValueOwned>,
69704    ///
69705    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
69706    ///   
69707    pub nonce: core::option::Option<AttributeValueOwned>,
69708    ///
69709    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
69710    ///   
69711    pub part: core::option::Option<AttributeValueOwned>,
69712    ///
69713    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
69714    ///   
69715    pub popover: core::option::Option<AttributeValueOwned>,
69716    ///
69717    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
69718    ///   
69719    pub role: core::option::Option<AttributeValueOwned>,
69720    ///
69721    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
69722    ///   
69723    pub slot: core::option::Option<AttributeValueOwned>,
69724    ///
69725    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
69726    ///     <ul>
69727    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
69728    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
69729    ///     </ul>
69730    ///   
69731    pub spellcheck: core::option::Option<AttributeValueOwned>,
69732    ///
69733    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
69734    ///   
69735    pub style: core::option::Option<AttributeValueOwned>,
69736    ///
69737    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
69738    ///     <ul>
69739    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
69740    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
69741    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
69742    ///     </ul>
69743    ///   
69744    pub tabindex: core::option::Option<AttributeValueOwned>,
69745    ///
69746    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
69747    ///   
69748    pub title: core::option::Option<AttributeValueOwned>,
69749    ///
69750    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
69751    ///     <ul>
69752    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
69753    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
69754    ///     </ul>
69755    ///   
69756    pub translate: core::option::Option<AttributeValueOwned>,
69757    ///
69758    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
69759    ///     <ul>
69760    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
69761    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
69762    ///     </ul>
69763    ///   
69764    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
69765}
69766#[allow(deprecated)]
69767#[cfg(feature = "alloc")]
69768impl H1Owned {
69769    /// Get the tag name of the element.
69770    /// This is the same as the name of the struct, in kebab-case.
69771    pub fn tag() -> &'static str {
69772        "h1"
69773    }
69774    /// Sets an attribute of the element.
69775    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
69776    /// If the `alloc` feature is disabled, this function will silently fail.
69777    ///
69778    /// # Note
69779    /// This only works when the attribute is lowercase.
69780    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
69781        match name {
69782            "accesskey" => self.accesskey = Some(value.into()),
69783            "autocapitalize" => self.autocapitalize = Some(value.into()),
69784            "autofocus" => self.autofocus = Some(value.into()),
69785            "class" => self.class = Some(value.into()),
69786            "contenteditable" => self.contenteditable = Some(value.into()),
69787            "contextmenu" => self.contextmenu = Some(value.into()),
69788            "dir" => self.dir = Some(value.into()),
69789            "draggable" => self.draggable = Some(value.into()),
69790            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
69791            "exportparts" => self.exportparts = Some(value.into()),
69792            "hidden" => self.hidden = Some(value.into()),
69793            "id" => self.id = Some(value.into()),
69794            "inert" => self.inert = Some(value.into()),
69795            "inputmode" => self.inputmode = Some(value.into()),
69796            "is" => self.is = Some(value.into()),
69797            "itemid" => self.itemid = Some(value.into()),
69798            "itemprop" => self.itemprop = Some(value.into()),
69799            "itemref" => self.itemref = Some(value.into()),
69800            "itemscope" => self.itemscope = Some(value.into()),
69801            "itemtype" => self.itemtype = Some(value.into()),
69802            "lang" => self.lang = Some(value.into()),
69803            "nonce" => self.nonce = Some(value.into()),
69804            "part" => self.part = Some(value.into()),
69805            "popover" => self.popover = Some(value.into()),
69806            "role" => self.role = Some(value.into()),
69807            "slot" => self.slot = Some(value.into()),
69808            "spellcheck" => self.spellcheck = Some(value.into()),
69809            "style" => self.style = Some(value.into()),
69810            "tabindex" => self.tabindex = Some(value.into()),
69811            "title" => self.title = Some(value.into()),
69812            "translate" => self.translate = Some(value.into()),
69813            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
69814            #[cfg(feature = "alloc")]
69815            _ => {
69816                #[allow(clippy::useless_conversion)]
69817                self.extra.insert(name.into(), value.into());
69818            }
69819            #[cfg(not(feature = "alloc"))]
69820            _ => {}
69821        }
69822    }
69823}
69824/// The <strong><code>&lt;h1&gt;</code></strong> to <strong><code>&lt;h6&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> elements represent six levels of section headings. <code>&lt;h1&gt;</code> is the highest section level and <code>&lt;h6&gt;</code> is the lowest.
69825///
69826/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Heading_Elements>
69827
69828#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
69829pub struct H2<'life> {
69830    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
69831    ///   
69832    pub accesskey: core::option::Option<AttributeValue<'life>>,
69833    ///
69834    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
69835    ///     <ul>
69836    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
69837    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
69838    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
69839    ///       <li><code>characters</code>, all letters should default to uppercase</li>
69840    ///     </ul>
69841    ///   
69842    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
69843    ///
69844    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
69845    ///   
69846    pub autofocus: core::option::Option<AttributeValue<'life>>,
69847    ///
69848    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
69849    ///   
69850    pub class: core::option::Option<AttributeValue<'life>>,
69851    ///
69852    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
69853    ///     <ul>
69854    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
69855    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
69856    ///     </ul>
69857    ///   
69858    pub contenteditable: core::option::Option<AttributeValue<'life>>,
69859    ///
69860    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
69861    ///   
69862    pub contextmenu: core::option::Option<AttributeValue<'life>>,
69863    ///
69864    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
69865    ///   
69866    #[cfg(feature = "alloc")]
69867    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
69868    ///
69869    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
69870    ///     <ul>
69871    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
69872    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
69873    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
69874    ///     </ul>
69875    ///   
69876    pub dir: core::option::Option<AttributeValue<'life>>,
69877    ///
69878    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
69879    ///     <ul>
69880    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
69881    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
69882    ///     </ul>
69883    ///   
69884    pub draggable: core::option::Option<AttributeValue<'life>>,
69885    ///
69886    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
69887    ///   
69888    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
69889    ///
69890    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
69891    ///   
69892    pub exportparts: core::option::Option<AttributeValue<'life>>,
69893    /// /// Extra attributes of the element.
69894
69895    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
69896    #[cfg(feature = "alloc")]
69897    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
69898    ///
69899    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
69900    ///   
69901    pub hidden: core::option::Option<AttributeValue<'life>>,
69902    ///
69903    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
69904    ///   
69905    pub id: core::option::Option<AttributeValue<'life>>,
69906    ///
69907    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
69908    ///   
69909    pub inert: core::option::Option<AttributeValue<'life>>,
69910    ///
69911    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
69912    ///   
69913    pub inputmode: core::option::Option<AttributeValue<'life>>,
69914    ///
69915    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
69916    ///   
69917    pub is: core::option::Option<AttributeValue<'life>>,
69918    ///
69919    ///     <p>The unique, global identifier of an item.</p>
69920    ///   
69921    pub itemid: core::option::Option<AttributeValue<'life>>,
69922    ///
69923    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
69924    ///   
69925    pub itemprop: core::option::Option<AttributeValue<'life>>,
69926    ///
69927    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
69928    ///   
69929    pub itemref: core::option::Option<AttributeValue<'life>>,
69930    ///
69931    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
69932    ///   
69933    pub itemscope: core::option::Option<AttributeValue<'life>>,
69934    ///
69935    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
69936    ///   
69937    pub itemtype: core::option::Option<AttributeValue<'life>>,
69938    ///
69939    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
69940    ///   
69941    pub lang: core::option::Option<AttributeValue<'life>>,
69942    ///
69943    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
69944    ///   
69945    pub nonce: core::option::Option<AttributeValue<'life>>,
69946    ///
69947    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
69948    ///   
69949    pub part: core::option::Option<AttributeValue<'life>>,
69950    ///
69951    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
69952    ///   
69953    pub popover: core::option::Option<AttributeValue<'life>>,
69954    ///
69955    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
69956    ///   
69957    pub role: core::option::Option<AttributeValue<'life>>,
69958    ///
69959    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
69960    ///   
69961    pub slot: core::option::Option<AttributeValue<'life>>,
69962    ///
69963    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
69964    ///     <ul>
69965    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
69966    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
69967    ///     </ul>
69968    ///   
69969    pub spellcheck: core::option::Option<AttributeValue<'life>>,
69970    ///
69971    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
69972    ///   
69973    pub style: core::option::Option<AttributeValue<'life>>,
69974    ///
69975    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
69976    ///     <ul>
69977    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
69978    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
69979    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
69980    ///     </ul>
69981    ///   
69982    pub tabindex: core::option::Option<AttributeValue<'life>>,
69983    ///
69984    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
69985    ///   
69986    pub title: core::option::Option<AttributeValue<'life>>,
69987    ///
69988    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
69989    ///     <ul>
69990    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
69991    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
69992    ///     </ul>
69993    ///   
69994    pub translate: core::option::Option<AttributeValue<'life>>,
69995    ///
69996    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
69997    ///     <ul>
69998    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
69999    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
70000    ///     </ul>
70001    ///   
70002    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
70003}
70004#[allow(deprecated)]
70005
70006impl<'life> H2<'life> {
70007    /// Get the tag name of the element.
70008    /// This is the same as the name of the struct, in kebab-case.
70009    pub fn tag() -> &'static str {
70010        "h2"
70011    }
70012    /// Sets an attribute of the element.
70013    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
70014    /// If the `alloc` feature is disabled, this function will silently fail.
70015    ///
70016    /// # Note
70017    /// This only works when the attribute is lowercase.
70018    pub fn set_attr(
70019        &mut self,
70020        name: &'life str,
70021        value: impl core::convert::Into<AttributeValue<'life>>,
70022    ) {
70023        match name {
70024            "accesskey" => self.accesskey = Some(value.into()),
70025            "autocapitalize" => self.autocapitalize = Some(value.into()),
70026            "autofocus" => self.autofocus = Some(value.into()),
70027            "class" => self.class = Some(value.into()),
70028            "contenteditable" => self.contenteditable = Some(value.into()),
70029            "contextmenu" => self.contextmenu = Some(value.into()),
70030            "dir" => self.dir = Some(value.into()),
70031            "draggable" => self.draggable = Some(value.into()),
70032            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
70033            "exportparts" => self.exportparts = Some(value.into()),
70034            "hidden" => self.hidden = Some(value.into()),
70035            "id" => self.id = Some(value.into()),
70036            "inert" => self.inert = Some(value.into()),
70037            "inputmode" => self.inputmode = Some(value.into()),
70038            "is" => self.is = Some(value.into()),
70039            "itemid" => self.itemid = Some(value.into()),
70040            "itemprop" => self.itemprop = Some(value.into()),
70041            "itemref" => self.itemref = Some(value.into()),
70042            "itemscope" => self.itemscope = Some(value.into()),
70043            "itemtype" => self.itemtype = Some(value.into()),
70044            "lang" => self.lang = Some(value.into()),
70045            "nonce" => self.nonce = Some(value.into()),
70046            "part" => self.part = Some(value.into()),
70047            "popover" => self.popover = Some(value.into()),
70048            "role" => self.role = Some(value.into()),
70049            "slot" => self.slot = Some(value.into()),
70050            "spellcheck" => self.spellcheck = Some(value.into()),
70051            "style" => self.style = Some(value.into()),
70052            "tabindex" => self.tabindex = Some(value.into()),
70053            "title" => self.title = Some(value.into()),
70054            "translate" => self.translate = Some(value.into()),
70055            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
70056            #[cfg(feature = "alloc")]
70057            _ => {
70058                #[allow(clippy::useless_conversion)]
70059                self.extra.insert(name.into(), value.into());
70060            }
70061            #[cfg(not(feature = "alloc"))]
70062            _ => {}
70063        }
70064    }
70065}
70066/// The <strong><code>&lt;h1&gt;</code></strong> to <strong><code>&lt;h6&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> elements represent six levels of section headings. <code>&lt;h1&gt;</code> is the highest section level and <code>&lt;h6&gt;</code> is the lowest.
70067///
70068/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Heading_Elements>
70069
70070#[cfg(feature = "alloc")]
70071#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
70072pub struct H2Owned {
70073    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
70074    ///   
70075    pub accesskey: core::option::Option<AttributeValueOwned>,
70076    ///
70077    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
70078    ///     <ul>
70079    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
70080    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
70081    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
70082    ///       <li><code>characters</code>, all letters should default to uppercase</li>
70083    ///     </ul>
70084    ///   
70085    pub autocapitalize: core::option::Option<AttributeValueOwned>,
70086    ///
70087    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
70088    ///   
70089    pub autofocus: core::option::Option<AttributeValueOwned>,
70090    ///
70091    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
70092    ///   
70093    pub class: core::option::Option<AttributeValueOwned>,
70094    ///
70095    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
70096    ///     <ul>
70097    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
70098    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
70099    ///     </ul>
70100    ///   
70101    pub contenteditable: core::option::Option<AttributeValueOwned>,
70102    ///
70103    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
70104    ///   
70105    pub contextmenu: core::option::Option<AttributeValueOwned>,
70106    ///
70107    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
70108    ///   
70109    #[cfg(feature = "alloc")]
70110    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
70111    ///
70112    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
70113    ///     <ul>
70114    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
70115    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
70116    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
70117    ///     </ul>
70118    ///   
70119    pub dir: core::option::Option<AttributeValueOwned>,
70120    ///
70121    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
70122    ///     <ul>
70123    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
70124    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
70125    ///     </ul>
70126    ///   
70127    pub draggable: core::option::Option<AttributeValueOwned>,
70128    ///
70129    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
70130    ///   
70131    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
70132    ///
70133    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
70134    ///   
70135    pub exportparts: core::option::Option<AttributeValueOwned>,
70136    /// /// Extra attributes of the element.
70137
70138    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
70139    #[cfg(feature = "alloc")]
70140    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
70141    ///
70142    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
70143    ///   
70144    pub hidden: core::option::Option<AttributeValueOwned>,
70145    ///
70146    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
70147    ///   
70148    pub id: core::option::Option<AttributeValueOwned>,
70149    ///
70150    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
70151    ///   
70152    pub inert: core::option::Option<AttributeValueOwned>,
70153    ///
70154    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
70155    ///   
70156    pub inputmode: core::option::Option<AttributeValueOwned>,
70157    ///
70158    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
70159    ///   
70160    pub is: core::option::Option<AttributeValueOwned>,
70161    ///
70162    ///     <p>The unique, global identifier of an item.</p>
70163    ///   
70164    pub itemid: core::option::Option<AttributeValueOwned>,
70165    ///
70166    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
70167    ///   
70168    pub itemprop: core::option::Option<AttributeValueOwned>,
70169    ///
70170    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
70171    ///   
70172    pub itemref: core::option::Option<AttributeValueOwned>,
70173    ///
70174    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
70175    ///   
70176    pub itemscope: core::option::Option<AttributeValueOwned>,
70177    ///
70178    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
70179    ///   
70180    pub itemtype: core::option::Option<AttributeValueOwned>,
70181    ///
70182    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
70183    ///   
70184    pub lang: core::option::Option<AttributeValueOwned>,
70185    ///
70186    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
70187    ///   
70188    pub nonce: core::option::Option<AttributeValueOwned>,
70189    ///
70190    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
70191    ///   
70192    pub part: core::option::Option<AttributeValueOwned>,
70193    ///
70194    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
70195    ///   
70196    pub popover: core::option::Option<AttributeValueOwned>,
70197    ///
70198    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
70199    ///   
70200    pub role: core::option::Option<AttributeValueOwned>,
70201    ///
70202    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
70203    ///   
70204    pub slot: core::option::Option<AttributeValueOwned>,
70205    ///
70206    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
70207    ///     <ul>
70208    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
70209    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
70210    ///     </ul>
70211    ///   
70212    pub spellcheck: core::option::Option<AttributeValueOwned>,
70213    ///
70214    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
70215    ///   
70216    pub style: core::option::Option<AttributeValueOwned>,
70217    ///
70218    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
70219    ///     <ul>
70220    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
70221    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
70222    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
70223    ///     </ul>
70224    ///   
70225    pub tabindex: core::option::Option<AttributeValueOwned>,
70226    ///
70227    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
70228    ///   
70229    pub title: core::option::Option<AttributeValueOwned>,
70230    ///
70231    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
70232    ///     <ul>
70233    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
70234    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
70235    ///     </ul>
70236    ///   
70237    pub translate: core::option::Option<AttributeValueOwned>,
70238    ///
70239    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
70240    ///     <ul>
70241    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
70242    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
70243    ///     </ul>
70244    ///   
70245    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
70246}
70247#[allow(deprecated)]
70248#[cfg(feature = "alloc")]
70249impl H2Owned {
70250    /// Get the tag name of the element.
70251    /// This is the same as the name of the struct, in kebab-case.
70252    pub fn tag() -> &'static str {
70253        "h2"
70254    }
70255    /// Sets an attribute of the element.
70256    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
70257    /// If the `alloc` feature is disabled, this function will silently fail.
70258    ///
70259    /// # Note
70260    /// This only works when the attribute is lowercase.
70261    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
70262        match name {
70263            "accesskey" => self.accesskey = Some(value.into()),
70264            "autocapitalize" => self.autocapitalize = Some(value.into()),
70265            "autofocus" => self.autofocus = Some(value.into()),
70266            "class" => self.class = Some(value.into()),
70267            "contenteditable" => self.contenteditable = Some(value.into()),
70268            "contextmenu" => self.contextmenu = Some(value.into()),
70269            "dir" => self.dir = Some(value.into()),
70270            "draggable" => self.draggable = Some(value.into()),
70271            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
70272            "exportparts" => self.exportparts = Some(value.into()),
70273            "hidden" => self.hidden = Some(value.into()),
70274            "id" => self.id = Some(value.into()),
70275            "inert" => self.inert = Some(value.into()),
70276            "inputmode" => self.inputmode = Some(value.into()),
70277            "is" => self.is = Some(value.into()),
70278            "itemid" => self.itemid = Some(value.into()),
70279            "itemprop" => self.itemprop = Some(value.into()),
70280            "itemref" => self.itemref = Some(value.into()),
70281            "itemscope" => self.itemscope = Some(value.into()),
70282            "itemtype" => self.itemtype = Some(value.into()),
70283            "lang" => self.lang = Some(value.into()),
70284            "nonce" => self.nonce = Some(value.into()),
70285            "part" => self.part = Some(value.into()),
70286            "popover" => self.popover = Some(value.into()),
70287            "role" => self.role = Some(value.into()),
70288            "slot" => self.slot = Some(value.into()),
70289            "spellcheck" => self.spellcheck = Some(value.into()),
70290            "style" => self.style = Some(value.into()),
70291            "tabindex" => self.tabindex = Some(value.into()),
70292            "title" => self.title = Some(value.into()),
70293            "translate" => self.translate = Some(value.into()),
70294            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
70295            #[cfg(feature = "alloc")]
70296            _ => {
70297                #[allow(clippy::useless_conversion)]
70298                self.extra.insert(name.into(), value.into());
70299            }
70300            #[cfg(not(feature = "alloc"))]
70301            _ => {}
70302        }
70303    }
70304}
70305/// The <strong><code>&lt;h1&gt;</code></strong> to <strong><code>&lt;h6&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> elements represent six levels of section headings. <code>&lt;h1&gt;</code> is the highest section level and <code>&lt;h6&gt;</code> is the lowest.
70306///
70307/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Heading_Elements>
70308
70309#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
70310pub struct H3<'life> {
70311    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
70312    ///   
70313    pub accesskey: core::option::Option<AttributeValue<'life>>,
70314    ///
70315    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
70316    ///     <ul>
70317    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
70318    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
70319    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
70320    ///       <li><code>characters</code>, all letters should default to uppercase</li>
70321    ///     </ul>
70322    ///   
70323    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
70324    ///
70325    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
70326    ///   
70327    pub autofocus: core::option::Option<AttributeValue<'life>>,
70328    ///
70329    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
70330    ///   
70331    pub class: core::option::Option<AttributeValue<'life>>,
70332    ///
70333    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
70334    ///     <ul>
70335    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
70336    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
70337    ///     </ul>
70338    ///   
70339    pub contenteditable: core::option::Option<AttributeValue<'life>>,
70340    ///
70341    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
70342    ///   
70343    pub contextmenu: core::option::Option<AttributeValue<'life>>,
70344    ///
70345    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
70346    ///   
70347    #[cfg(feature = "alloc")]
70348    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
70349    ///
70350    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
70351    ///     <ul>
70352    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
70353    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
70354    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
70355    ///     </ul>
70356    ///   
70357    pub dir: core::option::Option<AttributeValue<'life>>,
70358    ///
70359    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
70360    ///     <ul>
70361    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
70362    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
70363    ///     </ul>
70364    ///   
70365    pub draggable: core::option::Option<AttributeValue<'life>>,
70366    ///
70367    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
70368    ///   
70369    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
70370    ///
70371    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
70372    ///   
70373    pub exportparts: core::option::Option<AttributeValue<'life>>,
70374    /// /// Extra attributes of the element.
70375
70376    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
70377    #[cfg(feature = "alloc")]
70378    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
70379    ///
70380    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
70381    ///   
70382    pub hidden: core::option::Option<AttributeValue<'life>>,
70383    ///
70384    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
70385    ///   
70386    pub id: core::option::Option<AttributeValue<'life>>,
70387    ///
70388    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
70389    ///   
70390    pub inert: core::option::Option<AttributeValue<'life>>,
70391    ///
70392    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
70393    ///   
70394    pub inputmode: core::option::Option<AttributeValue<'life>>,
70395    ///
70396    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
70397    ///   
70398    pub is: core::option::Option<AttributeValue<'life>>,
70399    ///
70400    ///     <p>The unique, global identifier of an item.</p>
70401    ///   
70402    pub itemid: core::option::Option<AttributeValue<'life>>,
70403    ///
70404    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
70405    ///   
70406    pub itemprop: core::option::Option<AttributeValue<'life>>,
70407    ///
70408    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
70409    ///   
70410    pub itemref: core::option::Option<AttributeValue<'life>>,
70411    ///
70412    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
70413    ///   
70414    pub itemscope: core::option::Option<AttributeValue<'life>>,
70415    ///
70416    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
70417    ///   
70418    pub itemtype: core::option::Option<AttributeValue<'life>>,
70419    ///
70420    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
70421    ///   
70422    pub lang: core::option::Option<AttributeValue<'life>>,
70423    ///
70424    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
70425    ///   
70426    pub nonce: core::option::Option<AttributeValue<'life>>,
70427    ///
70428    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
70429    ///   
70430    pub part: core::option::Option<AttributeValue<'life>>,
70431    ///
70432    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
70433    ///   
70434    pub popover: core::option::Option<AttributeValue<'life>>,
70435    ///
70436    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
70437    ///   
70438    pub role: core::option::Option<AttributeValue<'life>>,
70439    ///
70440    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
70441    ///   
70442    pub slot: core::option::Option<AttributeValue<'life>>,
70443    ///
70444    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
70445    ///     <ul>
70446    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
70447    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
70448    ///     </ul>
70449    ///   
70450    pub spellcheck: core::option::Option<AttributeValue<'life>>,
70451    ///
70452    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
70453    ///   
70454    pub style: core::option::Option<AttributeValue<'life>>,
70455    ///
70456    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
70457    ///     <ul>
70458    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
70459    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
70460    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
70461    ///     </ul>
70462    ///   
70463    pub tabindex: core::option::Option<AttributeValue<'life>>,
70464    ///
70465    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
70466    ///   
70467    pub title: core::option::Option<AttributeValue<'life>>,
70468    ///
70469    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
70470    ///     <ul>
70471    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
70472    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
70473    ///     </ul>
70474    ///   
70475    pub translate: core::option::Option<AttributeValue<'life>>,
70476    ///
70477    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
70478    ///     <ul>
70479    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
70480    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
70481    ///     </ul>
70482    ///   
70483    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
70484}
70485#[allow(deprecated)]
70486
70487impl<'life> H3<'life> {
70488    /// Get the tag name of the element.
70489    /// This is the same as the name of the struct, in kebab-case.
70490    pub fn tag() -> &'static str {
70491        "h3"
70492    }
70493    /// Sets an attribute of the element.
70494    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
70495    /// If the `alloc` feature is disabled, this function will silently fail.
70496    ///
70497    /// # Note
70498    /// This only works when the attribute is lowercase.
70499    pub fn set_attr(
70500        &mut self,
70501        name: &'life str,
70502        value: impl core::convert::Into<AttributeValue<'life>>,
70503    ) {
70504        match name {
70505            "accesskey" => self.accesskey = Some(value.into()),
70506            "autocapitalize" => self.autocapitalize = Some(value.into()),
70507            "autofocus" => self.autofocus = Some(value.into()),
70508            "class" => self.class = Some(value.into()),
70509            "contenteditable" => self.contenteditable = Some(value.into()),
70510            "contextmenu" => self.contextmenu = Some(value.into()),
70511            "dir" => self.dir = Some(value.into()),
70512            "draggable" => self.draggable = Some(value.into()),
70513            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
70514            "exportparts" => self.exportparts = Some(value.into()),
70515            "hidden" => self.hidden = Some(value.into()),
70516            "id" => self.id = Some(value.into()),
70517            "inert" => self.inert = Some(value.into()),
70518            "inputmode" => self.inputmode = Some(value.into()),
70519            "is" => self.is = Some(value.into()),
70520            "itemid" => self.itemid = Some(value.into()),
70521            "itemprop" => self.itemprop = Some(value.into()),
70522            "itemref" => self.itemref = Some(value.into()),
70523            "itemscope" => self.itemscope = Some(value.into()),
70524            "itemtype" => self.itemtype = Some(value.into()),
70525            "lang" => self.lang = Some(value.into()),
70526            "nonce" => self.nonce = Some(value.into()),
70527            "part" => self.part = Some(value.into()),
70528            "popover" => self.popover = Some(value.into()),
70529            "role" => self.role = Some(value.into()),
70530            "slot" => self.slot = Some(value.into()),
70531            "spellcheck" => self.spellcheck = Some(value.into()),
70532            "style" => self.style = Some(value.into()),
70533            "tabindex" => self.tabindex = Some(value.into()),
70534            "title" => self.title = Some(value.into()),
70535            "translate" => self.translate = Some(value.into()),
70536            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
70537            #[cfg(feature = "alloc")]
70538            _ => {
70539                #[allow(clippy::useless_conversion)]
70540                self.extra.insert(name.into(), value.into());
70541            }
70542            #[cfg(not(feature = "alloc"))]
70543            _ => {}
70544        }
70545    }
70546}
70547/// The <strong><code>&lt;h1&gt;</code></strong> to <strong><code>&lt;h6&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> elements represent six levels of section headings. <code>&lt;h1&gt;</code> is the highest section level and <code>&lt;h6&gt;</code> is the lowest.
70548///
70549/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Heading_Elements>
70550
70551#[cfg(feature = "alloc")]
70552#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
70553pub struct H3Owned {
70554    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
70555    ///   
70556    pub accesskey: core::option::Option<AttributeValueOwned>,
70557    ///
70558    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
70559    ///     <ul>
70560    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
70561    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
70562    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
70563    ///       <li><code>characters</code>, all letters should default to uppercase</li>
70564    ///     </ul>
70565    ///   
70566    pub autocapitalize: core::option::Option<AttributeValueOwned>,
70567    ///
70568    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
70569    ///   
70570    pub autofocus: core::option::Option<AttributeValueOwned>,
70571    ///
70572    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
70573    ///   
70574    pub class: core::option::Option<AttributeValueOwned>,
70575    ///
70576    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
70577    ///     <ul>
70578    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
70579    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
70580    ///     </ul>
70581    ///   
70582    pub contenteditable: core::option::Option<AttributeValueOwned>,
70583    ///
70584    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
70585    ///   
70586    pub contextmenu: core::option::Option<AttributeValueOwned>,
70587    ///
70588    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
70589    ///   
70590    #[cfg(feature = "alloc")]
70591    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
70592    ///
70593    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
70594    ///     <ul>
70595    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
70596    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
70597    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
70598    ///     </ul>
70599    ///   
70600    pub dir: core::option::Option<AttributeValueOwned>,
70601    ///
70602    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
70603    ///     <ul>
70604    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
70605    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
70606    ///     </ul>
70607    ///   
70608    pub draggable: core::option::Option<AttributeValueOwned>,
70609    ///
70610    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
70611    ///   
70612    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
70613    ///
70614    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
70615    ///   
70616    pub exportparts: core::option::Option<AttributeValueOwned>,
70617    /// /// Extra attributes of the element.
70618
70619    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
70620    #[cfg(feature = "alloc")]
70621    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
70622    ///
70623    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
70624    ///   
70625    pub hidden: core::option::Option<AttributeValueOwned>,
70626    ///
70627    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
70628    ///   
70629    pub id: core::option::Option<AttributeValueOwned>,
70630    ///
70631    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
70632    ///   
70633    pub inert: core::option::Option<AttributeValueOwned>,
70634    ///
70635    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
70636    ///   
70637    pub inputmode: core::option::Option<AttributeValueOwned>,
70638    ///
70639    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
70640    ///   
70641    pub is: core::option::Option<AttributeValueOwned>,
70642    ///
70643    ///     <p>The unique, global identifier of an item.</p>
70644    ///   
70645    pub itemid: core::option::Option<AttributeValueOwned>,
70646    ///
70647    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
70648    ///   
70649    pub itemprop: core::option::Option<AttributeValueOwned>,
70650    ///
70651    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
70652    ///   
70653    pub itemref: core::option::Option<AttributeValueOwned>,
70654    ///
70655    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
70656    ///   
70657    pub itemscope: core::option::Option<AttributeValueOwned>,
70658    ///
70659    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
70660    ///   
70661    pub itemtype: core::option::Option<AttributeValueOwned>,
70662    ///
70663    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
70664    ///   
70665    pub lang: core::option::Option<AttributeValueOwned>,
70666    ///
70667    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
70668    ///   
70669    pub nonce: core::option::Option<AttributeValueOwned>,
70670    ///
70671    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
70672    ///   
70673    pub part: core::option::Option<AttributeValueOwned>,
70674    ///
70675    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
70676    ///   
70677    pub popover: core::option::Option<AttributeValueOwned>,
70678    ///
70679    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
70680    ///   
70681    pub role: core::option::Option<AttributeValueOwned>,
70682    ///
70683    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
70684    ///   
70685    pub slot: core::option::Option<AttributeValueOwned>,
70686    ///
70687    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
70688    ///     <ul>
70689    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
70690    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
70691    ///     </ul>
70692    ///   
70693    pub spellcheck: core::option::Option<AttributeValueOwned>,
70694    ///
70695    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
70696    ///   
70697    pub style: core::option::Option<AttributeValueOwned>,
70698    ///
70699    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
70700    ///     <ul>
70701    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
70702    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
70703    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
70704    ///     </ul>
70705    ///   
70706    pub tabindex: core::option::Option<AttributeValueOwned>,
70707    ///
70708    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
70709    ///   
70710    pub title: core::option::Option<AttributeValueOwned>,
70711    ///
70712    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
70713    ///     <ul>
70714    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
70715    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
70716    ///     </ul>
70717    ///   
70718    pub translate: core::option::Option<AttributeValueOwned>,
70719    ///
70720    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
70721    ///     <ul>
70722    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
70723    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
70724    ///     </ul>
70725    ///   
70726    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
70727}
70728#[allow(deprecated)]
70729#[cfg(feature = "alloc")]
70730impl H3Owned {
70731    /// Get the tag name of the element.
70732    /// This is the same as the name of the struct, in kebab-case.
70733    pub fn tag() -> &'static str {
70734        "h3"
70735    }
70736    /// Sets an attribute of the element.
70737    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
70738    /// If the `alloc` feature is disabled, this function will silently fail.
70739    ///
70740    /// # Note
70741    /// This only works when the attribute is lowercase.
70742    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
70743        match name {
70744            "accesskey" => self.accesskey = Some(value.into()),
70745            "autocapitalize" => self.autocapitalize = Some(value.into()),
70746            "autofocus" => self.autofocus = Some(value.into()),
70747            "class" => self.class = Some(value.into()),
70748            "contenteditable" => self.contenteditable = Some(value.into()),
70749            "contextmenu" => self.contextmenu = Some(value.into()),
70750            "dir" => self.dir = Some(value.into()),
70751            "draggable" => self.draggable = Some(value.into()),
70752            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
70753            "exportparts" => self.exportparts = Some(value.into()),
70754            "hidden" => self.hidden = Some(value.into()),
70755            "id" => self.id = Some(value.into()),
70756            "inert" => self.inert = Some(value.into()),
70757            "inputmode" => self.inputmode = Some(value.into()),
70758            "is" => self.is = Some(value.into()),
70759            "itemid" => self.itemid = Some(value.into()),
70760            "itemprop" => self.itemprop = Some(value.into()),
70761            "itemref" => self.itemref = Some(value.into()),
70762            "itemscope" => self.itemscope = Some(value.into()),
70763            "itemtype" => self.itemtype = Some(value.into()),
70764            "lang" => self.lang = Some(value.into()),
70765            "nonce" => self.nonce = Some(value.into()),
70766            "part" => self.part = Some(value.into()),
70767            "popover" => self.popover = Some(value.into()),
70768            "role" => self.role = Some(value.into()),
70769            "slot" => self.slot = Some(value.into()),
70770            "spellcheck" => self.spellcheck = Some(value.into()),
70771            "style" => self.style = Some(value.into()),
70772            "tabindex" => self.tabindex = Some(value.into()),
70773            "title" => self.title = Some(value.into()),
70774            "translate" => self.translate = Some(value.into()),
70775            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
70776            #[cfg(feature = "alloc")]
70777            _ => {
70778                #[allow(clippy::useless_conversion)]
70779                self.extra.insert(name.into(), value.into());
70780            }
70781            #[cfg(not(feature = "alloc"))]
70782            _ => {}
70783        }
70784    }
70785}
70786/// The <strong><code>&lt;h1&gt;</code></strong> to <strong><code>&lt;h6&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> elements represent six levels of section headings. <code>&lt;h1&gt;</code> is the highest section level and <code>&lt;h6&gt;</code> is the lowest.
70787///
70788/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Heading_Elements>
70789
70790#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
70791pub struct H4<'life> {
70792    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
70793    ///   
70794    pub accesskey: core::option::Option<AttributeValue<'life>>,
70795    ///
70796    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
70797    ///     <ul>
70798    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
70799    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
70800    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
70801    ///       <li><code>characters</code>, all letters should default to uppercase</li>
70802    ///     </ul>
70803    ///   
70804    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
70805    ///
70806    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
70807    ///   
70808    pub autofocus: core::option::Option<AttributeValue<'life>>,
70809    ///
70810    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
70811    ///   
70812    pub class: core::option::Option<AttributeValue<'life>>,
70813    ///
70814    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
70815    ///     <ul>
70816    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
70817    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
70818    ///     </ul>
70819    ///   
70820    pub contenteditable: core::option::Option<AttributeValue<'life>>,
70821    ///
70822    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
70823    ///   
70824    pub contextmenu: core::option::Option<AttributeValue<'life>>,
70825    ///
70826    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
70827    ///   
70828    #[cfg(feature = "alloc")]
70829    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
70830    ///
70831    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
70832    ///     <ul>
70833    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
70834    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
70835    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
70836    ///     </ul>
70837    ///   
70838    pub dir: core::option::Option<AttributeValue<'life>>,
70839    ///
70840    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
70841    ///     <ul>
70842    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
70843    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
70844    ///     </ul>
70845    ///   
70846    pub draggable: core::option::Option<AttributeValue<'life>>,
70847    ///
70848    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
70849    ///   
70850    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
70851    ///
70852    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
70853    ///   
70854    pub exportparts: core::option::Option<AttributeValue<'life>>,
70855    /// /// Extra attributes of the element.
70856
70857    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
70858    #[cfg(feature = "alloc")]
70859    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
70860    ///
70861    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
70862    ///   
70863    pub hidden: core::option::Option<AttributeValue<'life>>,
70864    ///
70865    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
70866    ///   
70867    pub id: core::option::Option<AttributeValue<'life>>,
70868    ///
70869    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
70870    ///   
70871    pub inert: core::option::Option<AttributeValue<'life>>,
70872    ///
70873    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
70874    ///   
70875    pub inputmode: core::option::Option<AttributeValue<'life>>,
70876    ///
70877    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
70878    ///   
70879    pub is: core::option::Option<AttributeValue<'life>>,
70880    ///
70881    ///     <p>The unique, global identifier of an item.</p>
70882    ///   
70883    pub itemid: core::option::Option<AttributeValue<'life>>,
70884    ///
70885    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
70886    ///   
70887    pub itemprop: core::option::Option<AttributeValue<'life>>,
70888    ///
70889    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
70890    ///   
70891    pub itemref: core::option::Option<AttributeValue<'life>>,
70892    ///
70893    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
70894    ///   
70895    pub itemscope: core::option::Option<AttributeValue<'life>>,
70896    ///
70897    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
70898    ///   
70899    pub itemtype: core::option::Option<AttributeValue<'life>>,
70900    ///
70901    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
70902    ///   
70903    pub lang: core::option::Option<AttributeValue<'life>>,
70904    ///
70905    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
70906    ///   
70907    pub nonce: core::option::Option<AttributeValue<'life>>,
70908    ///
70909    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
70910    ///   
70911    pub part: core::option::Option<AttributeValue<'life>>,
70912    ///
70913    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
70914    ///   
70915    pub popover: core::option::Option<AttributeValue<'life>>,
70916    ///
70917    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
70918    ///   
70919    pub role: core::option::Option<AttributeValue<'life>>,
70920    ///
70921    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
70922    ///   
70923    pub slot: core::option::Option<AttributeValue<'life>>,
70924    ///
70925    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
70926    ///     <ul>
70927    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
70928    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
70929    ///     </ul>
70930    ///   
70931    pub spellcheck: core::option::Option<AttributeValue<'life>>,
70932    ///
70933    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
70934    ///   
70935    pub style: core::option::Option<AttributeValue<'life>>,
70936    ///
70937    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
70938    ///     <ul>
70939    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
70940    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
70941    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
70942    ///     </ul>
70943    ///   
70944    pub tabindex: core::option::Option<AttributeValue<'life>>,
70945    ///
70946    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
70947    ///   
70948    pub title: core::option::Option<AttributeValue<'life>>,
70949    ///
70950    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
70951    ///     <ul>
70952    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
70953    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
70954    ///     </ul>
70955    ///   
70956    pub translate: core::option::Option<AttributeValue<'life>>,
70957    ///
70958    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
70959    ///     <ul>
70960    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
70961    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
70962    ///     </ul>
70963    ///   
70964    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
70965}
70966#[allow(deprecated)]
70967
70968impl<'life> H4<'life> {
70969    /// Get the tag name of the element.
70970    /// This is the same as the name of the struct, in kebab-case.
70971    pub fn tag() -> &'static str {
70972        "h4"
70973    }
70974    /// Sets an attribute of the element.
70975    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
70976    /// If the `alloc` feature is disabled, this function will silently fail.
70977    ///
70978    /// # Note
70979    /// This only works when the attribute is lowercase.
70980    pub fn set_attr(
70981        &mut self,
70982        name: &'life str,
70983        value: impl core::convert::Into<AttributeValue<'life>>,
70984    ) {
70985        match name {
70986            "accesskey" => self.accesskey = Some(value.into()),
70987            "autocapitalize" => self.autocapitalize = Some(value.into()),
70988            "autofocus" => self.autofocus = Some(value.into()),
70989            "class" => self.class = Some(value.into()),
70990            "contenteditable" => self.contenteditable = Some(value.into()),
70991            "contextmenu" => self.contextmenu = Some(value.into()),
70992            "dir" => self.dir = Some(value.into()),
70993            "draggable" => self.draggable = Some(value.into()),
70994            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
70995            "exportparts" => self.exportparts = Some(value.into()),
70996            "hidden" => self.hidden = Some(value.into()),
70997            "id" => self.id = Some(value.into()),
70998            "inert" => self.inert = Some(value.into()),
70999            "inputmode" => self.inputmode = Some(value.into()),
71000            "is" => self.is = Some(value.into()),
71001            "itemid" => self.itemid = Some(value.into()),
71002            "itemprop" => self.itemprop = Some(value.into()),
71003            "itemref" => self.itemref = Some(value.into()),
71004            "itemscope" => self.itemscope = Some(value.into()),
71005            "itemtype" => self.itemtype = Some(value.into()),
71006            "lang" => self.lang = Some(value.into()),
71007            "nonce" => self.nonce = Some(value.into()),
71008            "part" => self.part = Some(value.into()),
71009            "popover" => self.popover = Some(value.into()),
71010            "role" => self.role = Some(value.into()),
71011            "slot" => self.slot = Some(value.into()),
71012            "spellcheck" => self.spellcheck = Some(value.into()),
71013            "style" => self.style = Some(value.into()),
71014            "tabindex" => self.tabindex = Some(value.into()),
71015            "title" => self.title = Some(value.into()),
71016            "translate" => self.translate = Some(value.into()),
71017            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
71018            #[cfg(feature = "alloc")]
71019            _ => {
71020                #[allow(clippy::useless_conversion)]
71021                self.extra.insert(name.into(), value.into());
71022            }
71023            #[cfg(not(feature = "alloc"))]
71024            _ => {}
71025        }
71026    }
71027}
71028/// The <strong><code>&lt;h1&gt;</code></strong> to <strong><code>&lt;h6&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> elements represent six levels of section headings. <code>&lt;h1&gt;</code> is the highest section level and <code>&lt;h6&gt;</code> is the lowest.
71029///
71030/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Heading_Elements>
71031
71032#[cfg(feature = "alloc")]
71033#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
71034pub struct H4Owned {
71035    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
71036    ///   
71037    pub accesskey: core::option::Option<AttributeValueOwned>,
71038    ///
71039    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
71040    ///     <ul>
71041    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
71042    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
71043    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
71044    ///       <li><code>characters</code>, all letters should default to uppercase</li>
71045    ///     </ul>
71046    ///   
71047    pub autocapitalize: core::option::Option<AttributeValueOwned>,
71048    ///
71049    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
71050    ///   
71051    pub autofocus: core::option::Option<AttributeValueOwned>,
71052    ///
71053    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
71054    ///   
71055    pub class: core::option::Option<AttributeValueOwned>,
71056    ///
71057    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
71058    ///     <ul>
71059    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
71060    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
71061    ///     </ul>
71062    ///   
71063    pub contenteditable: core::option::Option<AttributeValueOwned>,
71064    ///
71065    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
71066    ///   
71067    pub contextmenu: core::option::Option<AttributeValueOwned>,
71068    ///
71069    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
71070    ///   
71071    #[cfg(feature = "alloc")]
71072    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
71073    ///
71074    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
71075    ///     <ul>
71076    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
71077    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
71078    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
71079    ///     </ul>
71080    ///   
71081    pub dir: core::option::Option<AttributeValueOwned>,
71082    ///
71083    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
71084    ///     <ul>
71085    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
71086    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
71087    ///     </ul>
71088    ///   
71089    pub draggable: core::option::Option<AttributeValueOwned>,
71090    ///
71091    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
71092    ///   
71093    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
71094    ///
71095    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
71096    ///   
71097    pub exportparts: core::option::Option<AttributeValueOwned>,
71098    /// /// Extra attributes of the element.
71099
71100    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
71101    #[cfg(feature = "alloc")]
71102    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
71103    ///
71104    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
71105    ///   
71106    pub hidden: core::option::Option<AttributeValueOwned>,
71107    ///
71108    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
71109    ///   
71110    pub id: core::option::Option<AttributeValueOwned>,
71111    ///
71112    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
71113    ///   
71114    pub inert: core::option::Option<AttributeValueOwned>,
71115    ///
71116    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
71117    ///   
71118    pub inputmode: core::option::Option<AttributeValueOwned>,
71119    ///
71120    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
71121    ///   
71122    pub is: core::option::Option<AttributeValueOwned>,
71123    ///
71124    ///     <p>The unique, global identifier of an item.</p>
71125    ///   
71126    pub itemid: core::option::Option<AttributeValueOwned>,
71127    ///
71128    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
71129    ///   
71130    pub itemprop: core::option::Option<AttributeValueOwned>,
71131    ///
71132    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
71133    ///   
71134    pub itemref: core::option::Option<AttributeValueOwned>,
71135    ///
71136    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
71137    ///   
71138    pub itemscope: core::option::Option<AttributeValueOwned>,
71139    ///
71140    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
71141    ///   
71142    pub itemtype: core::option::Option<AttributeValueOwned>,
71143    ///
71144    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
71145    ///   
71146    pub lang: core::option::Option<AttributeValueOwned>,
71147    ///
71148    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
71149    ///   
71150    pub nonce: core::option::Option<AttributeValueOwned>,
71151    ///
71152    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
71153    ///   
71154    pub part: core::option::Option<AttributeValueOwned>,
71155    ///
71156    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
71157    ///   
71158    pub popover: core::option::Option<AttributeValueOwned>,
71159    ///
71160    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
71161    ///   
71162    pub role: core::option::Option<AttributeValueOwned>,
71163    ///
71164    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
71165    ///   
71166    pub slot: core::option::Option<AttributeValueOwned>,
71167    ///
71168    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
71169    ///     <ul>
71170    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
71171    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
71172    ///     </ul>
71173    ///   
71174    pub spellcheck: core::option::Option<AttributeValueOwned>,
71175    ///
71176    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
71177    ///   
71178    pub style: core::option::Option<AttributeValueOwned>,
71179    ///
71180    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
71181    ///     <ul>
71182    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
71183    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
71184    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
71185    ///     </ul>
71186    ///   
71187    pub tabindex: core::option::Option<AttributeValueOwned>,
71188    ///
71189    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
71190    ///   
71191    pub title: core::option::Option<AttributeValueOwned>,
71192    ///
71193    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
71194    ///     <ul>
71195    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
71196    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
71197    ///     </ul>
71198    ///   
71199    pub translate: core::option::Option<AttributeValueOwned>,
71200    ///
71201    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
71202    ///     <ul>
71203    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
71204    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
71205    ///     </ul>
71206    ///   
71207    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
71208}
71209#[allow(deprecated)]
71210#[cfg(feature = "alloc")]
71211impl H4Owned {
71212    /// Get the tag name of the element.
71213    /// This is the same as the name of the struct, in kebab-case.
71214    pub fn tag() -> &'static str {
71215        "h4"
71216    }
71217    /// Sets an attribute of the element.
71218    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
71219    /// If the `alloc` feature is disabled, this function will silently fail.
71220    ///
71221    /// # Note
71222    /// This only works when the attribute is lowercase.
71223    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
71224        match name {
71225            "accesskey" => self.accesskey = Some(value.into()),
71226            "autocapitalize" => self.autocapitalize = Some(value.into()),
71227            "autofocus" => self.autofocus = Some(value.into()),
71228            "class" => self.class = Some(value.into()),
71229            "contenteditable" => self.contenteditable = Some(value.into()),
71230            "contextmenu" => self.contextmenu = Some(value.into()),
71231            "dir" => self.dir = Some(value.into()),
71232            "draggable" => self.draggable = Some(value.into()),
71233            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
71234            "exportparts" => self.exportparts = Some(value.into()),
71235            "hidden" => self.hidden = Some(value.into()),
71236            "id" => self.id = Some(value.into()),
71237            "inert" => self.inert = Some(value.into()),
71238            "inputmode" => self.inputmode = Some(value.into()),
71239            "is" => self.is = Some(value.into()),
71240            "itemid" => self.itemid = Some(value.into()),
71241            "itemprop" => self.itemprop = Some(value.into()),
71242            "itemref" => self.itemref = Some(value.into()),
71243            "itemscope" => self.itemscope = Some(value.into()),
71244            "itemtype" => self.itemtype = Some(value.into()),
71245            "lang" => self.lang = Some(value.into()),
71246            "nonce" => self.nonce = Some(value.into()),
71247            "part" => self.part = Some(value.into()),
71248            "popover" => self.popover = Some(value.into()),
71249            "role" => self.role = Some(value.into()),
71250            "slot" => self.slot = Some(value.into()),
71251            "spellcheck" => self.spellcheck = Some(value.into()),
71252            "style" => self.style = Some(value.into()),
71253            "tabindex" => self.tabindex = Some(value.into()),
71254            "title" => self.title = Some(value.into()),
71255            "translate" => self.translate = Some(value.into()),
71256            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
71257            #[cfg(feature = "alloc")]
71258            _ => {
71259                #[allow(clippy::useless_conversion)]
71260                self.extra.insert(name.into(), value.into());
71261            }
71262            #[cfg(not(feature = "alloc"))]
71263            _ => {}
71264        }
71265    }
71266}
71267/// The <strong><code>&lt;h1&gt;</code></strong> to <strong><code>&lt;h6&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> elements represent six levels of section headings. <code>&lt;h1&gt;</code> is the highest section level and <code>&lt;h6&gt;</code> is the lowest.
71268///
71269/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Heading_Elements>
71270
71271#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
71272pub struct H5<'life> {
71273    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
71274    ///   
71275    pub accesskey: core::option::Option<AttributeValue<'life>>,
71276    ///
71277    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
71278    ///     <ul>
71279    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
71280    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
71281    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
71282    ///       <li><code>characters</code>, all letters should default to uppercase</li>
71283    ///     </ul>
71284    ///   
71285    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
71286    ///
71287    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
71288    ///   
71289    pub autofocus: core::option::Option<AttributeValue<'life>>,
71290    ///
71291    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
71292    ///   
71293    pub class: core::option::Option<AttributeValue<'life>>,
71294    ///
71295    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
71296    ///     <ul>
71297    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
71298    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
71299    ///     </ul>
71300    ///   
71301    pub contenteditable: core::option::Option<AttributeValue<'life>>,
71302    ///
71303    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
71304    ///   
71305    pub contextmenu: core::option::Option<AttributeValue<'life>>,
71306    ///
71307    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
71308    ///   
71309    #[cfg(feature = "alloc")]
71310    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
71311    ///
71312    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
71313    ///     <ul>
71314    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
71315    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
71316    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
71317    ///     </ul>
71318    ///   
71319    pub dir: core::option::Option<AttributeValue<'life>>,
71320    ///
71321    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
71322    ///     <ul>
71323    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
71324    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
71325    ///     </ul>
71326    ///   
71327    pub draggable: core::option::Option<AttributeValue<'life>>,
71328    ///
71329    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
71330    ///   
71331    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
71332    ///
71333    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
71334    ///   
71335    pub exportparts: core::option::Option<AttributeValue<'life>>,
71336    /// /// Extra attributes of the element.
71337
71338    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
71339    #[cfg(feature = "alloc")]
71340    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
71341    ///
71342    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
71343    ///   
71344    pub hidden: core::option::Option<AttributeValue<'life>>,
71345    ///
71346    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
71347    ///   
71348    pub id: core::option::Option<AttributeValue<'life>>,
71349    ///
71350    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
71351    ///   
71352    pub inert: core::option::Option<AttributeValue<'life>>,
71353    ///
71354    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
71355    ///   
71356    pub inputmode: core::option::Option<AttributeValue<'life>>,
71357    ///
71358    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
71359    ///   
71360    pub is: core::option::Option<AttributeValue<'life>>,
71361    ///
71362    ///     <p>The unique, global identifier of an item.</p>
71363    ///   
71364    pub itemid: core::option::Option<AttributeValue<'life>>,
71365    ///
71366    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
71367    ///   
71368    pub itemprop: core::option::Option<AttributeValue<'life>>,
71369    ///
71370    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
71371    ///   
71372    pub itemref: core::option::Option<AttributeValue<'life>>,
71373    ///
71374    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
71375    ///   
71376    pub itemscope: core::option::Option<AttributeValue<'life>>,
71377    ///
71378    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
71379    ///   
71380    pub itemtype: core::option::Option<AttributeValue<'life>>,
71381    ///
71382    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
71383    ///   
71384    pub lang: core::option::Option<AttributeValue<'life>>,
71385    ///
71386    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
71387    ///   
71388    pub nonce: core::option::Option<AttributeValue<'life>>,
71389    ///
71390    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
71391    ///   
71392    pub part: core::option::Option<AttributeValue<'life>>,
71393    ///
71394    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
71395    ///   
71396    pub popover: core::option::Option<AttributeValue<'life>>,
71397    ///
71398    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
71399    ///   
71400    pub role: core::option::Option<AttributeValue<'life>>,
71401    ///
71402    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
71403    ///   
71404    pub slot: core::option::Option<AttributeValue<'life>>,
71405    ///
71406    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
71407    ///     <ul>
71408    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
71409    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
71410    ///     </ul>
71411    ///   
71412    pub spellcheck: core::option::Option<AttributeValue<'life>>,
71413    ///
71414    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
71415    ///   
71416    pub style: core::option::Option<AttributeValue<'life>>,
71417    ///
71418    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
71419    ///     <ul>
71420    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
71421    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
71422    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
71423    ///     </ul>
71424    ///   
71425    pub tabindex: core::option::Option<AttributeValue<'life>>,
71426    ///
71427    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
71428    ///   
71429    pub title: core::option::Option<AttributeValue<'life>>,
71430    ///
71431    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
71432    ///     <ul>
71433    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
71434    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
71435    ///     </ul>
71436    ///   
71437    pub translate: core::option::Option<AttributeValue<'life>>,
71438    ///
71439    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
71440    ///     <ul>
71441    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
71442    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
71443    ///     </ul>
71444    ///   
71445    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
71446}
71447#[allow(deprecated)]
71448
71449impl<'life> H5<'life> {
71450    /// Get the tag name of the element.
71451    /// This is the same as the name of the struct, in kebab-case.
71452    pub fn tag() -> &'static str {
71453        "h5"
71454    }
71455    /// Sets an attribute of the element.
71456    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
71457    /// If the `alloc` feature is disabled, this function will silently fail.
71458    ///
71459    /// # Note
71460    /// This only works when the attribute is lowercase.
71461    pub fn set_attr(
71462        &mut self,
71463        name: &'life str,
71464        value: impl core::convert::Into<AttributeValue<'life>>,
71465    ) {
71466        match name {
71467            "accesskey" => self.accesskey = Some(value.into()),
71468            "autocapitalize" => self.autocapitalize = Some(value.into()),
71469            "autofocus" => self.autofocus = Some(value.into()),
71470            "class" => self.class = Some(value.into()),
71471            "contenteditable" => self.contenteditable = Some(value.into()),
71472            "contextmenu" => self.contextmenu = Some(value.into()),
71473            "dir" => self.dir = Some(value.into()),
71474            "draggable" => self.draggable = Some(value.into()),
71475            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
71476            "exportparts" => self.exportparts = Some(value.into()),
71477            "hidden" => self.hidden = Some(value.into()),
71478            "id" => self.id = Some(value.into()),
71479            "inert" => self.inert = Some(value.into()),
71480            "inputmode" => self.inputmode = Some(value.into()),
71481            "is" => self.is = Some(value.into()),
71482            "itemid" => self.itemid = Some(value.into()),
71483            "itemprop" => self.itemprop = Some(value.into()),
71484            "itemref" => self.itemref = Some(value.into()),
71485            "itemscope" => self.itemscope = Some(value.into()),
71486            "itemtype" => self.itemtype = Some(value.into()),
71487            "lang" => self.lang = Some(value.into()),
71488            "nonce" => self.nonce = Some(value.into()),
71489            "part" => self.part = Some(value.into()),
71490            "popover" => self.popover = Some(value.into()),
71491            "role" => self.role = Some(value.into()),
71492            "slot" => self.slot = Some(value.into()),
71493            "spellcheck" => self.spellcheck = Some(value.into()),
71494            "style" => self.style = Some(value.into()),
71495            "tabindex" => self.tabindex = Some(value.into()),
71496            "title" => self.title = Some(value.into()),
71497            "translate" => self.translate = Some(value.into()),
71498            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
71499            #[cfg(feature = "alloc")]
71500            _ => {
71501                #[allow(clippy::useless_conversion)]
71502                self.extra.insert(name.into(), value.into());
71503            }
71504            #[cfg(not(feature = "alloc"))]
71505            _ => {}
71506        }
71507    }
71508}
71509/// The <strong><code>&lt;h1&gt;</code></strong> to <strong><code>&lt;h6&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> elements represent six levels of section headings. <code>&lt;h1&gt;</code> is the highest section level and <code>&lt;h6&gt;</code> is the lowest.
71510///
71511/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Heading_Elements>
71512
71513#[cfg(feature = "alloc")]
71514#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
71515pub struct H5Owned {
71516    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
71517    ///   
71518    pub accesskey: core::option::Option<AttributeValueOwned>,
71519    ///
71520    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
71521    ///     <ul>
71522    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
71523    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
71524    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
71525    ///       <li><code>characters</code>, all letters should default to uppercase</li>
71526    ///     </ul>
71527    ///   
71528    pub autocapitalize: core::option::Option<AttributeValueOwned>,
71529    ///
71530    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
71531    ///   
71532    pub autofocus: core::option::Option<AttributeValueOwned>,
71533    ///
71534    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
71535    ///   
71536    pub class: core::option::Option<AttributeValueOwned>,
71537    ///
71538    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
71539    ///     <ul>
71540    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
71541    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
71542    ///     </ul>
71543    ///   
71544    pub contenteditable: core::option::Option<AttributeValueOwned>,
71545    ///
71546    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
71547    ///   
71548    pub contextmenu: core::option::Option<AttributeValueOwned>,
71549    ///
71550    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
71551    ///   
71552    #[cfg(feature = "alloc")]
71553    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
71554    ///
71555    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
71556    ///     <ul>
71557    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
71558    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
71559    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
71560    ///     </ul>
71561    ///   
71562    pub dir: core::option::Option<AttributeValueOwned>,
71563    ///
71564    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
71565    ///     <ul>
71566    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
71567    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
71568    ///     </ul>
71569    ///   
71570    pub draggable: core::option::Option<AttributeValueOwned>,
71571    ///
71572    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
71573    ///   
71574    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
71575    ///
71576    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
71577    ///   
71578    pub exportparts: core::option::Option<AttributeValueOwned>,
71579    /// /// Extra attributes of the element.
71580
71581    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
71582    #[cfg(feature = "alloc")]
71583    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
71584    ///
71585    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
71586    ///   
71587    pub hidden: core::option::Option<AttributeValueOwned>,
71588    ///
71589    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
71590    ///   
71591    pub id: core::option::Option<AttributeValueOwned>,
71592    ///
71593    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
71594    ///   
71595    pub inert: core::option::Option<AttributeValueOwned>,
71596    ///
71597    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
71598    ///   
71599    pub inputmode: core::option::Option<AttributeValueOwned>,
71600    ///
71601    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
71602    ///   
71603    pub is: core::option::Option<AttributeValueOwned>,
71604    ///
71605    ///     <p>The unique, global identifier of an item.</p>
71606    ///   
71607    pub itemid: core::option::Option<AttributeValueOwned>,
71608    ///
71609    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
71610    ///   
71611    pub itemprop: core::option::Option<AttributeValueOwned>,
71612    ///
71613    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
71614    ///   
71615    pub itemref: core::option::Option<AttributeValueOwned>,
71616    ///
71617    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
71618    ///   
71619    pub itemscope: core::option::Option<AttributeValueOwned>,
71620    ///
71621    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
71622    ///   
71623    pub itemtype: core::option::Option<AttributeValueOwned>,
71624    ///
71625    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
71626    ///   
71627    pub lang: core::option::Option<AttributeValueOwned>,
71628    ///
71629    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
71630    ///   
71631    pub nonce: core::option::Option<AttributeValueOwned>,
71632    ///
71633    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
71634    ///   
71635    pub part: core::option::Option<AttributeValueOwned>,
71636    ///
71637    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
71638    ///   
71639    pub popover: core::option::Option<AttributeValueOwned>,
71640    ///
71641    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
71642    ///   
71643    pub role: core::option::Option<AttributeValueOwned>,
71644    ///
71645    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
71646    ///   
71647    pub slot: core::option::Option<AttributeValueOwned>,
71648    ///
71649    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
71650    ///     <ul>
71651    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
71652    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
71653    ///     </ul>
71654    ///   
71655    pub spellcheck: core::option::Option<AttributeValueOwned>,
71656    ///
71657    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
71658    ///   
71659    pub style: core::option::Option<AttributeValueOwned>,
71660    ///
71661    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
71662    ///     <ul>
71663    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
71664    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
71665    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
71666    ///     </ul>
71667    ///   
71668    pub tabindex: core::option::Option<AttributeValueOwned>,
71669    ///
71670    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
71671    ///   
71672    pub title: core::option::Option<AttributeValueOwned>,
71673    ///
71674    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
71675    ///     <ul>
71676    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
71677    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
71678    ///     </ul>
71679    ///   
71680    pub translate: core::option::Option<AttributeValueOwned>,
71681    ///
71682    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
71683    ///     <ul>
71684    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
71685    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
71686    ///     </ul>
71687    ///   
71688    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
71689}
71690#[allow(deprecated)]
71691#[cfg(feature = "alloc")]
71692impl H5Owned {
71693    /// Get the tag name of the element.
71694    /// This is the same as the name of the struct, in kebab-case.
71695    pub fn tag() -> &'static str {
71696        "h5"
71697    }
71698    /// Sets an attribute of the element.
71699    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
71700    /// If the `alloc` feature is disabled, this function will silently fail.
71701    ///
71702    /// # Note
71703    /// This only works when the attribute is lowercase.
71704    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
71705        match name {
71706            "accesskey" => self.accesskey = Some(value.into()),
71707            "autocapitalize" => self.autocapitalize = Some(value.into()),
71708            "autofocus" => self.autofocus = Some(value.into()),
71709            "class" => self.class = Some(value.into()),
71710            "contenteditable" => self.contenteditable = Some(value.into()),
71711            "contextmenu" => self.contextmenu = Some(value.into()),
71712            "dir" => self.dir = Some(value.into()),
71713            "draggable" => self.draggable = Some(value.into()),
71714            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
71715            "exportparts" => self.exportparts = Some(value.into()),
71716            "hidden" => self.hidden = Some(value.into()),
71717            "id" => self.id = Some(value.into()),
71718            "inert" => self.inert = Some(value.into()),
71719            "inputmode" => self.inputmode = Some(value.into()),
71720            "is" => self.is = Some(value.into()),
71721            "itemid" => self.itemid = Some(value.into()),
71722            "itemprop" => self.itemprop = Some(value.into()),
71723            "itemref" => self.itemref = Some(value.into()),
71724            "itemscope" => self.itemscope = Some(value.into()),
71725            "itemtype" => self.itemtype = Some(value.into()),
71726            "lang" => self.lang = Some(value.into()),
71727            "nonce" => self.nonce = Some(value.into()),
71728            "part" => self.part = Some(value.into()),
71729            "popover" => self.popover = Some(value.into()),
71730            "role" => self.role = Some(value.into()),
71731            "slot" => self.slot = Some(value.into()),
71732            "spellcheck" => self.spellcheck = Some(value.into()),
71733            "style" => self.style = Some(value.into()),
71734            "tabindex" => self.tabindex = Some(value.into()),
71735            "title" => self.title = Some(value.into()),
71736            "translate" => self.translate = Some(value.into()),
71737            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
71738            #[cfg(feature = "alloc")]
71739            _ => {
71740                #[allow(clippy::useless_conversion)]
71741                self.extra.insert(name.into(), value.into());
71742            }
71743            #[cfg(not(feature = "alloc"))]
71744            _ => {}
71745        }
71746    }
71747}
71748/// The <strong><code>&lt;h1&gt;</code></strong> to <strong><code>&lt;h6&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> elements represent six levels of section headings. <code>&lt;h1&gt;</code> is the highest section level and <code>&lt;h6&gt;</code> is the lowest.
71749///
71750/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Heading_Elements>
71751
71752#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
71753pub struct H6<'life> {
71754    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
71755    ///   
71756    pub accesskey: core::option::Option<AttributeValue<'life>>,
71757    ///
71758    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
71759    ///     <ul>
71760    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
71761    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
71762    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
71763    ///       <li><code>characters</code>, all letters should default to uppercase</li>
71764    ///     </ul>
71765    ///   
71766    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
71767    ///
71768    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
71769    ///   
71770    pub autofocus: core::option::Option<AttributeValue<'life>>,
71771    ///
71772    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
71773    ///   
71774    pub class: core::option::Option<AttributeValue<'life>>,
71775    ///
71776    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
71777    ///     <ul>
71778    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
71779    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
71780    ///     </ul>
71781    ///   
71782    pub contenteditable: core::option::Option<AttributeValue<'life>>,
71783    ///
71784    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
71785    ///   
71786    pub contextmenu: core::option::Option<AttributeValue<'life>>,
71787    ///
71788    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
71789    ///   
71790    #[cfg(feature = "alloc")]
71791    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
71792    ///
71793    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
71794    ///     <ul>
71795    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
71796    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
71797    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
71798    ///     </ul>
71799    ///   
71800    pub dir: core::option::Option<AttributeValue<'life>>,
71801    ///
71802    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
71803    ///     <ul>
71804    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
71805    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
71806    ///     </ul>
71807    ///   
71808    pub draggable: core::option::Option<AttributeValue<'life>>,
71809    ///
71810    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
71811    ///   
71812    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
71813    ///
71814    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
71815    ///   
71816    pub exportparts: core::option::Option<AttributeValue<'life>>,
71817    /// /// Extra attributes of the element.
71818
71819    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
71820    #[cfg(feature = "alloc")]
71821    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
71822    ///
71823    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
71824    ///   
71825    pub hidden: core::option::Option<AttributeValue<'life>>,
71826    ///
71827    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
71828    ///   
71829    pub id: core::option::Option<AttributeValue<'life>>,
71830    ///
71831    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
71832    ///   
71833    pub inert: core::option::Option<AttributeValue<'life>>,
71834    ///
71835    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
71836    ///   
71837    pub inputmode: core::option::Option<AttributeValue<'life>>,
71838    ///
71839    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
71840    ///   
71841    pub is: core::option::Option<AttributeValue<'life>>,
71842    ///
71843    ///     <p>The unique, global identifier of an item.</p>
71844    ///   
71845    pub itemid: core::option::Option<AttributeValue<'life>>,
71846    ///
71847    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
71848    ///   
71849    pub itemprop: core::option::Option<AttributeValue<'life>>,
71850    ///
71851    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
71852    ///   
71853    pub itemref: core::option::Option<AttributeValue<'life>>,
71854    ///
71855    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
71856    ///   
71857    pub itemscope: core::option::Option<AttributeValue<'life>>,
71858    ///
71859    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
71860    ///   
71861    pub itemtype: core::option::Option<AttributeValue<'life>>,
71862    ///
71863    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
71864    ///   
71865    pub lang: core::option::Option<AttributeValue<'life>>,
71866    ///
71867    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
71868    ///   
71869    pub nonce: core::option::Option<AttributeValue<'life>>,
71870    ///
71871    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
71872    ///   
71873    pub part: core::option::Option<AttributeValue<'life>>,
71874    ///
71875    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
71876    ///   
71877    pub popover: core::option::Option<AttributeValue<'life>>,
71878    ///
71879    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
71880    ///   
71881    pub role: core::option::Option<AttributeValue<'life>>,
71882    ///
71883    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
71884    ///   
71885    pub slot: core::option::Option<AttributeValue<'life>>,
71886    ///
71887    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
71888    ///     <ul>
71889    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
71890    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
71891    ///     </ul>
71892    ///   
71893    pub spellcheck: core::option::Option<AttributeValue<'life>>,
71894    ///
71895    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
71896    ///   
71897    pub style: core::option::Option<AttributeValue<'life>>,
71898    ///
71899    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
71900    ///     <ul>
71901    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
71902    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
71903    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
71904    ///     </ul>
71905    ///   
71906    pub tabindex: core::option::Option<AttributeValue<'life>>,
71907    ///
71908    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
71909    ///   
71910    pub title: core::option::Option<AttributeValue<'life>>,
71911    ///
71912    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
71913    ///     <ul>
71914    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
71915    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
71916    ///     </ul>
71917    ///   
71918    pub translate: core::option::Option<AttributeValue<'life>>,
71919    ///
71920    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
71921    ///     <ul>
71922    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
71923    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
71924    ///     </ul>
71925    ///   
71926    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
71927}
71928#[allow(deprecated)]
71929
71930impl<'life> H6<'life> {
71931    /// Get the tag name of the element.
71932    /// This is the same as the name of the struct, in kebab-case.
71933    pub fn tag() -> &'static str {
71934        "h6"
71935    }
71936    /// Sets an attribute of the element.
71937    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
71938    /// If the `alloc` feature is disabled, this function will silently fail.
71939    ///
71940    /// # Note
71941    /// This only works when the attribute is lowercase.
71942    pub fn set_attr(
71943        &mut self,
71944        name: &'life str,
71945        value: impl core::convert::Into<AttributeValue<'life>>,
71946    ) {
71947        match name {
71948            "accesskey" => self.accesskey = Some(value.into()),
71949            "autocapitalize" => self.autocapitalize = Some(value.into()),
71950            "autofocus" => self.autofocus = Some(value.into()),
71951            "class" => self.class = Some(value.into()),
71952            "contenteditable" => self.contenteditable = Some(value.into()),
71953            "contextmenu" => self.contextmenu = Some(value.into()),
71954            "dir" => self.dir = Some(value.into()),
71955            "draggable" => self.draggable = Some(value.into()),
71956            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
71957            "exportparts" => self.exportparts = Some(value.into()),
71958            "hidden" => self.hidden = Some(value.into()),
71959            "id" => self.id = Some(value.into()),
71960            "inert" => self.inert = Some(value.into()),
71961            "inputmode" => self.inputmode = Some(value.into()),
71962            "is" => self.is = Some(value.into()),
71963            "itemid" => self.itemid = Some(value.into()),
71964            "itemprop" => self.itemprop = Some(value.into()),
71965            "itemref" => self.itemref = Some(value.into()),
71966            "itemscope" => self.itemscope = Some(value.into()),
71967            "itemtype" => self.itemtype = Some(value.into()),
71968            "lang" => self.lang = Some(value.into()),
71969            "nonce" => self.nonce = Some(value.into()),
71970            "part" => self.part = Some(value.into()),
71971            "popover" => self.popover = Some(value.into()),
71972            "role" => self.role = Some(value.into()),
71973            "slot" => self.slot = Some(value.into()),
71974            "spellcheck" => self.spellcheck = Some(value.into()),
71975            "style" => self.style = Some(value.into()),
71976            "tabindex" => self.tabindex = Some(value.into()),
71977            "title" => self.title = Some(value.into()),
71978            "translate" => self.translate = Some(value.into()),
71979            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
71980            #[cfg(feature = "alloc")]
71981            _ => {
71982                #[allow(clippy::useless_conversion)]
71983                self.extra.insert(name.into(), value.into());
71984            }
71985            #[cfg(not(feature = "alloc"))]
71986            _ => {}
71987        }
71988    }
71989}
71990/// The <strong><code>&lt;h1&gt;</code></strong> to <strong><code>&lt;h6&gt;</code></strong> <a href="/en-US/docs/Web/HTML">HTML</a> elements represent six levels of section headings. <code>&lt;h1&gt;</code> is the highest section level and <code>&lt;h6&gt;</code> is the lowest.
71991///
71992/// More information: <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Heading_Elements>
71993
71994#[cfg(feature = "alloc")]
71995#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
71996pub struct H6Owned {
71997    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
71998    ///   
71999    pub accesskey: core::option::Option<AttributeValueOwned>,
72000    ///
72001    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
72002    ///     <ul>
72003    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
72004    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
72005    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
72006    ///       <li><code>characters</code>, all letters should default to uppercase</li>
72007    ///     </ul>
72008    ///   
72009    pub autocapitalize: core::option::Option<AttributeValueOwned>,
72010    ///
72011    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
72012    ///   
72013    pub autofocus: core::option::Option<AttributeValueOwned>,
72014    ///
72015    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
72016    ///   
72017    pub class: core::option::Option<AttributeValueOwned>,
72018    ///
72019    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
72020    ///     <ul>
72021    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
72022    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
72023    ///     </ul>
72024    ///   
72025    pub contenteditable: core::option::Option<AttributeValueOwned>,
72026    ///
72027    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
72028    ///   
72029    pub contextmenu: core::option::Option<AttributeValueOwned>,
72030    ///
72031    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
72032    ///   
72033    #[cfg(feature = "alloc")]
72034    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
72035    ///
72036    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
72037    ///     <ul>
72038    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
72039    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
72040    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
72041    ///     </ul>
72042    ///   
72043    pub dir: core::option::Option<AttributeValueOwned>,
72044    ///
72045    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
72046    ///     <ul>
72047    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
72048    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
72049    ///     </ul>
72050    ///   
72051    pub draggable: core::option::Option<AttributeValueOwned>,
72052    ///
72053    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
72054    ///   
72055    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
72056    ///
72057    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
72058    ///   
72059    pub exportparts: core::option::Option<AttributeValueOwned>,
72060    /// /// Extra attributes of the element.
72061
72062    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
72063    #[cfg(feature = "alloc")]
72064    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
72065    ///
72066    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
72067    ///   
72068    pub hidden: core::option::Option<AttributeValueOwned>,
72069    ///
72070    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
72071    ///   
72072    pub id: core::option::Option<AttributeValueOwned>,
72073    ///
72074    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
72075    ///   
72076    pub inert: core::option::Option<AttributeValueOwned>,
72077    ///
72078    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
72079    ///   
72080    pub inputmode: core::option::Option<AttributeValueOwned>,
72081    ///
72082    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
72083    ///   
72084    pub is: core::option::Option<AttributeValueOwned>,
72085    ///
72086    ///     <p>The unique, global identifier of an item.</p>
72087    ///   
72088    pub itemid: core::option::Option<AttributeValueOwned>,
72089    ///
72090    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
72091    ///   
72092    pub itemprop: core::option::Option<AttributeValueOwned>,
72093    ///
72094    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
72095    ///   
72096    pub itemref: core::option::Option<AttributeValueOwned>,
72097    ///
72098    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
72099    ///   
72100    pub itemscope: core::option::Option<AttributeValueOwned>,
72101    ///
72102    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
72103    ///   
72104    pub itemtype: core::option::Option<AttributeValueOwned>,
72105    ///
72106    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
72107    ///   
72108    pub lang: core::option::Option<AttributeValueOwned>,
72109    ///
72110    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
72111    ///   
72112    pub nonce: core::option::Option<AttributeValueOwned>,
72113    ///
72114    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
72115    ///   
72116    pub part: core::option::Option<AttributeValueOwned>,
72117    ///
72118    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
72119    ///   
72120    pub popover: core::option::Option<AttributeValueOwned>,
72121    ///
72122    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
72123    ///   
72124    pub role: core::option::Option<AttributeValueOwned>,
72125    ///
72126    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
72127    ///   
72128    pub slot: core::option::Option<AttributeValueOwned>,
72129    ///
72130    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
72131    ///     <ul>
72132    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
72133    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
72134    ///     </ul>
72135    ///   
72136    pub spellcheck: core::option::Option<AttributeValueOwned>,
72137    ///
72138    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
72139    ///   
72140    pub style: core::option::Option<AttributeValueOwned>,
72141    ///
72142    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
72143    ///     <ul>
72144    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
72145    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
72146    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
72147    ///     </ul>
72148    ///   
72149    pub tabindex: core::option::Option<AttributeValueOwned>,
72150    ///
72151    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
72152    ///   
72153    pub title: core::option::Option<AttributeValueOwned>,
72154    ///
72155    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
72156    ///     <ul>
72157    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
72158    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
72159    ///     </ul>
72160    ///   
72161    pub translate: core::option::Option<AttributeValueOwned>,
72162    ///
72163    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
72164    ///     <ul>
72165    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
72166    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
72167    ///     </ul>
72168    ///   
72169    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
72170}
72171#[allow(deprecated)]
72172#[cfg(feature = "alloc")]
72173impl H6Owned {
72174    /// Get the tag name of the element.
72175    /// This is the same as the name of the struct, in kebab-case.
72176    pub fn tag() -> &'static str {
72177        "h6"
72178    }
72179    /// Sets an attribute of the element.
72180    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
72181    /// If the `alloc` feature is disabled, this function will silently fail.
72182    ///
72183    /// # Note
72184    /// This only works when the attribute is lowercase.
72185    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
72186        match name {
72187            "accesskey" => self.accesskey = Some(value.into()),
72188            "autocapitalize" => self.autocapitalize = Some(value.into()),
72189            "autofocus" => self.autofocus = Some(value.into()),
72190            "class" => self.class = Some(value.into()),
72191            "contenteditable" => self.contenteditable = Some(value.into()),
72192            "contextmenu" => self.contextmenu = Some(value.into()),
72193            "dir" => self.dir = Some(value.into()),
72194            "draggable" => self.draggable = Some(value.into()),
72195            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
72196            "exportparts" => self.exportparts = Some(value.into()),
72197            "hidden" => self.hidden = Some(value.into()),
72198            "id" => self.id = Some(value.into()),
72199            "inert" => self.inert = Some(value.into()),
72200            "inputmode" => self.inputmode = Some(value.into()),
72201            "is" => self.is = Some(value.into()),
72202            "itemid" => self.itemid = Some(value.into()),
72203            "itemprop" => self.itemprop = Some(value.into()),
72204            "itemref" => self.itemref = Some(value.into()),
72205            "itemscope" => self.itemscope = Some(value.into()),
72206            "itemtype" => self.itemtype = Some(value.into()),
72207            "lang" => self.lang = Some(value.into()),
72208            "nonce" => self.nonce = Some(value.into()),
72209            "part" => self.part = Some(value.into()),
72210            "popover" => self.popover = Some(value.into()),
72211            "role" => self.role = Some(value.into()),
72212            "slot" => self.slot = Some(value.into()),
72213            "spellcheck" => self.spellcheck = Some(value.into()),
72214            "style" => self.style = Some(value.into()),
72215            "tabindex" => self.tabindex = Some(value.into()),
72216            "title" => self.title = Some(value.into()),
72217            "translate" => self.translate = Some(value.into()),
72218            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
72219            #[cfg(feature = "alloc")]
72220            _ => {
72221                #[allow(clippy::useless_conversion)]
72222                self.extra.insert(name.into(), value.into());
72223            }
72224            #[cfg(not(feature = "alloc"))]
72225            _ => {}
72226        }
72227    }
72228}
72229/// An unknown element.
72230
72231#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
72232pub struct Unknown<'life> {
72233    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
72234    ///   
72235    pub accesskey: core::option::Option<AttributeValue<'life>>,
72236    ///
72237    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
72238    ///     <ul>
72239    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
72240    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
72241    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
72242    ///       <li><code>characters</code>, all letters should default to uppercase</li>
72243    ///     </ul>
72244    ///   
72245    pub autocapitalize: core::option::Option<AttributeValue<'life>>,
72246    ///
72247    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
72248    ///   
72249    pub autofocus: core::option::Option<AttributeValue<'life>>,
72250    ///
72251    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
72252    ///   
72253    pub class: core::option::Option<AttributeValue<'life>>,
72254    ///
72255    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
72256    ///     <ul>
72257    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
72258    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
72259    ///     </ul>
72260    ///   
72261    pub contenteditable: core::option::Option<AttributeValue<'life>>,
72262    ///
72263    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
72264    ///   
72265    pub contextmenu: core::option::Option<AttributeValue<'life>>,
72266    ///
72267    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
72268    ///   
72269    #[cfg(feature = "alloc")]
72270    pub data: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
72271    ///
72272    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
72273    ///     <ul>
72274    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
72275    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
72276    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
72277    ///     </ul>
72278    ///   
72279    pub dir: core::option::Option<AttributeValue<'life>>,
72280    ///
72281    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
72282    ///     <ul>
72283    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
72284    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
72285    ///     </ul>
72286    ///   
72287    pub draggable: core::option::Option<AttributeValue<'life>>,
72288    ///
72289    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
72290    ///   
72291    pub enterkeyhint: core::option::Option<AttributeValue<'life>>,
72292    ///
72293    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
72294    ///   
72295    pub exportparts: core::option::Option<AttributeValue<'life>>,
72296    /// /// Extra attributes of the element.
72297
72298    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
72299    #[cfg(feature = "alloc")]
72300    pub extra: alloc::collections::BTreeMap<&'life str, AttributeValue<'life>>,
72301    ///
72302    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
72303    ///   
72304    pub hidden: core::option::Option<AttributeValue<'life>>,
72305    ///
72306    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
72307    ///   
72308    pub id: core::option::Option<AttributeValue<'life>>,
72309    ///
72310    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
72311    ///   
72312    pub inert: core::option::Option<AttributeValue<'life>>,
72313    ///
72314    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
72315    ///   
72316    pub inputmode: core::option::Option<AttributeValue<'life>>,
72317    ///
72318    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
72319    ///   
72320    pub is: core::option::Option<AttributeValue<'life>>,
72321    ///
72322    ///     <p>The unique, global identifier of an item.</p>
72323    ///   
72324    pub itemid: core::option::Option<AttributeValue<'life>>,
72325    ///
72326    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
72327    ///   
72328    pub itemprop: core::option::Option<AttributeValue<'life>>,
72329    ///
72330    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
72331    ///   
72332    pub itemref: core::option::Option<AttributeValue<'life>>,
72333    ///
72334    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
72335    ///   
72336    pub itemscope: core::option::Option<AttributeValue<'life>>,
72337    ///
72338    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
72339    ///   
72340    pub itemtype: core::option::Option<AttributeValue<'life>>,
72341    ///
72342    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
72343    ///   
72344    pub lang: core::option::Option<AttributeValue<'life>>,
72345    ///
72346    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
72347    ///   
72348    pub nonce: core::option::Option<AttributeValue<'life>>,
72349    ///
72350    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
72351    ///   
72352    pub part: core::option::Option<AttributeValue<'life>>,
72353    ///
72354    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
72355    ///   
72356    pub popover: core::option::Option<AttributeValue<'life>>,
72357    ///
72358    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
72359    ///   
72360    pub role: core::option::Option<AttributeValue<'life>>,
72361    ///
72362    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
72363    ///   
72364    pub slot: core::option::Option<AttributeValue<'life>>,
72365    ///
72366    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
72367    ///     <ul>
72368    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
72369    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
72370    ///     </ul>
72371    ///   
72372    pub spellcheck: core::option::Option<AttributeValue<'life>>,
72373    ///
72374    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
72375    ///   
72376    pub style: core::option::Option<AttributeValue<'life>>,
72377    ///
72378    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
72379    ///     <ul>
72380    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
72381    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
72382    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
72383    ///     </ul>
72384    ///   
72385    pub tabindex: core::option::Option<AttributeValue<'life>>,
72386    /// The tag name of the element.
72387    pub tag_name: core::option::Option<AttributeValue<'life>>,
72388    ///
72389    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
72390    ///   
72391    pub title: core::option::Option<AttributeValue<'life>>,
72392    ///
72393    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
72394    ///     <ul>
72395    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
72396    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
72397    ///     </ul>
72398    ///   
72399    pub translate: core::option::Option<AttributeValue<'life>>,
72400    ///
72401    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
72402    ///     <ul>
72403    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
72404    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
72405    ///     </ul>
72406    ///   
72407    pub virtualkeyboardpolicy: core::option::Option<AttributeValue<'life>>,
72408}
72409#[allow(deprecated)]
72410
72411impl<'life> Unknown<'life> {
72412    /// Get the tag name of the element.
72413    /// This is the same as the name of the struct, in kebab-case.
72414    pub fn tag() -> &'static str {
72415        "unknown"
72416    }
72417    /// Sets an attribute of the element.
72418    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
72419    /// If the `alloc` feature is disabled, this function will silently fail.
72420    ///
72421    /// # Note
72422    /// This only works when the attribute is lowercase.
72423    pub fn set_attr(
72424        &mut self,
72425        name: &'life str,
72426        value: impl core::convert::Into<AttributeValue<'life>>,
72427    ) {
72428        match name {
72429            "accesskey" => self.accesskey = Some(value.into()),
72430            "autocapitalize" => self.autocapitalize = Some(value.into()),
72431            "autofocus" => self.autofocus = Some(value.into()),
72432            "class" => self.class = Some(value.into()),
72433            "contenteditable" => self.contenteditable = Some(value.into()),
72434            "contextmenu" => self.contextmenu = Some(value.into()),
72435            "dir" => self.dir = Some(value.into()),
72436            "draggable" => self.draggable = Some(value.into()),
72437            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
72438            "exportparts" => self.exportparts = Some(value.into()),
72439            "hidden" => self.hidden = Some(value.into()),
72440            "id" => self.id = Some(value.into()),
72441            "inert" => self.inert = Some(value.into()),
72442            "inputmode" => self.inputmode = Some(value.into()),
72443            "is" => self.is = Some(value.into()),
72444            "itemid" => self.itemid = Some(value.into()),
72445            "itemprop" => self.itemprop = Some(value.into()),
72446            "itemref" => self.itemref = Some(value.into()),
72447            "itemscope" => self.itemscope = Some(value.into()),
72448            "itemtype" => self.itemtype = Some(value.into()),
72449            "lang" => self.lang = Some(value.into()),
72450            "nonce" => self.nonce = Some(value.into()),
72451            "part" => self.part = Some(value.into()),
72452            "popover" => self.popover = Some(value.into()),
72453            "role" => self.role = Some(value.into()),
72454            "slot" => self.slot = Some(value.into()),
72455            "spellcheck" => self.spellcheck = Some(value.into()),
72456            "style" => self.style = Some(value.into()),
72457            "tabindex" => self.tabindex = Some(value.into()),
72458            "tag_name" => self.tag_name = Some(value.into()),
72459            "title" => self.title = Some(value.into()),
72460            "translate" => self.translate = Some(value.into()),
72461            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
72462            #[cfg(feature = "alloc")]
72463            _ => {
72464                #[allow(clippy::useless_conversion)]
72465                self.extra.insert(name.into(), value.into());
72466            }
72467            #[cfg(not(feature = "alloc"))]
72468            _ => {}
72469        }
72470    }
72471}
72472/// An unknown element.
72473
72474#[cfg(feature = "alloc")]
72475#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
72476pub struct UnknownOwned {
72477    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
72478    ///   
72479    pub accesskey: core::option::Option<AttributeValueOwned>,
72480    ///
72481    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
72482    ///     <ul>
72483    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
72484    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
72485    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
72486    ///       <li><code>characters</code>, all letters should default to uppercase</li>
72487    ///     </ul>
72488    ///   
72489    pub autocapitalize: core::option::Option<AttributeValueOwned>,
72490    ///
72491    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
72492    ///   
72493    pub autofocus: core::option::Option<AttributeValueOwned>,
72494    ///
72495    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
72496    ///   
72497    pub class: core::option::Option<AttributeValueOwned>,
72498    ///
72499    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
72500    ///     <ul>
72501    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
72502    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
72503    ///     </ul>
72504    ///   
72505    pub contenteditable: core::option::Option<AttributeValueOwned>,
72506    ///
72507    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
72508    ///   
72509    pub contextmenu: core::option::Option<AttributeValueOwned>,
72510    ///
72511    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
72512    ///   
72513    #[cfg(feature = "alloc")]
72514    pub data: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
72515    ///
72516    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
72517    ///     <ul>
72518    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
72519    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
72520    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
72521    ///     </ul>
72522    ///   
72523    pub dir: core::option::Option<AttributeValueOwned>,
72524    ///
72525    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
72526    ///     <ul>
72527    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
72528    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
72529    ///     </ul>
72530    ///   
72531    pub draggable: core::option::Option<AttributeValueOwned>,
72532    ///
72533    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
72534    ///   
72535    pub enterkeyhint: core::option::Option<AttributeValueOwned>,
72536    ///
72537    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
72538    ///   
72539    pub exportparts: core::option::Option<AttributeValueOwned>,
72540    /// /// Extra attributes of the element.
72541
72542    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
72543    #[cfg(feature = "alloc")]
72544    pub extra: alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned>,
72545    ///
72546    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
72547    ///   
72548    pub hidden: core::option::Option<AttributeValueOwned>,
72549    ///
72550    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
72551    ///   
72552    pub id: core::option::Option<AttributeValueOwned>,
72553    ///
72554    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
72555    ///   
72556    pub inert: core::option::Option<AttributeValueOwned>,
72557    ///
72558    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
72559    ///   
72560    pub inputmode: core::option::Option<AttributeValueOwned>,
72561    ///
72562    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
72563    ///   
72564    pub is: core::option::Option<AttributeValueOwned>,
72565    ///
72566    ///     <p>The unique, global identifier of an item.</p>
72567    ///   
72568    pub itemid: core::option::Option<AttributeValueOwned>,
72569    ///
72570    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
72571    ///   
72572    pub itemprop: core::option::Option<AttributeValueOwned>,
72573    ///
72574    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
72575    ///   
72576    pub itemref: core::option::Option<AttributeValueOwned>,
72577    ///
72578    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
72579    ///   
72580    pub itemscope: core::option::Option<AttributeValueOwned>,
72581    ///
72582    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
72583    ///   
72584    pub itemtype: core::option::Option<AttributeValueOwned>,
72585    ///
72586    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
72587    ///   
72588    pub lang: core::option::Option<AttributeValueOwned>,
72589    ///
72590    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
72591    ///   
72592    pub nonce: core::option::Option<AttributeValueOwned>,
72593    ///
72594    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
72595    ///   
72596    pub part: core::option::Option<AttributeValueOwned>,
72597    ///
72598    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
72599    ///   
72600    pub popover: core::option::Option<AttributeValueOwned>,
72601    ///
72602    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
72603    ///   
72604    pub role: core::option::Option<AttributeValueOwned>,
72605    ///
72606    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
72607    ///   
72608    pub slot: core::option::Option<AttributeValueOwned>,
72609    ///
72610    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
72611    ///     <ul>
72612    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
72613    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
72614    ///     </ul>
72615    ///   
72616    pub spellcheck: core::option::Option<AttributeValueOwned>,
72617    ///
72618    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
72619    ///   
72620    pub style: core::option::Option<AttributeValueOwned>,
72621    ///
72622    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
72623    ///     <ul>
72624    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
72625    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
72626    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
72627    ///     </ul>
72628    ///   
72629    pub tabindex: core::option::Option<AttributeValueOwned>,
72630    /// The tag name of the element.
72631    pub tag_name: core::option::Option<AttributeValueOwned>,
72632    ///
72633    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
72634    ///   
72635    pub title: core::option::Option<AttributeValueOwned>,
72636    ///
72637    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
72638    ///     <ul>
72639    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
72640    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
72641    ///     </ul>
72642    ///   
72643    pub translate: core::option::Option<AttributeValueOwned>,
72644    ///
72645    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
72646    ///     <ul>
72647    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
72648    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
72649    ///     </ul>
72650    ///   
72651    pub virtualkeyboardpolicy: core::option::Option<AttributeValueOwned>,
72652}
72653#[allow(deprecated)]
72654#[cfg(feature = "alloc")]
72655impl UnknownOwned {
72656    /// Get the tag name of the element.
72657    /// This is the same as the name of the struct, in kebab-case.
72658    pub fn tag() -> &'static str {
72659        "unknown"
72660    }
72661    /// Sets an attribute of the element.
72662    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
72663    /// If the `alloc` feature is disabled, this function will silently fail.
72664    ///
72665    /// # Note
72666    /// This only works when the attribute is lowercase.
72667    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
72668        match name {
72669            "accesskey" => self.accesskey = Some(value.into()),
72670            "autocapitalize" => self.autocapitalize = Some(value.into()),
72671            "autofocus" => self.autofocus = Some(value.into()),
72672            "class" => self.class = Some(value.into()),
72673            "contenteditable" => self.contenteditable = Some(value.into()),
72674            "contextmenu" => self.contextmenu = Some(value.into()),
72675            "dir" => self.dir = Some(value.into()),
72676            "draggable" => self.draggable = Some(value.into()),
72677            "enterkeyhint" => self.enterkeyhint = Some(value.into()),
72678            "exportparts" => self.exportparts = Some(value.into()),
72679            "hidden" => self.hidden = Some(value.into()),
72680            "id" => self.id = Some(value.into()),
72681            "inert" => self.inert = Some(value.into()),
72682            "inputmode" => self.inputmode = Some(value.into()),
72683            "is" => self.is = Some(value.into()),
72684            "itemid" => self.itemid = Some(value.into()),
72685            "itemprop" => self.itemprop = Some(value.into()),
72686            "itemref" => self.itemref = Some(value.into()),
72687            "itemscope" => self.itemscope = Some(value.into()),
72688            "itemtype" => self.itemtype = Some(value.into()),
72689            "lang" => self.lang = Some(value.into()),
72690            "nonce" => self.nonce = Some(value.into()),
72691            "part" => self.part = Some(value.into()),
72692            "popover" => self.popover = Some(value.into()),
72693            "role" => self.role = Some(value.into()),
72694            "slot" => self.slot = Some(value.into()),
72695            "spellcheck" => self.spellcheck = Some(value.into()),
72696            "style" => self.style = Some(value.into()),
72697            "tabindex" => self.tabindex = Some(value.into()),
72698            "tag_name" => self.tag_name = Some(value.into()),
72699            "title" => self.title = Some(value.into()),
72700            "translate" => self.translate = Some(value.into()),
72701            "virtualkeyboardpolicy" => self.virtualkeyboardpolicy = Some(value.into()),
72702            #[cfg(feature = "alloc")]
72703            _ => {
72704                #[allow(clippy::useless_conversion)]
72705                self.extra.insert(name.into(), value.into());
72706            }
72707            #[cfg(not(feature = "alloc"))]
72708            _ => {}
72709        }
72710    }
72711}
72712#[allow(deprecated)]
72713#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord)]
72714
72715pub enum Element<'life> {
72716    Html(Html<'life>),
72717    Base(Base<'life>),
72718    Head(Head<'life>),
72719    Link(Link<'life>),
72720    Meta(Meta<'life>),
72721    Style(Style<'life>),
72722    Title(Title<'life>),
72723    Body(Body<'life>),
72724    Address(Address<'life>),
72725    Article(Article<'life>),
72726    Aside(Aside<'life>),
72727    Footer(Footer<'life>),
72728    Header(Header<'life>),
72729    Hgroup(Hgroup<'life>),
72730    Main(Main<'life>),
72731    Nav(Nav<'life>),
72732    Section(Section<'life>),
72733    Blockquote(Blockquote<'life>),
72734    Dd(Dd<'life>),
72735    Div(Div<'life>),
72736    Dl(Dl<'life>),
72737    Dt(Dt<'life>),
72738    Figcaption(Figcaption<'life>),
72739    Figure(Figure<'life>),
72740    Hr(Hr<'life>),
72741    Li(Li<'life>),
72742    Menu(Menu<'life>),
72743    Ol(Ol<'life>),
72744    P(P<'life>),
72745    Pre(Pre<'life>),
72746    Ul(Ul<'life>),
72747    A(A<'life>),
72748    Abbr(Abbr<'life>),
72749    B(B<'life>),
72750    Bdi(Bdi<'life>),
72751    Bdo(Bdo<'life>),
72752    Br(Br<'life>),
72753    Cite(Cite<'life>),
72754    Code(Code<'life>),
72755    Data(Data<'life>),
72756    Dfn(Dfn<'life>),
72757    Em(Em<'life>),
72758    I(I<'life>),
72759    Kbd(Kbd<'life>),
72760    Mark(Mark<'life>),
72761    Q(Q<'life>),
72762    Rp(Rp<'life>),
72763    Rt(Rt<'life>),
72764    Ruby(Ruby<'life>),
72765    S(S<'life>),
72766    Samp(Samp<'life>),
72767    Small(Small<'life>),
72768    Span(Span<'life>),
72769    Strong(Strong<'life>),
72770    Sub(Sub<'life>),
72771    Sup(Sup<'life>),
72772    Time(Time<'life>),
72773    U(U<'life>),
72774    Var(Var<'life>),
72775    Wbr(Wbr<'life>),
72776    Area(Area<'life>),
72777    Audio(Audio<'life>),
72778    Img(Img<'life>),
72779    Map(Map<'life>),
72780    Track(Track<'life>),
72781    Video(Video<'life>),
72782    Embed(Embed<'life>),
72783    Iframe(Iframe<'life>),
72784    Object(Object<'life>),
72785    Picture(Picture<'life>),
72786    Portal(Portal<'life>),
72787    Source(Source<'life>),
72788    Canvas(Canvas<'life>),
72789    Noscript(Noscript<'life>),
72790    Script(Script<'life>),
72791    Del(Del<'life>),
72792    Ins(Ins<'life>),
72793    Caption(Caption<'life>),
72794    Col(Col<'life>),
72795    Colgroup(Colgroup<'life>),
72796    Table(Table<'life>),
72797    Tbody(Tbody<'life>),
72798    Td(Td<'life>),
72799    Tfoot(Tfoot<'life>),
72800    Th(Th<'life>),
72801    Thead(Thead<'life>),
72802    Tr(Tr<'life>),
72803    Button(Button<'life>),
72804    Datalist(Datalist<'life>),
72805    Fieldset(Fieldset<'life>),
72806    Form(Form<'life>),
72807    Input(Input<'life>),
72808    Label(Label<'life>),
72809    Legend(Legend<'life>),
72810    Meter(Meter<'life>),
72811    Optgroup(Optgroup<'life>),
72812    Option(Option<'life>),
72813    Output(Output<'life>),
72814    Progress(Progress<'life>),
72815    Select(Select<'life>),
72816    Textarea(Textarea<'life>),
72817    Details(Details<'life>),
72818    Dialog(Dialog<'life>),
72819    Summary(Summary<'life>),
72820    Slot(Slot<'life>),
72821    Template(Template<'life>),
72822    #[deprecated]
72823    Acronym(Acronym<'life>),
72824    #[deprecated]
72825    Applet(Applet<'life>),
72826    #[deprecated]
72827    Bgsound(Bgsound<'life>),
72828    #[deprecated]
72829    Big(Big<'life>),
72830    #[deprecated]
72831    Blink(Blink<'life>),
72832    #[deprecated]
72833    Center(Center<'life>),
72834    #[deprecated]
72835    Dir(Dir<'life>),
72836    #[deprecated]
72837    Font(Font<'life>),
72838    #[deprecated]
72839    Frame(Frame<'life>),
72840    #[deprecated]
72841    Frameset(Frameset<'life>),
72842    #[deprecated]
72843    Image(Image<'life>),
72844    #[deprecated]
72845    Keygen(Keygen<'life>),
72846    #[deprecated]
72847    Marquee(Marquee<'life>),
72848    #[deprecated]
72849    Menuitem(Menuitem<'life>),
72850    #[deprecated]
72851    Nobr(Nobr<'life>),
72852    #[deprecated]
72853    Noembed(Noembed<'life>),
72854    #[deprecated]
72855    Noframes(Noframes<'life>),
72856    #[deprecated]
72857    Param(Param<'life>),
72858    #[deprecated]
72859    Plaintext(Plaintext<'life>),
72860    #[deprecated]
72861    Rb(Rb<'life>),
72862    #[deprecated]
72863    Rtc(Rtc<'life>),
72864    #[deprecated]
72865    Spacer(Spacer<'life>),
72866    #[deprecated]
72867    Strike(Strike<'life>),
72868    #[deprecated]
72869    Tt(Tt<'life>),
72870    #[deprecated]
72871    Xmp(Xmp<'life>),
72872    H1(H1<'life>),
72873    H2(H2<'life>),
72874    H3(H3<'life>),
72875    H4(H4<'life>),
72876    H5(H5<'life>),
72877    H6(H6<'life>),
72878    Unknown(Unknown<'life>),
72879}
72880#[allow(deprecated)]
72881
72882impl<'life> Element<'life> {
72883    /// Gets an element from a lowercase tag name.
72884    pub fn from_tag(tag: &str) -> Self {
72885        match tag {
72886            "html" => Self::Html(Html::default()),
72887            "base" => Self::Base(Base::default()),
72888            "head" => Self::Head(Head::default()),
72889            "link" => Self::Link(Link::default()),
72890            "meta" => Self::Meta(Meta::default()),
72891            "style" => Self::Style(Style::default()),
72892            "title" => Self::Title(Title::default()),
72893            "body" => Self::Body(Body::default()),
72894            "address" => Self::Address(Address::default()),
72895            "article" => Self::Article(Article::default()),
72896            "aside" => Self::Aside(Aside::default()),
72897            "footer" => Self::Footer(Footer::default()),
72898            "header" => Self::Header(Header::default()),
72899            "hgroup" => Self::Hgroup(Hgroup::default()),
72900            "main" => Self::Main(Main::default()),
72901            "nav" => Self::Nav(Nav::default()),
72902            "section" => Self::Section(Section::default()),
72903            "blockquote" => Self::Blockquote(Blockquote::default()),
72904            "dd" => Self::Dd(Dd::default()),
72905            "div" => Self::Div(Div::default()),
72906            "dl" => Self::Dl(Dl::default()),
72907            "dt" => Self::Dt(Dt::default()),
72908            "figcaption" => Self::Figcaption(Figcaption::default()),
72909            "figure" => Self::Figure(Figure::default()),
72910            "hr" => Self::Hr(Hr::default()),
72911            "li" => Self::Li(Li::default()),
72912            "menu" => Self::Menu(Menu::default()),
72913            "ol" => Self::Ol(Ol::default()),
72914            "p" => Self::P(P::default()),
72915            "pre" => Self::Pre(Pre::default()),
72916            "ul" => Self::Ul(Ul::default()),
72917            "a" => Self::A(A::default()),
72918            "abbr" => Self::Abbr(Abbr::default()),
72919            "b" => Self::B(B::default()),
72920            "bdi" => Self::Bdi(Bdi::default()),
72921            "bdo" => Self::Bdo(Bdo::default()),
72922            "br" => Self::Br(Br::default()),
72923            "cite" => Self::Cite(Cite::default()),
72924            "code" => Self::Code(Code::default()),
72925            "data" => Self::Data(Data::default()),
72926            "dfn" => Self::Dfn(Dfn::default()),
72927            "em" => Self::Em(Em::default()),
72928            "i" => Self::I(I::default()),
72929            "kbd" => Self::Kbd(Kbd::default()),
72930            "mark" => Self::Mark(Mark::default()),
72931            "q" => Self::Q(Q::default()),
72932            "rp" => Self::Rp(Rp::default()),
72933            "rt" => Self::Rt(Rt::default()),
72934            "ruby" => Self::Ruby(Ruby::default()),
72935            "s" => Self::S(S::default()),
72936            "samp" => Self::Samp(Samp::default()),
72937            "small" => Self::Small(Small::default()),
72938            "span" => Self::Span(Span::default()),
72939            "strong" => Self::Strong(Strong::default()),
72940            "sub" => Self::Sub(Sub::default()),
72941            "sup" => Self::Sup(Sup::default()),
72942            "time" => Self::Time(Time::default()),
72943            "u" => Self::U(U::default()),
72944            "var" => Self::Var(Var::default()),
72945            "wbr" => Self::Wbr(Wbr::default()),
72946            "area" => Self::Area(Area::default()),
72947            "audio" => Self::Audio(Audio::default()),
72948            "img" => Self::Img(Img::default()),
72949            "map" => Self::Map(Map::default()),
72950            "track" => Self::Track(Track::default()),
72951            "video" => Self::Video(Video::default()),
72952            "embed" => Self::Embed(Embed::default()),
72953            "iframe" => Self::Iframe(Iframe::default()),
72954            "object" => Self::Object(Object::default()),
72955            "picture" => Self::Picture(Picture::default()),
72956            "portal" => Self::Portal(Portal::default()),
72957            "source" => Self::Source(Source::default()),
72958            "canvas" => Self::Canvas(Canvas::default()),
72959            "noscript" => Self::Noscript(Noscript::default()),
72960            "script" => Self::Script(Script::default()),
72961            "del" => Self::Del(Del::default()),
72962            "ins" => Self::Ins(Ins::default()),
72963            "caption" => Self::Caption(Caption::default()),
72964            "col" => Self::Col(Col::default()),
72965            "colgroup" => Self::Colgroup(Colgroup::default()),
72966            "table" => Self::Table(Table::default()),
72967            "tbody" => Self::Tbody(Tbody::default()),
72968            "td" => Self::Td(Td::default()),
72969            "tfoot" => Self::Tfoot(Tfoot::default()),
72970            "th" => Self::Th(Th::default()),
72971            "thead" => Self::Thead(Thead::default()),
72972            "tr" => Self::Tr(Tr::default()),
72973            "button" => Self::Button(Button::default()),
72974            "datalist" => Self::Datalist(Datalist::default()),
72975            "fieldset" => Self::Fieldset(Fieldset::default()),
72976            "form" => Self::Form(Form::default()),
72977            "input" => Self::Input(Input::default()),
72978            "label" => Self::Label(Label::default()),
72979            "legend" => Self::Legend(Legend::default()),
72980            "meter" => Self::Meter(Meter::default()),
72981            "optgroup" => Self::Optgroup(Optgroup::default()),
72982            "option" => Self::Option(Option::default()),
72983            "output" => Self::Output(Output::default()),
72984            "progress" => Self::Progress(Progress::default()),
72985            "select" => Self::Select(Select::default()),
72986            "textarea" => Self::Textarea(Textarea::default()),
72987            "details" => Self::Details(Details::default()),
72988            "dialog" => Self::Dialog(Dialog::default()),
72989            "summary" => Self::Summary(Summary::default()),
72990            "slot" => Self::Slot(Slot::default()),
72991            "template" => Self::Template(Template::default()),
72992            "acronym" => Self::Acronym(Acronym::default()),
72993            "applet" => Self::Applet(Applet::default()),
72994            "bgsound" => Self::Bgsound(Bgsound::default()),
72995            "big" => Self::Big(Big::default()),
72996            "blink" => Self::Blink(Blink::default()),
72997            "center" => Self::Center(Center::default()),
72998            "dir" => Self::Dir(Dir::default()),
72999            "font" => Self::Font(Font::default()),
73000            "frame" => Self::Frame(Frame::default()),
73001            "frameset" => Self::Frameset(Frameset::default()),
73002            "image" => Self::Image(Image::default()),
73003            "keygen" => Self::Keygen(Keygen::default()),
73004            "marquee" => Self::Marquee(Marquee::default()),
73005            "menuitem" => Self::Menuitem(Menuitem::default()),
73006            "nobr" => Self::Nobr(Nobr::default()),
73007            "noembed" => Self::Noembed(Noembed::default()),
73008            "noframes" => Self::Noframes(Noframes::default()),
73009            "param" => Self::Param(Param::default()),
73010            "plaintext" => Self::Plaintext(Plaintext::default()),
73011            "rb" => Self::Rb(Rb::default()),
73012            "rtc" => Self::Rtc(Rtc::default()),
73013            "spacer" => Self::Spacer(Spacer::default()),
73014            "strike" => Self::Strike(Strike::default()),
73015            "tt" => Self::Tt(Tt::default()),
73016            "xmp" => Self::Xmp(Xmp::default()),
73017            "h1" => Self::H1(H1::default()),
73018            "h2" => Self::H2(H2::default()),
73019            "h3" => Self::H3(H3::default()),
73020            "h4" => Self::H4(H4::default()),
73021            "h5" => Self::H5(H5::default()),
73022            "h6" => Self::H6(H6::default()),
73023            "unknown" => Self::Unknown(Unknown::default()),
73024            _ => Self::default(),
73025        }
73026    }
73027    /// Gets the tag name of the element.
73028    pub fn tag(&self) -> &'static str {
73029        match self {
73030            Self::Html(_) => Html::tag(),
73031            Self::Base(_) => Base::tag(),
73032            Self::Head(_) => Head::tag(),
73033            Self::Link(_) => Link::tag(),
73034            Self::Meta(_) => Meta::tag(),
73035            Self::Style(_) => Style::tag(),
73036            Self::Title(_) => Title::tag(),
73037            Self::Body(_) => Body::tag(),
73038            Self::Address(_) => Address::tag(),
73039            Self::Article(_) => Article::tag(),
73040            Self::Aside(_) => Aside::tag(),
73041            Self::Footer(_) => Footer::tag(),
73042            Self::Header(_) => Header::tag(),
73043            Self::Hgroup(_) => Hgroup::tag(),
73044            Self::Main(_) => Main::tag(),
73045            Self::Nav(_) => Nav::tag(),
73046            Self::Section(_) => Section::tag(),
73047            Self::Blockquote(_) => Blockquote::tag(),
73048            Self::Dd(_) => Dd::tag(),
73049            Self::Div(_) => Div::tag(),
73050            Self::Dl(_) => Dl::tag(),
73051            Self::Dt(_) => Dt::tag(),
73052            Self::Figcaption(_) => Figcaption::tag(),
73053            Self::Figure(_) => Figure::tag(),
73054            Self::Hr(_) => Hr::tag(),
73055            Self::Li(_) => Li::tag(),
73056            Self::Menu(_) => Menu::tag(),
73057            Self::Ol(_) => Ol::tag(),
73058            Self::P(_) => P::tag(),
73059            Self::Pre(_) => Pre::tag(),
73060            Self::Ul(_) => Ul::tag(),
73061            Self::A(_) => A::tag(),
73062            Self::Abbr(_) => Abbr::tag(),
73063            Self::B(_) => B::tag(),
73064            Self::Bdi(_) => Bdi::tag(),
73065            Self::Bdo(_) => Bdo::tag(),
73066            Self::Br(_) => Br::tag(),
73067            Self::Cite(_) => Cite::tag(),
73068            Self::Code(_) => Code::tag(),
73069            Self::Data(_) => Data::tag(),
73070            Self::Dfn(_) => Dfn::tag(),
73071            Self::Em(_) => Em::tag(),
73072            Self::I(_) => I::tag(),
73073            Self::Kbd(_) => Kbd::tag(),
73074            Self::Mark(_) => Mark::tag(),
73075            Self::Q(_) => Q::tag(),
73076            Self::Rp(_) => Rp::tag(),
73077            Self::Rt(_) => Rt::tag(),
73078            Self::Ruby(_) => Ruby::tag(),
73079            Self::S(_) => S::tag(),
73080            Self::Samp(_) => Samp::tag(),
73081            Self::Small(_) => Small::tag(),
73082            Self::Span(_) => Span::tag(),
73083            Self::Strong(_) => Strong::tag(),
73084            Self::Sub(_) => Sub::tag(),
73085            Self::Sup(_) => Sup::tag(),
73086            Self::Time(_) => Time::tag(),
73087            Self::U(_) => U::tag(),
73088            Self::Var(_) => Var::tag(),
73089            Self::Wbr(_) => Wbr::tag(),
73090            Self::Area(_) => Area::tag(),
73091            Self::Audio(_) => Audio::tag(),
73092            Self::Img(_) => Img::tag(),
73093            Self::Map(_) => Map::tag(),
73094            Self::Track(_) => Track::tag(),
73095            Self::Video(_) => Video::tag(),
73096            Self::Embed(_) => Embed::tag(),
73097            Self::Iframe(_) => Iframe::tag(),
73098            Self::Object(_) => Object::tag(),
73099            Self::Picture(_) => Picture::tag(),
73100            Self::Portal(_) => Portal::tag(),
73101            Self::Source(_) => Source::tag(),
73102            Self::Canvas(_) => Canvas::tag(),
73103            Self::Noscript(_) => Noscript::tag(),
73104            Self::Script(_) => Script::tag(),
73105            Self::Del(_) => Del::tag(),
73106            Self::Ins(_) => Ins::tag(),
73107            Self::Caption(_) => Caption::tag(),
73108            Self::Col(_) => Col::tag(),
73109            Self::Colgroup(_) => Colgroup::tag(),
73110            Self::Table(_) => Table::tag(),
73111            Self::Tbody(_) => Tbody::tag(),
73112            Self::Td(_) => Td::tag(),
73113            Self::Tfoot(_) => Tfoot::tag(),
73114            Self::Th(_) => Th::tag(),
73115            Self::Thead(_) => Thead::tag(),
73116            Self::Tr(_) => Tr::tag(),
73117            Self::Button(_) => Button::tag(),
73118            Self::Datalist(_) => Datalist::tag(),
73119            Self::Fieldset(_) => Fieldset::tag(),
73120            Self::Form(_) => Form::tag(),
73121            Self::Input(_) => Input::tag(),
73122            Self::Label(_) => Label::tag(),
73123            Self::Legend(_) => Legend::tag(),
73124            Self::Meter(_) => Meter::tag(),
73125            Self::Optgroup(_) => Optgroup::tag(),
73126            Self::Option(_) => Option::tag(),
73127            Self::Output(_) => Output::tag(),
73128            Self::Progress(_) => Progress::tag(),
73129            Self::Select(_) => Select::tag(),
73130            Self::Textarea(_) => Textarea::tag(),
73131            Self::Details(_) => Details::tag(),
73132            Self::Dialog(_) => Dialog::tag(),
73133            Self::Summary(_) => Summary::tag(),
73134            Self::Slot(_) => Slot::tag(),
73135            Self::Template(_) => Template::tag(),
73136            Self::Acronym(_) => Acronym::tag(),
73137            Self::Applet(_) => Applet::tag(),
73138            Self::Bgsound(_) => Bgsound::tag(),
73139            Self::Big(_) => Big::tag(),
73140            Self::Blink(_) => Blink::tag(),
73141            Self::Center(_) => Center::tag(),
73142            Self::Dir(_) => Dir::tag(),
73143            Self::Font(_) => Font::tag(),
73144            Self::Frame(_) => Frame::tag(),
73145            Self::Frameset(_) => Frameset::tag(),
73146            Self::Image(_) => Image::tag(),
73147            Self::Keygen(_) => Keygen::tag(),
73148            Self::Marquee(_) => Marquee::tag(),
73149            Self::Menuitem(_) => Menuitem::tag(),
73150            Self::Nobr(_) => Nobr::tag(),
73151            Self::Noembed(_) => Noembed::tag(),
73152            Self::Noframes(_) => Noframes::tag(),
73153            Self::Param(_) => Param::tag(),
73154            Self::Plaintext(_) => Plaintext::tag(),
73155            Self::Rb(_) => Rb::tag(),
73156            Self::Rtc(_) => Rtc::tag(),
73157            Self::Spacer(_) => Spacer::tag(),
73158            Self::Strike(_) => Strike::tag(),
73159            Self::Tt(_) => Tt::tag(),
73160            Self::Xmp(_) => Xmp::tag(),
73161            Self::H1(_) => H1::tag(),
73162            Self::H2(_) => H2::tag(),
73163            Self::H3(_) => H3::tag(),
73164            Self::H4(_) => H4::tag(),
73165            Self::H5(_) => H5::tag(),
73166            Self::H6(_) => H6::tag(),
73167            Self::Unknown(_) => Unknown::tag(),
73168        }
73169    }
73170    /// Sets an attribute of the element.
73171    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
73172    /// If the `alloc` feature is disabled, this function will silently fail.
73173    ///
73174    /// # Note
73175    /// This only works when the attribute is lowercase.
73176    pub fn set_attr(
73177        &mut self,
73178        name: &'life str,
73179        value: impl core::convert::Into<AttributeValue<'life>>,
73180    ) {
73181        match self {
73182            Self::Html(e) => e.set_attr(name, value),
73183            Self::Base(e) => e.set_attr(name, value),
73184            Self::Head(e) => e.set_attr(name, value),
73185            Self::Link(e) => e.set_attr(name, value),
73186            Self::Meta(e) => e.set_attr(name, value),
73187            Self::Style(e) => e.set_attr(name, value),
73188            Self::Title(e) => e.set_attr(name, value),
73189            Self::Body(e) => e.set_attr(name, value),
73190            Self::Address(e) => e.set_attr(name, value),
73191            Self::Article(e) => e.set_attr(name, value),
73192            Self::Aside(e) => e.set_attr(name, value),
73193            Self::Footer(e) => e.set_attr(name, value),
73194            Self::Header(e) => e.set_attr(name, value),
73195            Self::Hgroup(e) => e.set_attr(name, value),
73196            Self::Main(e) => e.set_attr(name, value),
73197            Self::Nav(e) => e.set_attr(name, value),
73198            Self::Section(e) => e.set_attr(name, value),
73199            Self::Blockquote(e) => e.set_attr(name, value),
73200            Self::Dd(e) => e.set_attr(name, value),
73201            Self::Div(e) => e.set_attr(name, value),
73202            Self::Dl(e) => e.set_attr(name, value),
73203            Self::Dt(e) => e.set_attr(name, value),
73204            Self::Figcaption(e) => e.set_attr(name, value),
73205            Self::Figure(e) => e.set_attr(name, value),
73206            Self::Hr(e) => e.set_attr(name, value),
73207            Self::Li(e) => e.set_attr(name, value),
73208            Self::Menu(e) => e.set_attr(name, value),
73209            Self::Ol(e) => e.set_attr(name, value),
73210            Self::P(e) => e.set_attr(name, value),
73211            Self::Pre(e) => e.set_attr(name, value),
73212            Self::Ul(e) => e.set_attr(name, value),
73213            Self::A(e) => e.set_attr(name, value),
73214            Self::Abbr(e) => e.set_attr(name, value),
73215            Self::B(e) => e.set_attr(name, value),
73216            Self::Bdi(e) => e.set_attr(name, value),
73217            Self::Bdo(e) => e.set_attr(name, value),
73218            Self::Br(e) => e.set_attr(name, value),
73219            Self::Cite(e) => e.set_attr(name, value),
73220            Self::Code(e) => e.set_attr(name, value),
73221            Self::Data(e) => e.set_attr(name, value),
73222            Self::Dfn(e) => e.set_attr(name, value),
73223            Self::Em(e) => e.set_attr(name, value),
73224            Self::I(e) => e.set_attr(name, value),
73225            Self::Kbd(e) => e.set_attr(name, value),
73226            Self::Mark(e) => e.set_attr(name, value),
73227            Self::Q(e) => e.set_attr(name, value),
73228            Self::Rp(e) => e.set_attr(name, value),
73229            Self::Rt(e) => e.set_attr(name, value),
73230            Self::Ruby(e) => e.set_attr(name, value),
73231            Self::S(e) => e.set_attr(name, value),
73232            Self::Samp(e) => e.set_attr(name, value),
73233            Self::Small(e) => e.set_attr(name, value),
73234            Self::Span(e) => e.set_attr(name, value),
73235            Self::Strong(e) => e.set_attr(name, value),
73236            Self::Sub(e) => e.set_attr(name, value),
73237            Self::Sup(e) => e.set_attr(name, value),
73238            Self::Time(e) => e.set_attr(name, value),
73239            Self::U(e) => e.set_attr(name, value),
73240            Self::Var(e) => e.set_attr(name, value),
73241            Self::Wbr(e) => e.set_attr(name, value),
73242            Self::Area(e) => e.set_attr(name, value),
73243            Self::Audio(e) => e.set_attr(name, value),
73244            Self::Img(e) => e.set_attr(name, value),
73245            Self::Map(e) => e.set_attr(name, value),
73246            Self::Track(e) => e.set_attr(name, value),
73247            Self::Video(e) => e.set_attr(name, value),
73248            Self::Embed(e) => e.set_attr(name, value),
73249            Self::Iframe(e) => e.set_attr(name, value),
73250            Self::Object(e) => e.set_attr(name, value),
73251            Self::Picture(e) => e.set_attr(name, value),
73252            Self::Portal(e) => e.set_attr(name, value),
73253            Self::Source(e) => e.set_attr(name, value),
73254            Self::Canvas(e) => e.set_attr(name, value),
73255            Self::Noscript(e) => e.set_attr(name, value),
73256            Self::Script(e) => e.set_attr(name, value),
73257            Self::Del(e) => e.set_attr(name, value),
73258            Self::Ins(e) => e.set_attr(name, value),
73259            Self::Caption(e) => e.set_attr(name, value),
73260            Self::Col(e) => e.set_attr(name, value),
73261            Self::Colgroup(e) => e.set_attr(name, value),
73262            Self::Table(e) => e.set_attr(name, value),
73263            Self::Tbody(e) => e.set_attr(name, value),
73264            Self::Td(e) => e.set_attr(name, value),
73265            Self::Tfoot(e) => e.set_attr(name, value),
73266            Self::Th(e) => e.set_attr(name, value),
73267            Self::Thead(e) => e.set_attr(name, value),
73268            Self::Tr(e) => e.set_attr(name, value),
73269            Self::Button(e) => e.set_attr(name, value),
73270            Self::Datalist(e) => e.set_attr(name, value),
73271            Self::Fieldset(e) => e.set_attr(name, value),
73272            Self::Form(e) => e.set_attr(name, value),
73273            Self::Input(e) => e.set_attr(name, value),
73274            Self::Label(e) => e.set_attr(name, value),
73275            Self::Legend(e) => e.set_attr(name, value),
73276            Self::Meter(e) => e.set_attr(name, value),
73277            Self::Optgroup(e) => e.set_attr(name, value),
73278            Self::Option(e) => e.set_attr(name, value),
73279            Self::Output(e) => e.set_attr(name, value),
73280            Self::Progress(e) => e.set_attr(name, value),
73281            Self::Select(e) => e.set_attr(name, value),
73282            Self::Textarea(e) => e.set_attr(name, value),
73283            Self::Details(e) => e.set_attr(name, value),
73284            Self::Dialog(e) => e.set_attr(name, value),
73285            Self::Summary(e) => e.set_attr(name, value),
73286            Self::Slot(e) => e.set_attr(name, value),
73287            Self::Template(e) => e.set_attr(name, value),
73288            Self::Acronym(e) => e.set_attr(name, value),
73289            Self::Applet(e) => e.set_attr(name, value),
73290            Self::Bgsound(e) => e.set_attr(name, value),
73291            Self::Big(e) => e.set_attr(name, value),
73292            Self::Blink(e) => e.set_attr(name, value),
73293            Self::Center(e) => e.set_attr(name, value),
73294            Self::Dir(e) => e.set_attr(name, value),
73295            Self::Font(e) => e.set_attr(name, value),
73296            Self::Frame(e) => e.set_attr(name, value),
73297            Self::Frameset(e) => e.set_attr(name, value),
73298            Self::Image(e) => e.set_attr(name, value),
73299            Self::Keygen(e) => e.set_attr(name, value),
73300            Self::Marquee(e) => e.set_attr(name, value),
73301            Self::Menuitem(e) => e.set_attr(name, value),
73302            Self::Nobr(e) => e.set_attr(name, value),
73303            Self::Noembed(e) => e.set_attr(name, value),
73304            Self::Noframes(e) => e.set_attr(name, value),
73305            Self::Param(e) => e.set_attr(name, value),
73306            Self::Plaintext(e) => e.set_attr(name, value),
73307            Self::Rb(e) => e.set_attr(name, value),
73308            Self::Rtc(e) => e.set_attr(name, value),
73309            Self::Spacer(e) => e.set_attr(name, value),
73310            Self::Strike(e) => e.set_attr(name, value),
73311            Self::Tt(e) => e.set_attr(name, value),
73312            Self::Xmp(e) => e.set_attr(name, value),
73313            Self::H1(e) => e.set_attr(name, value),
73314            Self::H2(e) => e.set_attr(name, value),
73315            Self::H3(e) => e.set_attr(name, value),
73316            Self::H4(e) => e.set_attr(name, value),
73317            Self::H5(e) => e.set_attr(name, value),
73318            Self::H6(e) => e.set_attr(name, value),
73319            Self::Unknown(e) => e.set_attr(name, value),
73320        }
73321    }
73322}
73323#[allow(deprecated)]
73324
73325impl<'life> Element<'life> {
73326    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
73327    ///   
73328
73329    pub fn accesskey(&self) -> core::option::Option<AttributeValue<'life>> {
73330        match self {
73331            Self::Html(e) => e.accesskey,
73332            Self::Base(e) => e.accesskey,
73333            Self::Head(e) => e.accesskey,
73334            Self::Link(e) => e.accesskey,
73335            Self::Meta(e) => e.accesskey,
73336            Self::Style(e) => e.accesskey,
73337            Self::Title(e) => e.accesskey,
73338            Self::Body(e) => e.accesskey,
73339            Self::Address(e) => e.accesskey,
73340            Self::Article(e) => e.accesskey,
73341            Self::Aside(e) => e.accesskey,
73342            Self::Footer(e) => e.accesskey,
73343            Self::Header(e) => e.accesskey,
73344            Self::Hgroup(e) => e.accesskey,
73345            Self::Main(e) => e.accesskey,
73346            Self::Nav(e) => e.accesskey,
73347            Self::Section(e) => e.accesskey,
73348            Self::Blockquote(e) => e.accesskey,
73349            Self::Dd(e) => e.accesskey,
73350            Self::Div(e) => e.accesskey,
73351            Self::Dl(e) => e.accesskey,
73352            Self::Dt(e) => e.accesskey,
73353            Self::Figcaption(e) => e.accesskey,
73354            Self::Figure(e) => e.accesskey,
73355            Self::Hr(e) => e.accesskey,
73356            Self::Li(e) => e.accesskey,
73357            Self::Menu(e) => e.accesskey,
73358            Self::Ol(e) => e.accesskey,
73359            Self::P(e) => e.accesskey,
73360            Self::Pre(e) => e.accesskey,
73361            Self::Ul(e) => e.accesskey,
73362            Self::A(e) => e.accesskey,
73363            Self::Abbr(e) => e.accesskey,
73364            Self::B(e) => e.accesskey,
73365            Self::Bdi(e) => e.accesskey,
73366            Self::Bdo(e) => e.accesskey,
73367            Self::Br(e) => e.accesskey,
73368            Self::Cite(e) => e.accesskey,
73369            Self::Code(e) => e.accesskey,
73370            Self::Data(e) => e.accesskey,
73371            Self::Dfn(e) => e.accesskey,
73372            Self::Em(e) => e.accesskey,
73373            Self::I(e) => e.accesskey,
73374            Self::Kbd(e) => e.accesskey,
73375            Self::Mark(e) => e.accesskey,
73376            Self::Q(e) => e.accesskey,
73377            Self::Rp(e) => e.accesskey,
73378            Self::Rt(e) => e.accesskey,
73379            Self::Ruby(e) => e.accesskey,
73380            Self::S(e) => e.accesskey,
73381            Self::Samp(e) => e.accesskey,
73382            Self::Small(e) => e.accesskey,
73383            Self::Span(e) => e.accesskey,
73384            Self::Strong(e) => e.accesskey,
73385            Self::Sub(e) => e.accesskey,
73386            Self::Sup(e) => e.accesskey,
73387            Self::Time(e) => e.accesskey,
73388            Self::U(e) => e.accesskey,
73389            Self::Var(e) => e.accesskey,
73390            Self::Wbr(e) => e.accesskey,
73391            Self::Area(e) => e.accesskey,
73392            Self::Audio(e) => e.accesskey,
73393            Self::Img(e) => e.accesskey,
73394            Self::Map(e) => e.accesskey,
73395            Self::Track(e) => e.accesskey,
73396            Self::Video(e) => e.accesskey,
73397            Self::Embed(e) => e.accesskey,
73398            Self::Iframe(e) => e.accesskey,
73399            Self::Object(e) => e.accesskey,
73400            Self::Picture(e) => e.accesskey,
73401            Self::Portal(e) => e.accesskey,
73402            Self::Source(e) => e.accesskey,
73403            Self::Canvas(e) => e.accesskey,
73404            Self::Noscript(e) => e.accesskey,
73405            Self::Script(e) => e.accesskey,
73406            Self::Del(e) => e.accesskey,
73407            Self::Ins(e) => e.accesskey,
73408            Self::Caption(e) => e.accesskey,
73409            Self::Col(e) => e.accesskey,
73410            Self::Colgroup(e) => e.accesskey,
73411            Self::Table(e) => e.accesskey,
73412            Self::Tbody(e) => e.accesskey,
73413            Self::Td(e) => e.accesskey,
73414            Self::Tfoot(e) => e.accesskey,
73415            Self::Th(e) => e.accesskey,
73416            Self::Thead(e) => e.accesskey,
73417            Self::Tr(e) => e.accesskey,
73418            Self::Button(e) => e.accesskey,
73419            Self::Datalist(e) => e.accesskey,
73420            Self::Fieldset(e) => e.accesskey,
73421            Self::Form(e) => e.accesskey,
73422            Self::Input(e) => e.accesskey,
73423            Self::Label(e) => e.accesskey,
73424            Self::Legend(e) => e.accesskey,
73425            Self::Meter(e) => e.accesskey,
73426            Self::Optgroup(e) => e.accesskey,
73427            Self::Option(e) => e.accesskey,
73428            Self::Output(e) => e.accesskey,
73429            Self::Progress(e) => e.accesskey,
73430            Self::Select(e) => e.accesskey,
73431            Self::Textarea(e) => e.accesskey,
73432            Self::Details(e) => e.accesskey,
73433            Self::Dialog(e) => e.accesskey,
73434            Self::Summary(e) => e.accesskey,
73435            Self::Slot(e) => e.accesskey,
73436            Self::Template(e) => e.accesskey,
73437            Self::Acronym(e) => e.accesskey,
73438            Self::Applet(e) => e.accesskey,
73439            Self::Bgsound(e) => e.accesskey,
73440            Self::Big(e) => e.accesskey,
73441            Self::Blink(e) => e.accesskey,
73442            Self::Center(e) => e.accesskey,
73443            Self::Dir(e) => e.accesskey,
73444            Self::Font(e) => e.accesskey,
73445            Self::Frame(e) => e.accesskey,
73446            Self::Frameset(e) => e.accesskey,
73447            Self::Image(e) => e.accesskey,
73448            Self::Keygen(e) => e.accesskey,
73449            Self::Marquee(e) => e.accesskey,
73450            Self::Menuitem(e) => e.accesskey,
73451            Self::Nobr(e) => e.accesskey,
73452            Self::Noembed(e) => e.accesskey,
73453            Self::Noframes(e) => e.accesskey,
73454            Self::Param(e) => e.accesskey,
73455            Self::Plaintext(e) => e.accesskey,
73456            Self::Rb(e) => e.accesskey,
73457            Self::Rtc(e) => e.accesskey,
73458            Self::Spacer(e) => e.accesskey,
73459            Self::Strike(e) => e.accesskey,
73460            Self::Tt(e) => e.accesskey,
73461            Self::Xmp(e) => e.accesskey,
73462            Self::H1(e) => e.accesskey,
73463            Self::H2(e) => e.accesskey,
73464            Self::H3(e) => e.accesskey,
73465            Self::H4(e) => e.accesskey,
73466            Self::H5(e) => e.accesskey,
73467            Self::H6(e) => e.accesskey,
73468            Self::Unknown(e) => e.accesskey,
73469        }
73470    }
73471
73472    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
73473    ///     <ul>
73474    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
73475    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
73476    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
73477    ///       <li><code>characters</code>, all letters should default to uppercase</li>
73478    ///     </ul>
73479    ///   
73480
73481    pub fn autocapitalize(&self) -> core::option::Option<AttributeValue<'life>> {
73482        match self {
73483            Self::Html(e) => e.autocapitalize,
73484            Self::Base(e) => e.autocapitalize,
73485            Self::Head(e) => e.autocapitalize,
73486            Self::Link(e) => e.autocapitalize,
73487            Self::Meta(e) => e.autocapitalize,
73488            Self::Style(e) => e.autocapitalize,
73489            Self::Title(e) => e.autocapitalize,
73490            Self::Body(e) => e.autocapitalize,
73491            Self::Address(e) => e.autocapitalize,
73492            Self::Article(e) => e.autocapitalize,
73493            Self::Aside(e) => e.autocapitalize,
73494            Self::Footer(e) => e.autocapitalize,
73495            Self::Header(e) => e.autocapitalize,
73496            Self::Hgroup(e) => e.autocapitalize,
73497            Self::Main(e) => e.autocapitalize,
73498            Self::Nav(e) => e.autocapitalize,
73499            Self::Section(e) => e.autocapitalize,
73500            Self::Blockquote(e) => e.autocapitalize,
73501            Self::Dd(e) => e.autocapitalize,
73502            Self::Div(e) => e.autocapitalize,
73503            Self::Dl(e) => e.autocapitalize,
73504            Self::Dt(e) => e.autocapitalize,
73505            Self::Figcaption(e) => e.autocapitalize,
73506            Self::Figure(e) => e.autocapitalize,
73507            Self::Hr(e) => e.autocapitalize,
73508            Self::Li(e) => e.autocapitalize,
73509            Self::Menu(e) => e.autocapitalize,
73510            Self::Ol(e) => e.autocapitalize,
73511            Self::P(e) => e.autocapitalize,
73512            Self::Pre(e) => e.autocapitalize,
73513            Self::Ul(e) => e.autocapitalize,
73514            Self::A(e) => e.autocapitalize,
73515            Self::Abbr(e) => e.autocapitalize,
73516            Self::B(e) => e.autocapitalize,
73517            Self::Bdi(e) => e.autocapitalize,
73518            Self::Bdo(e) => e.autocapitalize,
73519            Self::Br(e) => e.autocapitalize,
73520            Self::Cite(e) => e.autocapitalize,
73521            Self::Code(e) => e.autocapitalize,
73522            Self::Data(e) => e.autocapitalize,
73523            Self::Dfn(e) => e.autocapitalize,
73524            Self::Em(e) => e.autocapitalize,
73525            Self::I(e) => e.autocapitalize,
73526            Self::Kbd(e) => e.autocapitalize,
73527            Self::Mark(e) => e.autocapitalize,
73528            Self::Q(e) => e.autocapitalize,
73529            Self::Rp(e) => e.autocapitalize,
73530            Self::Rt(e) => e.autocapitalize,
73531            Self::Ruby(e) => e.autocapitalize,
73532            Self::S(e) => e.autocapitalize,
73533            Self::Samp(e) => e.autocapitalize,
73534            Self::Small(e) => e.autocapitalize,
73535            Self::Span(e) => e.autocapitalize,
73536            Self::Strong(e) => e.autocapitalize,
73537            Self::Sub(e) => e.autocapitalize,
73538            Self::Sup(e) => e.autocapitalize,
73539            Self::Time(e) => e.autocapitalize,
73540            Self::U(e) => e.autocapitalize,
73541            Self::Var(e) => e.autocapitalize,
73542            Self::Wbr(e) => e.autocapitalize,
73543            Self::Area(e) => e.autocapitalize,
73544            Self::Audio(e) => e.autocapitalize,
73545            Self::Img(e) => e.autocapitalize,
73546            Self::Map(e) => e.autocapitalize,
73547            Self::Track(e) => e.autocapitalize,
73548            Self::Video(e) => e.autocapitalize,
73549            Self::Embed(e) => e.autocapitalize,
73550            Self::Iframe(e) => e.autocapitalize,
73551            Self::Object(e) => e.autocapitalize,
73552            Self::Picture(e) => e.autocapitalize,
73553            Self::Portal(e) => e.autocapitalize,
73554            Self::Source(e) => e.autocapitalize,
73555            Self::Canvas(e) => e.autocapitalize,
73556            Self::Noscript(e) => e.autocapitalize,
73557            Self::Script(e) => e.autocapitalize,
73558            Self::Del(e) => e.autocapitalize,
73559            Self::Ins(e) => e.autocapitalize,
73560            Self::Caption(e) => e.autocapitalize,
73561            Self::Col(e) => e.autocapitalize,
73562            Self::Colgroup(e) => e.autocapitalize,
73563            Self::Table(e) => e.autocapitalize,
73564            Self::Tbody(e) => e.autocapitalize,
73565            Self::Td(e) => e.autocapitalize,
73566            Self::Tfoot(e) => e.autocapitalize,
73567            Self::Th(e) => e.autocapitalize,
73568            Self::Thead(e) => e.autocapitalize,
73569            Self::Tr(e) => e.autocapitalize,
73570            Self::Button(e) => e.autocapitalize,
73571            Self::Datalist(e) => e.autocapitalize,
73572            Self::Fieldset(e) => e.autocapitalize,
73573            Self::Form(e) => e.autocapitalize,
73574            Self::Input(e) => e.autocapitalize,
73575            Self::Label(e) => e.autocapitalize,
73576            Self::Legend(e) => e.autocapitalize,
73577            Self::Meter(e) => e.autocapitalize,
73578            Self::Optgroup(e) => e.autocapitalize,
73579            Self::Option(e) => e.autocapitalize,
73580            Self::Output(e) => e.autocapitalize,
73581            Self::Progress(e) => e.autocapitalize,
73582            Self::Select(e) => e.autocapitalize,
73583            Self::Textarea(e) => e.autocapitalize,
73584            Self::Details(e) => e.autocapitalize,
73585            Self::Dialog(e) => e.autocapitalize,
73586            Self::Summary(e) => e.autocapitalize,
73587            Self::Slot(e) => e.autocapitalize,
73588            Self::Template(e) => e.autocapitalize,
73589            Self::Acronym(e) => e.autocapitalize,
73590            Self::Applet(e) => e.autocapitalize,
73591            Self::Bgsound(e) => e.autocapitalize,
73592            Self::Big(e) => e.autocapitalize,
73593            Self::Blink(e) => e.autocapitalize,
73594            Self::Center(e) => e.autocapitalize,
73595            Self::Dir(e) => e.autocapitalize,
73596            Self::Font(e) => e.autocapitalize,
73597            Self::Frame(e) => e.autocapitalize,
73598            Self::Frameset(e) => e.autocapitalize,
73599            Self::Image(e) => e.autocapitalize,
73600            Self::Keygen(e) => e.autocapitalize,
73601            Self::Marquee(e) => e.autocapitalize,
73602            Self::Menuitem(e) => e.autocapitalize,
73603            Self::Nobr(e) => e.autocapitalize,
73604            Self::Noembed(e) => e.autocapitalize,
73605            Self::Noframes(e) => e.autocapitalize,
73606            Self::Param(e) => e.autocapitalize,
73607            Self::Plaintext(e) => e.autocapitalize,
73608            Self::Rb(e) => e.autocapitalize,
73609            Self::Rtc(e) => e.autocapitalize,
73610            Self::Spacer(e) => e.autocapitalize,
73611            Self::Strike(e) => e.autocapitalize,
73612            Self::Tt(e) => e.autocapitalize,
73613            Self::Xmp(e) => e.autocapitalize,
73614            Self::H1(e) => e.autocapitalize,
73615            Self::H2(e) => e.autocapitalize,
73616            Self::H3(e) => e.autocapitalize,
73617            Self::H4(e) => e.autocapitalize,
73618            Self::H5(e) => e.autocapitalize,
73619            Self::H6(e) => e.autocapitalize,
73620            Self::Unknown(e) => e.autocapitalize,
73621        }
73622    }
73623
73624    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
73625    ///   
73626
73627    pub fn autofocus(&self) -> core::option::Option<AttributeValue<'life>> {
73628        match self {
73629            Self::Html(e) => e.autofocus,
73630            Self::Base(e) => e.autofocus,
73631            Self::Head(e) => e.autofocus,
73632            Self::Link(e) => e.autofocus,
73633            Self::Meta(e) => e.autofocus,
73634            Self::Style(e) => e.autofocus,
73635            Self::Title(e) => e.autofocus,
73636            Self::Body(e) => e.autofocus,
73637            Self::Address(e) => e.autofocus,
73638            Self::Article(e) => e.autofocus,
73639            Self::Aside(e) => e.autofocus,
73640            Self::Footer(e) => e.autofocus,
73641            Self::Header(e) => e.autofocus,
73642            Self::Hgroup(e) => e.autofocus,
73643            Self::Main(e) => e.autofocus,
73644            Self::Nav(e) => e.autofocus,
73645            Self::Section(e) => e.autofocus,
73646            Self::Blockquote(e) => e.autofocus,
73647            Self::Dd(e) => e.autofocus,
73648            Self::Div(e) => e.autofocus,
73649            Self::Dl(e) => e.autofocus,
73650            Self::Dt(e) => e.autofocus,
73651            Self::Figcaption(e) => e.autofocus,
73652            Self::Figure(e) => e.autofocus,
73653            Self::Hr(e) => e.autofocus,
73654            Self::Li(e) => e.autofocus,
73655            Self::Menu(e) => e.autofocus,
73656            Self::Ol(e) => e.autofocus,
73657            Self::P(e) => e.autofocus,
73658            Self::Pre(e) => e.autofocus,
73659            Self::Ul(e) => e.autofocus,
73660            Self::A(e) => e.autofocus,
73661            Self::Abbr(e) => e.autofocus,
73662            Self::B(e) => e.autofocus,
73663            Self::Bdi(e) => e.autofocus,
73664            Self::Bdo(e) => e.autofocus,
73665            Self::Br(e) => e.autofocus,
73666            Self::Cite(e) => e.autofocus,
73667            Self::Code(e) => e.autofocus,
73668            Self::Data(e) => e.autofocus,
73669            Self::Dfn(e) => e.autofocus,
73670            Self::Em(e) => e.autofocus,
73671            Self::I(e) => e.autofocus,
73672            Self::Kbd(e) => e.autofocus,
73673            Self::Mark(e) => e.autofocus,
73674            Self::Q(e) => e.autofocus,
73675            Self::Rp(e) => e.autofocus,
73676            Self::Rt(e) => e.autofocus,
73677            Self::Ruby(e) => e.autofocus,
73678            Self::S(e) => e.autofocus,
73679            Self::Samp(e) => e.autofocus,
73680            Self::Small(e) => e.autofocus,
73681            Self::Span(e) => e.autofocus,
73682            Self::Strong(e) => e.autofocus,
73683            Self::Sub(e) => e.autofocus,
73684            Self::Sup(e) => e.autofocus,
73685            Self::Time(e) => e.autofocus,
73686            Self::U(e) => e.autofocus,
73687            Self::Var(e) => e.autofocus,
73688            Self::Wbr(e) => e.autofocus,
73689            Self::Area(e) => e.autofocus,
73690            Self::Audio(e) => e.autofocus,
73691            Self::Img(e) => e.autofocus,
73692            Self::Map(e) => e.autofocus,
73693            Self::Track(e) => e.autofocus,
73694            Self::Video(e) => e.autofocus,
73695            Self::Embed(e) => e.autofocus,
73696            Self::Iframe(e) => e.autofocus,
73697            Self::Object(e) => e.autofocus,
73698            Self::Picture(e) => e.autofocus,
73699            Self::Portal(e) => e.autofocus,
73700            Self::Source(e) => e.autofocus,
73701            Self::Canvas(e) => e.autofocus,
73702            Self::Noscript(e) => e.autofocus,
73703            Self::Script(e) => e.autofocus,
73704            Self::Del(e) => e.autofocus,
73705            Self::Ins(e) => e.autofocus,
73706            Self::Caption(e) => e.autofocus,
73707            Self::Col(e) => e.autofocus,
73708            Self::Colgroup(e) => e.autofocus,
73709            Self::Table(e) => e.autofocus,
73710            Self::Tbody(e) => e.autofocus,
73711            Self::Td(e) => e.autofocus,
73712            Self::Tfoot(e) => e.autofocus,
73713            Self::Th(e) => e.autofocus,
73714            Self::Thead(e) => e.autofocus,
73715            Self::Tr(e) => e.autofocus,
73716            Self::Button(e) => e.autofocus,
73717            Self::Datalist(e) => e.autofocus,
73718            Self::Fieldset(e) => e.autofocus,
73719            Self::Form(e) => e.autofocus,
73720            Self::Input(e) => e.autofocus,
73721            Self::Label(e) => e.autofocus,
73722            Self::Legend(e) => e.autofocus,
73723            Self::Meter(e) => e.autofocus,
73724            Self::Optgroup(e) => e.autofocus,
73725            Self::Option(e) => e.autofocus,
73726            Self::Output(e) => e.autofocus,
73727            Self::Progress(e) => e.autofocus,
73728            Self::Select(e) => e.autofocus,
73729            Self::Textarea(e) => e.autofocus,
73730            Self::Details(e) => e.autofocus,
73731            Self::Dialog(e) => e.autofocus,
73732            Self::Summary(e) => e.autofocus,
73733            Self::Slot(e) => e.autofocus,
73734            Self::Template(e) => e.autofocus,
73735            Self::Acronym(e) => e.autofocus,
73736            Self::Applet(e) => e.autofocus,
73737            Self::Bgsound(e) => e.autofocus,
73738            Self::Big(e) => e.autofocus,
73739            Self::Blink(e) => e.autofocus,
73740            Self::Center(e) => e.autofocus,
73741            Self::Dir(e) => e.autofocus,
73742            Self::Font(e) => e.autofocus,
73743            Self::Frame(e) => e.autofocus,
73744            Self::Frameset(e) => e.autofocus,
73745            Self::Image(e) => e.autofocus,
73746            Self::Keygen(e) => e.autofocus,
73747            Self::Marquee(e) => e.autofocus,
73748            Self::Menuitem(e) => e.autofocus,
73749            Self::Nobr(e) => e.autofocus,
73750            Self::Noembed(e) => e.autofocus,
73751            Self::Noframes(e) => e.autofocus,
73752            Self::Param(e) => e.autofocus,
73753            Self::Plaintext(e) => e.autofocus,
73754            Self::Rb(e) => e.autofocus,
73755            Self::Rtc(e) => e.autofocus,
73756            Self::Spacer(e) => e.autofocus,
73757            Self::Strike(e) => e.autofocus,
73758            Self::Tt(e) => e.autofocus,
73759            Self::Xmp(e) => e.autofocus,
73760            Self::H1(e) => e.autofocus,
73761            Self::H2(e) => e.autofocus,
73762            Self::H3(e) => e.autofocus,
73763            Self::H4(e) => e.autofocus,
73764            Self::H5(e) => e.autofocus,
73765            Self::H6(e) => e.autofocus,
73766            Self::Unknown(e) => e.autofocus,
73767        }
73768    }
73769
73770    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
73771    ///   
73772
73773    pub fn class(&self) -> core::option::Option<AttributeValue<'life>> {
73774        match self {
73775            Self::Html(e) => e.class,
73776            Self::Base(e) => e.class,
73777            Self::Head(e) => e.class,
73778            Self::Link(e) => e.class,
73779            Self::Meta(e) => e.class,
73780            Self::Style(e) => e.class,
73781            Self::Title(e) => e.class,
73782            Self::Body(e) => e.class,
73783            Self::Address(e) => e.class,
73784            Self::Article(e) => e.class,
73785            Self::Aside(e) => e.class,
73786            Self::Footer(e) => e.class,
73787            Self::Header(e) => e.class,
73788            Self::Hgroup(e) => e.class,
73789            Self::Main(e) => e.class,
73790            Self::Nav(e) => e.class,
73791            Self::Section(e) => e.class,
73792            Self::Blockquote(e) => e.class,
73793            Self::Dd(e) => e.class,
73794            Self::Div(e) => e.class,
73795            Self::Dl(e) => e.class,
73796            Self::Dt(e) => e.class,
73797            Self::Figcaption(e) => e.class,
73798            Self::Figure(e) => e.class,
73799            Self::Hr(e) => e.class,
73800            Self::Li(e) => e.class,
73801            Self::Menu(e) => e.class,
73802            Self::Ol(e) => e.class,
73803            Self::P(e) => e.class,
73804            Self::Pre(e) => e.class,
73805            Self::Ul(e) => e.class,
73806            Self::A(e) => e.class,
73807            Self::Abbr(e) => e.class,
73808            Self::B(e) => e.class,
73809            Self::Bdi(e) => e.class,
73810            Self::Bdo(e) => e.class,
73811            Self::Br(e) => e.class,
73812            Self::Cite(e) => e.class,
73813            Self::Code(e) => e.class,
73814            Self::Data(e) => e.class,
73815            Self::Dfn(e) => e.class,
73816            Self::Em(e) => e.class,
73817            Self::I(e) => e.class,
73818            Self::Kbd(e) => e.class,
73819            Self::Mark(e) => e.class,
73820            Self::Q(e) => e.class,
73821            Self::Rp(e) => e.class,
73822            Self::Rt(e) => e.class,
73823            Self::Ruby(e) => e.class,
73824            Self::S(e) => e.class,
73825            Self::Samp(e) => e.class,
73826            Self::Small(e) => e.class,
73827            Self::Span(e) => e.class,
73828            Self::Strong(e) => e.class,
73829            Self::Sub(e) => e.class,
73830            Self::Sup(e) => e.class,
73831            Self::Time(e) => e.class,
73832            Self::U(e) => e.class,
73833            Self::Var(e) => e.class,
73834            Self::Wbr(e) => e.class,
73835            Self::Area(e) => e.class,
73836            Self::Audio(e) => e.class,
73837            Self::Img(e) => e.class,
73838            Self::Map(e) => e.class,
73839            Self::Track(e) => e.class,
73840            Self::Video(e) => e.class,
73841            Self::Embed(e) => e.class,
73842            Self::Iframe(e) => e.class,
73843            Self::Object(e) => e.class,
73844            Self::Picture(e) => e.class,
73845            Self::Portal(e) => e.class,
73846            Self::Source(e) => e.class,
73847            Self::Canvas(e) => e.class,
73848            Self::Noscript(e) => e.class,
73849            Self::Script(e) => e.class,
73850            Self::Del(e) => e.class,
73851            Self::Ins(e) => e.class,
73852            Self::Caption(e) => e.class,
73853            Self::Col(e) => e.class,
73854            Self::Colgroup(e) => e.class,
73855            Self::Table(e) => e.class,
73856            Self::Tbody(e) => e.class,
73857            Self::Td(e) => e.class,
73858            Self::Tfoot(e) => e.class,
73859            Self::Th(e) => e.class,
73860            Self::Thead(e) => e.class,
73861            Self::Tr(e) => e.class,
73862            Self::Button(e) => e.class,
73863            Self::Datalist(e) => e.class,
73864            Self::Fieldset(e) => e.class,
73865            Self::Form(e) => e.class,
73866            Self::Input(e) => e.class,
73867            Self::Label(e) => e.class,
73868            Self::Legend(e) => e.class,
73869            Self::Meter(e) => e.class,
73870            Self::Optgroup(e) => e.class,
73871            Self::Option(e) => e.class,
73872            Self::Output(e) => e.class,
73873            Self::Progress(e) => e.class,
73874            Self::Select(e) => e.class,
73875            Self::Textarea(e) => e.class,
73876            Self::Details(e) => e.class,
73877            Self::Dialog(e) => e.class,
73878            Self::Summary(e) => e.class,
73879            Self::Slot(e) => e.class,
73880            Self::Template(e) => e.class,
73881            Self::Acronym(e) => e.class,
73882            Self::Applet(e) => e.class,
73883            Self::Bgsound(e) => e.class,
73884            Self::Big(e) => e.class,
73885            Self::Blink(e) => e.class,
73886            Self::Center(e) => e.class,
73887            Self::Dir(e) => e.class,
73888            Self::Font(e) => e.class,
73889            Self::Frame(e) => e.class,
73890            Self::Frameset(e) => e.class,
73891            Self::Image(e) => e.class,
73892            Self::Keygen(e) => e.class,
73893            Self::Marquee(e) => e.class,
73894            Self::Menuitem(e) => e.class,
73895            Self::Nobr(e) => e.class,
73896            Self::Noembed(e) => e.class,
73897            Self::Noframes(e) => e.class,
73898            Self::Param(e) => e.class,
73899            Self::Plaintext(e) => e.class,
73900            Self::Rb(e) => e.class,
73901            Self::Rtc(e) => e.class,
73902            Self::Spacer(e) => e.class,
73903            Self::Strike(e) => e.class,
73904            Self::Tt(e) => e.class,
73905            Self::Xmp(e) => e.class,
73906            Self::H1(e) => e.class,
73907            Self::H2(e) => e.class,
73908            Self::H3(e) => e.class,
73909            Self::H4(e) => e.class,
73910            Self::H5(e) => e.class,
73911            Self::H6(e) => e.class,
73912            Self::Unknown(e) => e.class,
73913        }
73914    }
73915
73916    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
73917    ///     <ul>
73918    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
73919    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
73920    ///     </ul>
73921    ///   
73922
73923    pub fn contenteditable(&self) -> core::option::Option<AttributeValue<'life>> {
73924        match self {
73925            Self::Html(e) => e.contenteditable,
73926            Self::Base(e) => e.contenteditable,
73927            Self::Head(e) => e.contenteditable,
73928            Self::Link(e) => e.contenteditable,
73929            Self::Meta(e) => e.contenteditable,
73930            Self::Style(e) => e.contenteditable,
73931            Self::Title(e) => e.contenteditable,
73932            Self::Body(e) => e.contenteditable,
73933            Self::Address(e) => e.contenteditable,
73934            Self::Article(e) => e.contenteditable,
73935            Self::Aside(e) => e.contenteditable,
73936            Self::Footer(e) => e.contenteditable,
73937            Self::Header(e) => e.contenteditable,
73938            Self::Hgroup(e) => e.contenteditable,
73939            Self::Main(e) => e.contenteditable,
73940            Self::Nav(e) => e.contenteditable,
73941            Self::Section(e) => e.contenteditable,
73942            Self::Blockquote(e) => e.contenteditable,
73943            Self::Dd(e) => e.contenteditable,
73944            Self::Div(e) => e.contenteditable,
73945            Self::Dl(e) => e.contenteditable,
73946            Self::Dt(e) => e.contenteditable,
73947            Self::Figcaption(e) => e.contenteditable,
73948            Self::Figure(e) => e.contenteditable,
73949            Self::Hr(e) => e.contenteditable,
73950            Self::Li(e) => e.contenteditable,
73951            Self::Menu(e) => e.contenteditable,
73952            Self::Ol(e) => e.contenteditable,
73953            Self::P(e) => e.contenteditable,
73954            Self::Pre(e) => e.contenteditable,
73955            Self::Ul(e) => e.contenteditable,
73956            Self::A(e) => e.contenteditable,
73957            Self::Abbr(e) => e.contenteditable,
73958            Self::B(e) => e.contenteditable,
73959            Self::Bdi(e) => e.contenteditable,
73960            Self::Bdo(e) => e.contenteditable,
73961            Self::Br(e) => e.contenteditable,
73962            Self::Cite(e) => e.contenteditable,
73963            Self::Code(e) => e.contenteditable,
73964            Self::Data(e) => e.contenteditable,
73965            Self::Dfn(e) => e.contenteditable,
73966            Self::Em(e) => e.contenteditable,
73967            Self::I(e) => e.contenteditable,
73968            Self::Kbd(e) => e.contenteditable,
73969            Self::Mark(e) => e.contenteditable,
73970            Self::Q(e) => e.contenteditable,
73971            Self::Rp(e) => e.contenteditable,
73972            Self::Rt(e) => e.contenteditable,
73973            Self::Ruby(e) => e.contenteditable,
73974            Self::S(e) => e.contenteditable,
73975            Self::Samp(e) => e.contenteditable,
73976            Self::Small(e) => e.contenteditable,
73977            Self::Span(e) => e.contenteditable,
73978            Self::Strong(e) => e.contenteditable,
73979            Self::Sub(e) => e.contenteditable,
73980            Self::Sup(e) => e.contenteditable,
73981            Self::Time(e) => e.contenteditable,
73982            Self::U(e) => e.contenteditable,
73983            Self::Var(e) => e.contenteditable,
73984            Self::Wbr(e) => e.contenteditable,
73985            Self::Area(e) => e.contenteditable,
73986            Self::Audio(e) => e.contenteditable,
73987            Self::Img(e) => e.contenteditable,
73988            Self::Map(e) => e.contenteditable,
73989            Self::Track(e) => e.contenteditable,
73990            Self::Video(e) => e.contenteditable,
73991            Self::Embed(e) => e.contenteditable,
73992            Self::Iframe(e) => e.contenteditable,
73993            Self::Object(e) => e.contenteditable,
73994            Self::Picture(e) => e.contenteditable,
73995            Self::Portal(e) => e.contenteditable,
73996            Self::Source(e) => e.contenteditable,
73997            Self::Canvas(e) => e.contenteditable,
73998            Self::Noscript(e) => e.contenteditable,
73999            Self::Script(e) => e.contenteditable,
74000            Self::Del(e) => e.contenteditable,
74001            Self::Ins(e) => e.contenteditable,
74002            Self::Caption(e) => e.contenteditable,
74003            Self::Col(e) => e.contenteditable,
74004            Self::Colgroup(e) => e.contenteditable,
74005            Self::Table(e) => e.contenteditable,
74006            Self::Tbody(e) => e.contenteditable,
74007            Self::Td(e) => e.contenteditable,
74008            Self::Tfoot(e) => e.contenteditable,
74009            Self::Th(e) => e.contenteditable,
74010            Self::Thead(e) => e.contenteditable,
74011            Self::Tr(e) => e.contenteditable,
74012            Self::Button(e) => e.contenteditable,
74013            Self::Datalist(e) => e.contenteditable,
74014            Self::Fieldset(e) => e.contenteditable,
74015            Self::Form(e) => e.contenteditable,
74016            Self::Input(e) => e.contenteditable,
74017            Self::Label(e) => e.contenteditable,
74018            Self::Legend(e) => e.contenteditable,
74019            Self::Meter(e) => e.contenteditable,
74020            Self::Optgroup(e) => e.contenteditable,
74021            Self::Option(e) => e.contenteditable,
74022            Self::Output(e) => e.contenteditable,
74023            Self::Progress(e) => e.contenteditable,
74024            Self::Select(e) => e.contenteditable,
74025            Self::Textarea(e) => e.contenteditable,
74026            Self::Details(e) => e.contenteditable,
74027            Self::Dialog(e) => e.contenteditable,
74028            Self::Summary(e) => e.contenteditable,
74029            Self::Slot(e) => e.contenteditable,
74030            Self::Template(e) => e.contenteditable,
74031            Self::Acronym(e) => e.contenteditable,
74032            Self::Applet(e) => e.contenteditable,
74033            Self::Bgsound(e) => e.contenteditable,
74034            Self::Big(e) => e.contenteditable,
74035            Self::Blink(e) => e.contenteditable,
74036            Self::Center(e) => e.contenteditable,
74037            Self::Dir(e) => e.contenteditable,
74038            Self::Font(e) => e.contenteditable,
74039            Self::Frame(e) => e.contenteditable,
74040            Self::Frameset(e) => e.contenteditable,
74041            Self::Image(e) => e.contenteditable,
74042            Self::Keygen(e) => e.contenteditable,
74043            Self::Marquee(e) => e.contenteditable,
74044            Self::Menuitem(e) => e.contenteditable,
74045            Self::Nobr(e) => e.contenteditable,
74046            Self::Noembed(e) => e.contenteditable,
74047            Self::Noframes(e) => e.contenteditable,
74048            Self::Param(e) => e.contenteditable,
74049            Self::Plaintext(e) => e.contenteditable,
74050            Self::Rb(e) => e.contenteditable,
74051            Self::Rtc(e) => e.contenteditable,
74052            Self::Spacer(e) => e.contenteditable,
74053            Self::Strike(e) => e.contenteditable,
74054            Self::Tt(e) => e.contenteditable,
74055            Self::Xmp(e) => e.contenteditable,
74056            Self::H1(e) => e.contenteditable,
74057            Self::H2(e) => e.contenteditable,
74058            Self::H3(e) => e.contenteditable,
74059            Self::H4(e) => e.contenteditable,
74060            Self::H5(e) => e.contenteditable,
74061            Self::H6(e) => e.contenteditable,
74062            Self::Unknown(e) => e.contenteditable,
74063        }
74064    }
74065
74066    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
74067    ///   
74068
74069    pub fn contextmenu(&self) -> core::option::Option<AttributeValue<'life>> {
74070        match self {
74071            Self::Html(e) => e.contextmenu,
74072            Self::Base(e) => e.contextmenu,
74073            Self::Head(e) => e.contextmenu,
74074            Self::Link(e) => e.contextmenu,
74075            Self::Meta(e) => e.contextmenu,
74076            Self::Style(e) => e.contextmenu,
74077            Self::Title(e) => e.contextmenu,
74078            Self::Body(e) => e.contextmenu,
74079            Self::Address(e) => e.contextmenu,
74080            Self::Article(e) => e.contextmenu,
74081            Self::Aside(e) => e.contextmenu,
74082            Self::Footer(e) => e.contextmenu,
74083            Self::Header(e) => e.contextmenu,
74084            Self::Hgroup(e) => e.contextmenu,
74085            Self::Main(e) => e.contextmenu,
74086            Self::Nav(e) => e.contextmenu,
74087            Self::Section(e) => e.contextmenu,
74088            Self::Blockquote(e) => e.contextmenu,
74089            Self::Dd(e) => e.contextmenu,
74090            Self::Div(e) => e.contextmenu,
74091            Self::Dl(e) => e.contextmenu,
74092            Self::Dt(e) => e.contextmenu,
74093            Self::Figcaption(e) => e.contextmenu,
74094            Self::Figure(e) => e.contextmenu,
74095            Self::Hr(e) => e.contextmenu,
74096            Self::Li(e) => e.contextmenu,
74097            Self::Menu(e) => e.contextmenu,
74098            Self::Ol(e) => e.contextmenu,
74099            Self::P(e) => e.contextmenu,
74100            Self::Pre(e) => e.contextmenu,
74101            Self::Ul(e) => e.contextmenu,
74102            Self::A(e) => e.contextmenu,
74103            Self::Abbr(e) => e.contextmenu,
74104            Self::B(e) => e.contextmenu,
74105            Self::Bdi(e) => e.contextmenu,
74106            Self::Bdo(e) => e.contextmenu,
74107            Self::Br(e) => e.contextmenu,
74108            Self::Cite(e) => e.contextmenu,
74109            Self::Code(e) => e.contextmenu,
74110            Self::Data(e) => e.contextmenu,
74111            Self::Dfn(e) => e.contextmenu,
74112            Self::Em(e) => e.contextmenu,
74113            Self::I(e) => e.contextmenu,
74114            Self::Kbd(e) => e.contextmenu,
74115            Self::Mark(e) => e.contextmenu,
74116            Self::Q(e) => e.contextmenu,
74117            Self::Rp(e) => e.contextmenu,
74118            Self::Rt(e) => e.contextmenu,
74119            Self::Ruby(e) => e.contextmenu,
74120            Self::S(e) => e.contextmenu,
74121            Self::Samp(e) => e.contextmenu,
74122            Self::Small(e) => e.contextmenu,
74123            Self::Span(e) => e.contextmenu,
74124            Self::Strong(e) => e.contextmenu,
74125            Self::Sub(e) => e.contextmenu,
74126            Self::Sup(e) => e.contextmenu,
74127            Self::Time(e) => e.contextmenu,
74128            Self::U(e) => e.contextmenu,
74129            Self::Var(e) => e.contextmenu,
74130            Self::Wbr(e) => e.contextmenu,
74131            Self::Area(e) => e.contextmenu,
74132            Self::Audio(e) => e.contextmenu,
74133            Self::Img(e) => e.contextmenu,
74134            Self::Map(e) => e.contextmenu,
74135            Self::Track(e) => e.contextmenu,
74136            Self::Video(e) => e.contextmenu,
74137            Self::Embed(e) => e.contextmenu,
74138            Self::Iframe(e) => e.contextmenu,
74139            Self::Object(e) => e.contextmenu,
74140            Self::Picture(e) => e.contextmenu,
74141            Self::Portal(e) => e.contextmenu,
74142            Self::Source(e) => e.contextmenu,
74143            Self::Canvas(e) => e.contextmenu,
74144            Self::Noscript(e) => e.contextmenu,
74145            Self::Script(e) => e.contextmenu,
74146            Self::Del(e) => e.contextmenu,
74147            Self::Ins(e) => e.contextmenu,
74148            Self::Caption(e) => e.contextmenu,
74149            Self::Col(e) => e.contextmenu,
74150            Self::Colgroup(e) => e.contextmenu,
74151            Self::Table(e) => e.contextmenu,
74152            Self::Tbody(e) => e.contextmenu,
74153            Self::Td(e) => e.contextmenu,
74154            Self::Tfoot(e) => e.contextmenu,
74155            Self::Th(e) => e.contextmenu,
74156            Self::Thead(e) => e.contextmenu,
74157            Self::Tr(e) => e.contextmenu,
74158            Self::Button(e) => e.contextmenu,
74159            Self::Datalist(e) => e.contextmenu,
74160            Self::Fieldset(e) => e.contextmenu,
74161            Self::Form(e) => e.contextmenu,
74162            Self::Input(e) => e.contextmenu,
74163            Self::Label(e) => e.contextmenu,
74164            Self::Legend(e) => e.contextmenu,
74165            Self::Meter(e) => e.contextmenu,
74166            Self::Optgroup(e) => e.contextmenu,
74167            Self::Option(e) => e.contextmenu,
74168            Self::Output(e) => e.contextmenu,
74169            Self::Progress(e) => e.contextmenu,
74170            Self::Select(e) => e.contextmenu,
74171            Self::Textarea(e) => e.contextmenu,
74172            Self::Details(e) => e.contextmenu,
74173            Self::Dialog(e) => e.contextmenu,
74174            Self::Summary(e) => e.contextmenu,
74175            Self::Slot(e) => e.contextmenu,
74176            Self::Template(e) => e.contextmenu,
74177            Self::Acronym(e) => e.contextmenu,
74178            Self::Applet(e) => e.contextmenu,
74179            Self::Bgsound(e) => e.contextmenu,
74180            Self::Big(e) => e.contextmenu,
74181            Self::Blink(e) => e.contextmenu,
74182            Self::Center(e) => e.contextmenu,
74183            Self::Dir(e) => e.contextmenu,
74184            Self::Font(e) => e.contextmenu,
74185            Self::Frame(e) => e.contextmenu,
74186            Self::Frameset(e) => e.contextmenu,
74187            Self::Image(e) => e.contextmenu,
74188            Self::Keygen(e) => e.contextmenu,
74189            Self::Marquee(e) => e.contextmenu,
74190            Self::Menuitem(e) => e.contextmenu,
74191            Self::Nobr(e) => e.contextmenu,
74192            Self::Noembed(e) => e.contextmenu,
74193            Self::Noframes(e) => e.contextmenu,
74194            Self::Param(e) => e.contextmenu,
74195            Self::Plaintext(e) => e.contextmenu,
74196            Self::Rb(e) => e.contextmenu,
74197            Self::Rtc(e) => e.contextmenu,
74198            Self::Spacer(e) => e.contextmenu,
74199            Self::Strike(e) => e.contextmenu,
74200            Self::Tt(e) => e.contextmenu,
74201            Self::Xmp(e) => e.contextmenu,
74202            Self::H1(e) => e.contextmenu,
74203            Self::H2(e) => e.contextmenu,
74204            Self::H3(e) => e.contextmenu,
74205            Self::H4(e) => e.contextmenu,
74206            Self::H5(e) => e.contextmenu,
74207            Self::H6(e) => e.contextmenu,
74208            Self::Unknown(e) => e.contextmenu,
74209        }
74210    }
74211
74212    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
74213    ///   
74214    #[cfg(feature = "alloc")]
74215    pub fn data(&self) -> &alloc::collections::BTreeMap<&'life str, AttributeValue<'life>> {
74216        match self {
74217            Self::Html(e) => &e.data,
74218            Self::Base(e) => &e.data,
74219            Self::Head(e) => &e.data,
74220            Self::Link(e) => &e.data,
74221            Self::Meta(e) => &e.data,
74222            Self::Style(e) => &e.data,
74223            Self::Title(e) => &e.data,
74224            Self::Body(e) => &e.data,
74225            Self::Address(e) => &e.data,
74226            Self::Article(e) => &e.data,
74227            Self::Aside(e) => &e.data,
74228            Self::Footer(e) => &e.data,
74229            Self::Header(e) => &e.data,
74230            Self::Hgroup(e) => &e.data,
74231            Self::Main(e) => &e.data,
74232            Self::Nav(e) => &e.data,
74233            Self::Section(e) => &e.data,
74234            Self::Blockquote(e) => &e.data,
74235            Self::Dd(e) => &e.data,
74236            Self::Div(e) => &e.data,
74237            Self::Dl(e) => &e.data,
74238            Self::Dt(e) => &e.data,
74239            Self::Figcaption(e) => &e.data,
74240            Self::Figure(e) => &e.data,
74241            Self::Hr(e) => &e.data,
74242            Self::Li(e) => &e.data,
74243            Self::Menu(e) => &e.data,
74244            Self::Ol(e) => &e.data,
74245            Self::P(e) => &e.data,
74246            Self::Pre(e) => &e.data,
74247            Self::Ul(e) => &e.data,
74248            Self::A(e) => &e.data,
74249            Self::Abbr(e) => &e.data,
74250            Self::B(e) => &e.data,
74251            Self::Bdi(e) => &e.data,
74252            Self::Bdo(e) => &e.data,
74253            Self::Br(e) => &e.data,
74254            Self::Cite(e) => &e.data,
74255            Self::Code(e) => &e.data,
74256            Self::Data(e) => &e.data,
74257            Self::Dfn(e) => &e.data,
74258            Self::Em(e) => &e.data,
74259            Self::I(e) => &e.data,
74260            Self::Kbd(e) => &e.data,
74261            Self::Mark(e) => &e.data,
74262            Self::Q(e) => &e.data,
74263            Self::Rp(e) => &e.data,
74264            Self::Rt(e) => &e.data,
74265            Self::Ruby(e) => &e.data,
74266            Self::S(e) => &e.data,
74267            Self::Samp(e) => &e.data,
74268            Self::Small(e) => &e.data,
74269            Self::Span(e) => &e.data,
74270            Self::Strong(e) => &e.data,
74271            Self::Sub(e) => &e.data,
74272            Self::Sup(e) => &e.data,
74273            Self::Time(e) => &e.data,
74274            Self::U(e) => &e.data,
74275            Self::Var(e) => &e.data,
74276            Self::Wbr(e) => &e.data,
74277            Self::Area(e) => &e.data,
74278            Self::Audio(e) => &e.data,
74279            Self::Img(e) => &e.data,
74280            Self::Map(e) => &e.data,
74281            Self::Track(e) => &e.data,
74282            Self::Video(e) => &e.data,
74283            Self::Embed(e) => &e.data,
74284            Self::Iframe(e) => &e.data,
74285            Self::Object(e) => &e.data,
74286            Self::Picture(e) => &e.data,
74287            Self::Portal(e) => &e.data,
74288            Self::Source(e) => &e.data,
74289            Self::Canvas(e) => &e.data,
74290            Self::Noscript(e) => &e.data,
74291            Self::Script(e) => &e.data,
74292            Self::Del(e) => &e.data,
74293            Self::Ins(e) => &e.data,
74294            Self::Caption(e) => &e.data,
74295            Self::Col(e) => &e.data,
74296            Self::Colgroup(e) => &e.data,
74297            Self::Table(e) => &e.data,
74298            Self::Tbody(e) => &e.data,
74299            Self::Td(e) => &e.data,
74300            Self::Tfoot(e) => &e.data,
74301            Self::Th(e) => &e.data,
74302            Self::Thead(e) => &e.data,
74303            Self::Tr(e) => &e.data,
74304            Self::Button(e) => &e.data,
74305            Self::Datalist(e) => &e.data,
74306            Self::Fieldset(e) => &e.data,
74307            Self::Form(e) => &e.data,
74308            Self::Input(e) => &e.data,
74309            Self::Label(e) => &e.data,
74310            Self::Legend(e) => &e.data,
74311            Self::Meter(e) => &e.data,
74312            Self::Optgroup(e) => &e.data,
74313            Self::Option(e) => &e.data,
74314            Self::Output(e) => &e.data,
74315            Self::Progress(e) => &e.data,
74316            Self::Select(e) => &e.data,
74317            Self::Textarea(e) => &e.data,
74318            Self::Details(e) => &e.data,
74319            Self::Dialog(e) => &e.data,
74320            Self::Summary(e) => &e.data,
74321            Self::Slot(e) => &e.data,
74322            Self::Template(e) => &e.data,
74323            Self::Acronym(e) => &e.data,
74324            Self::Applet(e) => &e.data,
74325            Self::Bgsound(e) => &e.data,
74326            Self::Big(e) => &e.data,
74327            Self::Blink(e) => &e.data,
74328            Self::Center(e) => &e.data,
74329            Self::Dir(e) => &e.data,
74330            Self::Font(e) => &e.data,
74331            Self::Frame(e) => &e.data,
74332            Self::Frameset(e) => &e.data,
74333            Self::Image(e) => &e.data,
74334            Self::Keygen(e) => &e.data,
74335            Self::Marquee(e) => &e.data,
74336            Self::Menuitem(e) => &e.data,
74337            Self::Nobr(e) => &e.data,
74338            Self::Noembed(e) => &e.data,
74339            Self::Noframes(e) => &e.data,
74340            Self::Param(e) => &e.data,
74341            Self::Plaintext(e) => &e.data,
74342            Self::Rb(e) => &e.data,
74343            Self::Rtc(e) => &e.data,
74344            Self::Spacer(e) => &e.data,
74345            Self::Strike(e) => &e.data,
74346            Self::Tt(e) => &e.data,
74347            Self::Xmp(e) => &e.data,
74348            Self::H1(e) => &e.data,
74349            Self::H2(e) => &e.data,
74350            Self::H3(e) => &e.data,
74351            Self::H4(e) => &e.data,
74352            Self::H5(e) => &e.data,
74353            Self::H6(e) => &e.data,
74354            Self::Unknown(e) => &e.data,
74355        }
74356    }
74357
74358    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
74359    ///     <ul>
74360    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
74361    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
74362    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
74363    ///     </ul>
74364    ///   
74365
74366    pub fn dir(&self) -> core::option::Option<AttributeValue<'life>> {
74367        match self {
74368            Self::Html(e) => e.dir,
74369            Self::Base(e) => e.dir,
74370            Self::Head(e) => e.dir,
74371            Self::Link(e) => e.dir,
74372            Self::Meta(e) => e.dir,
74373            Self::Style(e) => e.dir,
74374            Self::Title(e) => e.dir,
74375            Self::Body(e) => e.dir,
74376            Self::Address(e) => e.dir,
74377            Self::Article(e) => e.dir,
74378            Self::Aside(e) => e.dir,
74379            Self::Footer(e) => e.dir,
74380            Self::Header(e) => e.dir,
74381            Self::Hgroup(e) => e.dir,
74382            Self::Main(e) => e.dir,
74383            Self::Nav(e) => e.dir,
74384            Self::Section(e) => e.dir,
74385            Self::Blockquote(e) => e.dir,
74386            Self::Dd(e) => e.dir,
74387            Self::Div(e) => e.dir,
74388            Self::Dl(e) => e.dir,
74389            Self::Dt(e) => e.dir,
74390            Self::Figcaption(e) => e.dir,
74391            Self::Figure(e) => e.dir,
74392            Self::Hr(e) => e.dir,
74393            Self::Li(e) => e.dir,
74394            Self::Menu(e) => e.dir,
74395            Self::Ol(e) => e.dir,
74396            Self::P(e) => e.dir,
74397            Self::Pre(e) => e.dir,
74398            Self::Ul(e) => e.dir,
74399            Self::A(e) => e.dir,
74400            Self::Abbr(e) => e.dir,
74401            Self::B(e) => e.dir,
74402            Self::Bdi(e) => e.dir,
74403            Self::Bdo(e) => e.dir,
74404            Self::Br(e) => e.dir,
74405            Self::Cite(e) => e.dir,
74406            Self::Code(e) => e.dir,
74407            Self::Data(e) => e.dir,
74408            Self::Dfn(e) => e.dir,
74409            Self::Em(e) => e.dir,
74410            Self::I(e) => e.dir,
74411            Self::Kbd(e) => e.dir,
74412            Self::Mark(e) => e.dir,
74413            Self::Q(e) => e.dir,
74414            Self::Rp(e) => e.dir,
74415            Self::Rt(e) => e.dir,
74416            Self::Ruby(e) => e.dir,
74417            Self::S(e) => e.dir,
74418            Self::Samp(e) => e.dir,
74419            Self::Small(e) => e.dir,
74420            Self::Span(e) => e.dir,
74421            Self::Strong(e) => e.dir,
74422            Self::Sub(e) => e.dir,
74423            Self::Sup(e) => e.dir,
74424            Self::Time(e) => e.dir,
74425            Self::U(e) => e.dir,
74426            Self::Var(e) => e.dir,
74427            Self::Wbr(e) => e.dir,
74428            Self::Area(e) => e.dir,
74429            Self::Audio(e) => e.dir,
74430            Self::Img(e) => e.dir,
74431            Self::Map(e) => e.dir,
74432            Self::Track(e) => e.dir,
74433            Self::Video(e) => e.dir,
74434            Self::Embed(e) => e.dir,
74435            Self::Iframe(e) => e.dir,
74436            Self::Object(e) => e.dir,
74437            Self::Picture(e) => e.dir,
74438            Self::Portal(e) => e.dir,
74439            Self::Source(e) => e.dir,
74440            Self::Canvas(e) => e.dir,
74441            Self::Noscript(e) => e.dir,
74442            Self::Script(e) => e.dir,
74443            Self::Del(e) => e.dir,
74444            Self::Ins(e) => e.dir,
74445            Self::Caption(e) => e.dir,
74446            Self::Col(e) => e.dir,
74447            Self::Colgroup(e) => e.dir,
74448            Self::Table(e) => e.dir,
74449            Self::Tbody(e) => e.dir,
74450            Self::Td(e) => e.dir,
74451            Self::Tfoot(e) => e.dir,
74452            Self::Th(e) => e.dir,
74453            Self::Thead(e) => e.dir,
74454            Self::Tr(e) => e.dir,
74455            Self::Button(e) => e.dir,
74456            Self::Datalist(e) => e.dir,
74457            Self::Fieldset(e) => e.dir,
74458            Self::Form(e) => e.dir,
74459            Self::Input(e) => e.dir,
74460            Self::Label(e) => e.dir,
74461            Self::Legend(e) => e.dir,
74462            Self::Meter(e) => e.dir,
74463            Self::Optgroup(e) => e.dir,
74464            Self::Option(e) => e.dir,
74465            Self::Output(e) => e.dir,
74466            Self::Progress(e) => e.dir,
74467            Self::Select(e) => e.dir,
74468            Self::Textarea(e) => e.dir,
74469            Self::Details(e) => e.dir,
74470            Self::Dialog(e) => e.dir,
74471            Self::Summary(e) => e.dir,
74472            Self::Slot(e) => e.dir,
74473            Self::Template(e) => e.dir,
74474            Self::Acronym(e) => e.dir,
74475            Self::Applet(e) => e.dir,
74476            Self::Bgsound(e) => e.dir,
74477            Self::Big(e) => e.dir,
74478            Self::Blink(e) => e.dir,
74479            Self::Center(e) => e.dir,
74480            Self::Dir(e) => e.dir,
74481            Self::Font(e) => e.dir,
74482            Self::Frame(e) => e.dir,
74483            Self::Frameset(e) => e.dir,
74484            Self::Image(e) => e.dir,
74485            Self::Keygen(e) => e.dir,
74486            Self::Marquee(e) => e.dir,
74487            Self::Menuitem(e) => e.dir,
74488            Self::Nobr(e) => e.dir,
74489            Self::Noembed(e) => e.dir,
74490            Self::Noframes(e) => e.dir,
74491            Self::Param(e) => e.dir,
74492            Self::Plaintext(e) => e.dir,
74493            Self::Rb(e) => e.dir,
74494            Self::Rtc(e) => e.dir,
74495            Self::Spacer(e) => e.dir,
74496            Self::Strike(e) => e.dir,
74497            Self::Tt(e) => e.dir,
74498            Self::Xmp(e) => e.dir,
74499            Self::H1(e) => e.dir,
74500            Self::H2(e) => e.dir,
74501            Self::H3(e) => e.dir,
74502            Self::H4(e) => e.dir,
74503            Self::H5(e) => e.dir,
74504            Self::H6(e) => e.dir,
74505            Self::Unknown(e) => e.dir,
74506        }
74507    }
74508
74509    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
74510    ///     <ul>
74511    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
74512    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
74513    ///     </ul>
74514    ///   
74515
74516    pub fn draggable(&self) -> core::option::Option<AttributeValue<'life>> {
74517        match self {
74518            Self::Html(e) => e.draggable,
74519            Self::Base(e) => e.draggable,
74520            Self::Head(e) => e.draggable,
74521            Self::Link(e) => e.draggable,
74522            Self::Meta(e) => e.draggable,
74523            Self::Style(e) => e.draggable,
74524            Self::Title(e) => e.draggable,
74525            Self::Body(e) => e.draggable,
74526            Self::Address(e) => e.draggable,
74527            Self::Article(e) => e.draggable,
74528            Self::Aside(e) => e.draggable,
74529            Self::Footer(e) => e.draggable,
74530            Self::Header(e) => e.draggable,
74531            Self::Hgroup(e) => e.draggable,
74532            Self::Main(e) => e.draggable,
74533            Self::Nav(e) => e.draggable,
74534            Self::Section(e) => e.draggable,
74535            Self::Blockquote(e) => e.draggable,
74536            Self::Dd(e) => e.draggable,
74537            Self::Div(e) => e.draggable,
74538            Self::Dl(e) => e.draggable,
74539            Self::Dt(e) => e.draggable,
74540            Self::Figcaption(e) => e.draggable,
74541            Self::Figure(e) => e.draggable,
74542            Self::Hr(e) => e.draggable,
74543            Self::Li(e) => e.draggable,
74544            Self::Menu(e) => e.draggable,
74545            Self::Ol(e) => e.draggable,
74546            Self::P(e) => e.draggable,
74547            Self::Pre(e) => e.draggable,
74548            Self::Ul(e) => e.draggable,
74549            Self::A(e) => e.draggable,
74550            Self::Abbr(e) => e.draggable,
74551            Self::B(e) => e.draggable,
74552            Self::Bdi(e) => e.draggable,
74553            Self::Bdo(e) => e.draggable,
74554            Self::Br(e) => e.draggable,
74555            Self::Cite(e) => e.draggable,
74556            Self::Code(e) => e.draggable,
74557            Self::Data(e) => e.draggable,
74558            Self::Dfn(e) => e.draggable,
74559            Self::Em(e) => e.draggable,
74560            Self::I(e) => e.draggable,
74561            Self::Kbd(e) => e.draggable,
74562            Self::Mark(e) => e.draggable,
74563            Self::Q(e) => e.draggable,
74564            Self::Rp(e) => e.draggable,
74565            Self::Rt(e) => e.draggable,
74566            Self::Ruby(e) => e.draggable,
74567            Self::S(e) => e.draggable,
74568            Self::Samp(e) => e.draggable,
74569            Self::Small(e) => e.draggable,
74570            Self::Span(e) => e.draggable,
74571            Self::Strong(e) => e.draggable,
74572            Self::Sub(e) => e.draggable,
74573            Self::Sup(e) => e.draggable,
74574            Self::Time(e) => e.draggable,
74575            Self::U(e) => e.draggable,
74576            Self::Var(e) => e.draggable,
74577            Self::Wbr(e) => e.draggable,
74578            Self::Area(e) => e.draggable,
74579            Self::Audio(e) => e.draggable,
74580            Self::Img(e) => e.draggable,
74581            Self::Map(e) => e.draggable,
74582            Self::Track(e) => e.draggable,
74583            Self::Video(e) => e.draggable,
74584            Self::Embed(e) => e.draggable,
74585            Self::Iframe(e) => e.draggable,
74586            Self::Object(e) => e.draggable,
74587            Self::Picture(e) => e.draggable,
74588            Self::Portal(e) => e.draggable,
74589            Self::Source(e) => e.draggable,
74590            Self::Canvas(e) => e.draggable,
74591            Self::Noscript(e) => e.draggable,
74592            Self::Script(e) => e.draggable,
74593            Self::Del(e) => e.draggable,
74594            Self::Ins(e) => e.draggable,
74595            Self::Caption(e) => e.draggable,
74596            Self::Col(e) => e.draggable,
74597            Self::Colgroup(e) => e.draggable,
74598            Self::Table(e) => e.draggable,
74599            Self::Tbody(e) => e.draggable,
74600            Self::Td(e) => e.draggable,
74601            Self::Tfoot(e) => e.draggable,
74602            Self::Th(e) => e.draggable,
74603            Self::Thead(e) => e.draggable,
74604            Self::Tr(e) => e.draggable,
74605            Self::Button(e) => e.draggable,
74606            Self::Datalist(e) => e.draggable,
74607            Self::Fieldset(e) => e.draggable,
74608            Self::Form(e) => e.draggable,
74609            Self::Input(e) => e.draggable,
74610            Self::Label(e) => e.draggable,
74611            Self::Legend(e) => e.draggable,
74612            Self::Meter(e) => e.draggable,
74613            Self::Optgroup(e) => e.draggable,
74614            Self::Option(e) => e.draggable,
74615            Self::Output(e) => e.draggable,
74616            Self::Progress(e) => e.draggable,
74617            Self::Select(e) => e.draggable,
74618            Self::Textarea(e) => e.draggable,
74619            Self::Details(e) => e.draggable,
74620            Self::Dialog(e) => e.draggable,
74621            Self::Summary(e) => e.draggable,
74622            Self::Slot(e) => e.draggable,
74623            Self::Template(e) => e.draggable,
74624            Self::Acronym(e) => e.draggable,
74625            Self::Applet(e) => e.draggable,
74626            Self::Bgsound(e) => e.draggable,
74627            Self::Big(e) => e.draggable,
74628            Self::Blink(e) => e.draggable,
74629            Self::Center(e) => e.draggable,
74630            Self::Dir(e) => e.draggable,
74631            Self::Font(e) => e.draggable,
74632            Self::Frame(e) => e.draggable,
74633            Self::Frameset(e) => e.draggable,
74634            Self::Image(e) => e.draggable,
74635            Self::Keygen(e) => e.draggable,
74636            Self::Marquee(e) => e.draggable,
74637            Self::Menuitem(e) => e.draggable,
74638            Self::Nobr(e) => e.draggable,
74639            Self::Noembed(e) => e.draggable,
74640            Self::Noframes(e) => e.draggable,
74641            Self::Param(e) => e.draggable,
74642            Self::Plaintext(e) => e.draggable,
74643            Self::Rb(e) => e.draggable,
74644            Self::Rtc(e) => e.draggable,
74645            Self::Spacer(e) => e.draggable,
74646            Self::Strike(e) => e.draggable,
74647            Self::Tt(e) => e.draggable,
74648            Self::Xmp(e) => e.draggable,
74649            Self::H1(e) => e.draggable,
74650            Self::H2(e) => e.draggable,
74651            Self::H3(e) => e.draggable,
74652            Self::H4(e) => e.draggable,
74653            Self::H5(e) => e.draggable,
74654            Self::H6(e) => e.draggable,
74655            Self::Unknown(e) => e.draggable,
74656        }
74657    }
74658
74659    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
74660    ///   
74661
74662    pub fn enterkeyhint(&self) -> core::option::Option<AttributeValue<'life>> {
74663        match self {
74664            Self::Html(e) => e.enterkeyhint,
74665            Self::Base(e) => e.enterkeyhint,
74666            Self::Head(e) => e.enterkeyhint,
74667            Self::Link(e) => e.enterkeyhint,
74668            Self::Meta(e) => e.enterkeyhint,
74669            Self::Style(e) => e.enterkeyhint,
74670            Self::Title(e) => e.enterkeyhint,
74671            Self::Body(e) => e.enterkeyhint,
74672            Self::Address(e) => e.enterkeyhint,
74673            Self::Article(e) => e.enterkeyhint,
74674            Self::Aside(e) => e.enterkeyhint,
74675            Self::Footer(e) => e.enterkeyhint,
74676            Self::Header(e) => e.enterkeyhint,
74677            Self::Hgroup(e) => e.enterkeyhint,
74678            Self::Main(e) => e.enterkeyhint,
74679            Self::Nav(e) => e.enterkeyhint,
74680            Self::Section(e) => e.enterkeyhint,
74681            Self::Blockquote(e) => e.enterkeyhint,
74682            Self::Dd(e) => e.enterkeyhint,
74683            Self::Div(e) => e.enterkeyhint,
74684            Self::Dl(e) => e.enterkeyhint,
74685            Self::Dt(e) => e.enterkeyhint,
74686            Self::Figcaption(e) => e.enterkeyhint,
74687            Self::Figure(e) => e.enterkeyhint,
74688            Self::Hr(e) => e.enterkeyhint,
74689            Self::Li(e) => e.enterkeyhint,
74690            Self::Menu(e) => e.enterkeyhint,
74691            Self::Ol(e) => e.enterkeyhint,
74692            Self::P(e) => e.enterkeyhint,
74693            Self::Pre(e) => e.enterkeyhint,
74694            Self::Ul(e) => e.enterkeyhint,
74695            Self::A(e) => e.enterkeyhint,
74696            Self::Abbr(e) => e.enterkeyhint,
74697            Self::B(e) => e.enterkeyhint,
74698            Self::Bdi(e) => e.enterkeyhint,
74699            Self::Bdo(e) => e.enterkeyhint,
74700            Self::Br(e) => e.enterkeyhint,
74701            Self::Cite(e) => e.enterkeyhint,
74702            Self::Code(e) => e.enterkeyhint,
74703            Self::Data(e) => e.enterkeyhint,
74704            Self::Dfn(e) => e.enterkeyhint,
74705            Self::Em(e) => e.enterkeyhint,
74706            Self::I(e) => e.enterkeyhint,
74707            Self::Kbd(e) => e.enterkeyhint,
74708            Self::Mark(e) => e.enterkeyhint,
74709            Self::Q(e) => e.enterkeyhint,
74710            Self::Rp(e) => e.enterkeyhint,
74711            Self::Rt(e) => e.enterkeyhint,
74712            Self::Ruby(e) => e.enterkeyhint,
74713            Self::S(e) => e.enterkeyhint,
74714            Self::Samp(e) => e.enterkeyhint,
74715            Self::Small(e) => e.enterkeyhint,
74716            Self::Span(e) => e.enterkeyhint,
74717            Self::Strong(e) => e.enterkeyhint,
74718            Self::Sub(e) => e.enterkeyhint,
74719            Self::Sup(e) => e.enterkeyhint,
74720            Self::Time(e) => e.enterkeyhint,
74721            Self::U(e) => e.enterkeyhint,
74722            Self::Var(e) => e.enterkeyhint,
74723            Self::Wbr(e) => e.enterkeyhint,
74724            Self::Area(e) => e.enterkeyhint,
74725            Self::Audio(e) => e.enterkeyhint,
74726            Self::Img(e) => e.enterkeyhint,
74727            Self::Map(e) => e.enterkeyhint,
74728            Self::Track(e) => e.enterkeyhint,
74729            Self::Video(e) => e.enterkeyhint,
74730            Self::Embed(e) => e.enterkeyhint,
74731            Self::Iframe(e) => e.enterkeyhint,
74732            Self::Object(e) => e.enterkeyhint,
74733            Self::Picture(e) => e.enterkeyhint,
74734            Self::Portal(e) => e.enterkeyhint,
74735            Self::Source(e) => e.enterkeyhint,
74736            Self::Canvas(e) => e.enterkeyhint,
74737            Self::Noscript(e) => e.enterkeyhint,
74738            Self::Script(e) => e.enterkeyhint,
74739            Self::Del(e) => e.enterkeyhint,
74740            Self::Ins(e) => e.enterkeyhint,
74741            Self::Caption(e) => e.enterkeyhint,
74742            Self::Col(e) => e.enterkeyhint,
74743            Self::Colgroup(e) => e.enterkeyhint,
74744            Self::Table(e) => e.enterkeyhint,
74745            Self::Tbody(e) => e.enterkeyhint,
74746            Self::Td(e) => e.enterkeyhint,
74747            Self::Tfoot(e) => e.enterkeyhint,
74748            Self::Th(e) => e.enterkeyhint,
74749            Self::Thead(e) => e.enterkeyhint,
74750            Self::Tr(e) => e.enterkeyhint,
74751            Self::Button(e) => e.enterkeyhint,
74752            Self::Datalist(e) => e.enterkeyhint,
74753            Self::Fieldset(e) => e.enterkeyhint,
74754            Self::Form(e) => e.enterkeyhint,
74755            Self::Input(e) => e.enterkeyhint,
74756            Self::Label(e) => e.enterkeyhint,
74757            Self::Legend(e) => e.enterkeyhint,
74758            Self::Meter(e) => e.enterkeyhint,
74759            Self::Optgroup(e) => e.enterkeyhint,
74760            Self::Option(e) => e.enterkeyhint,
74761            Self::Output(e) => e.enterkeyhint,
74762            Self::Progress(e) => e.enterkeyhint,
74763            Self::Select(e) => e.enterkeyhint,
74764            Self::Textarea(e) => e.enterkeyhint,
74765            Self::Details(e) => e.enterkeyhint,
74766            Self::Dialog(e) => e.enterkeyhint,
74767            Self::Summary(e) => e.enterkeyhint,
74768            Self::Slot(e) => e.enterkeyhint,
74769            Self::Template(e) => e.enterkeyhint,
74770            Self::Acronym(e) => e.enterkeyhint,
74771            Self::Applet(e) => e.enterkeyhint,
74772            Self::Bgsound(e) => e.enterkeyhint,
74773            Self::Big(e) => e.enterkeyhint,
74774            Self::Blink(e) => e.enterkeyhint,
74775            Self::Center(e) => e.enterkeyhint,
74776            Self::Dir(e) => e.enterkeyhint,
74777            Self::Font(e) => e.enterkeyhint,
74778            Self::Frame(e) => e.enterkeyhint,
74779            Self::Frameset(e) => e.enterkeyhint,
74780            Self::Image(e) => e.enterkeyhint,
74781            Self::Keygen(e) => e.enterkeyhint,
74782            Self::Marquee(e) => e.enterkeyhint,
74783            Self::Menuitem(e) => e.enterkeyhint,
74784            Self::Nobr(e) => e.enterkeyhint,
74785            Self::Noembed(e) => e.enterkeyhint,
74786            Self::Noframes(e) => e.enterkeyhint,
74787            Self::Param(e) => e.enterkeyhint,
74788            Self::Plaintext(e) => e.enterkeyhint,
74789            Self::Rb(e) => e.enterkeyhint,
74790            Self::Rtc(e) => e.enterkeyhint,
74791            Self::Spacer(e) => e.enterkeyhint,
74792            Self::Strike(e) => e.enterkeyhint,
74793            Self::Tt(e) => e.enterkeyhint,
74794            Self::Xmp(e) => e.enterkeyhint,
74795            Self::H1(e) => e.enterkeyhint,
74796            Self::H2(e) => e.enterkeyhint,
74797            Self::H3(e) => e.enterkeyhint,
74798            Self::H4(e) => e.enterkeyhint,
74799            Self::H5(e) => e.enterkeyhint,
74800            Self::H6(e) => e.enterkeyhint,
74801            Self::Unknown(e) => e.enterkeyhint,
74802        }
74803    }
74804
74805    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
74806    ///   
74807
74808    pub fn exportparts(&self) -> core::option::Option<AttributeValue<'life>> {
74809        match self {
74810            Self::Html(e) => e.exportparts,
74811            Self::Base(e) => e.exportparts,
74812            Self::Head(e) => e.exportparts,
74813            Self::Link(e) => e.exportparts,
74814            Self::Meta(e) => e.exportparts,
74815            Self::Style(e) => e.exportparts,
74816            Self::Title(e) => e.exportparts,
74817            Self::Body(e) => e.exportparts,
74818            Self::Address(e) => e.exportparts,
74819            Self::Article(e) => e.exportparts,
74820            Self::Aside(e) => e.exportparts,
74821            Self::Footer(e) => e.exportparts,
74822            Self::Header(e) => e.exportparts,
74823            Self::Hgroup(e) => e.exportparts,
74824            Self::Main(e) => e.exportparts,
74825            Self::Nav(e) => e.exportparts,
74826            Self::Section(e) => e.exportparts,
74827            Self::Blockquote(e) => e.exportparts,
74828            Self::Dd(e) => e.exportparts,
74829            Self::Div(e) => e.exportparts,
74830            Self::Dl(e) => e.exportparts,
74831            Self::Dt(e) => e.exportparts,
74832            Self::Figcaption(e) => e.exportparts,
74833            Self::Figure(e) => e.exportparts,
74834            Self::Hr(e) => e.exportparts,
74835            Self::Li(e) => e.exportparts,
74836            Self::Menu(e) => e.exportparts,
74837            Self::Ol(e) => e.exportparts,
74838            Self::P(e) => e.exportparts,
74839            Self::Pre(e) => e.exportparts,
74840            Self::Ul(e) => e.exportparts,
74841            Self::A(e) => e.exportparts,
74842            Self::Abbr(e) => e.exportparts,
74843            Self::B(e) => e.exportparts,
74844            Self::Bdi(e) => e.exportparts,
74845            Self::Bdo(e) => e.exportparts,
74846            Self::Br(e) => e.exportparts,
74847            Self::Cite(e) => e.exportparts,
74848            Self::Code(e) => e.exportparts,
74849            Self::Data(e) => e.exportparts,
74850            Self::Dfn(e) => e.exportparts,
74851            Self::Em(e) => e.exportparts,
74852            Self::I(e) => e.exportparts,
74853            Self::Kbd(e) => e.exportparts,
74854            Self::Mark(e) => e.exportparts,
74855            Self::Q(e) => e.exportparts,
74856            Self::Rp(e) => e.exportparts,
74857            Self::Rt(e) => e.exportparts,
74858            Self::Ruby(e) => e.exportparts,
74859            Self::S(e) => e.exportparts,
74860            Self::Samp(e) => e.exportparts,
74861            Self::Small(e) => e.exportparts,
74862            Self::Span(e) => e.exportparts,
74863            Self::Strong(e) => e.exportparts,
74864            Self::Sub(e) => e.exportparts,
74865            Self::Sup(e) => e.exportparts,
74866            Self::Time(e) => e.exportparts,
74867            Self::U(e) => e.exportparts,
74868            Self::Var(e) => e.exportparts,
74869            Self::Wbr(e) => e.exportparts,
74870            Self::Area(e) => e.exportparts,
74871            Self::Audio(e) => e.exportparts,
74872            Self::Img(e) => e.exportparts,
74873            Self::Map(e) => e.exportparts,
74874            Self::Track(e) => e.exportparts,
74875            Self::Video(e) => e.exportparts,
74876            Self::Embed(e) => e.exportparts,
74877            Self::Iframe(e) => e.exportparts,
74878            Self::Object(e) => e.exportparts,
74879            Self::Picture(e) => e.exportparts,
74880            Self::Portal(e) => e.exportparts,
74881            Self::Source(e) => e.exportparts,
74882            Self::Canvas(e) => e.exportparts,
74883            Self::Noscript(e) => e.exportparts,
74884            Self::Script(e) => e.exportparts,
74885            Self::Del(e) => e.exportparts,
74886            Self::Ins(e) => e.exportparts,
74887            Self::Caption(e) => e.exportparts,
74888            Self::Col(e) => e.exportparts,
74889            Self::Colgroup(e) => e.exportparts,
74890            Self::Table(e) => e.exportparts,
74891            Self::Tbody(e) => e.exportparts,
74892            Self::Td(e) => e.exportparts,
74893            Self::Tfoot(e) => e.exportparts,
74894            Self::Th(e) => e.exportparts,
74895            Self::Thead(e) => e.exportparts,
74896            Self::Tr(e) => e.exportparts,
74897            Self::Button(e) => e.exportparts,
74898            Self::Datalist(e) => e.exportparts,
74899            Self::Fieldset(e) => e.exportparts,
74900            Self::Form(e) => e.exportparts,
74901            Self::Input(e) => e.exportparts,
74902            Self::Label(e) => e.exportparts,
74903            Self::Legend(e) => e.exportparts,
74904            Self::Meter(e) => e.exportparts,
74905            Self::Optgroup(e) => e.exportparts,
74906            Self::Option(e) => e.exportparts,
74907            Self::Output(e) => e.exportparts,
74908            Self::Progress(e) => e.exportparts,
74909            Self::Select(e) => e.exportparts,
74910            Self::Textarea(e) => e.exportparts,
74911            Self::Details(e) => e.exportparts,
74912            Self::Dialog(e) => e.exportparts,
74913            Self::Summary(e) => e.exportparts,
74914            Self::Slot(e) => e.exportparts,
74915            Self::Template(e) => e.exportparts,
74916            Self::Acronym(e) => e.exportparts,
74917            Self::Applet(e) => e.exportparts,
74918            Self::Bgsound(e) => e.exportparts,
74919            Self::Big(e) => e.exportparts,
74920            Self::Blink(e) => e.exportparts,
74921            Self::Center(e) => e.exportparts,
74922            Self::Dir(e) => e.exportparts,
74923            Self::Font(e) => e.exportparts,
74924            Self::Frame(e) => e.exportparts,
74925            Self::Frameset(e) => e.exportparts,
74926            Self::Image(e) => e.exportparts,
74927            Self::Keygen(e) => e.exportparts,
74928            Self::Marquee(e) => e.exportparts,
74929            Self::Menuitem(e) => e.exportparts,
74930            Self::Nobr(e) => e.exportparts,
74931            Self::Noembed(e) => e.exportparts,
74932            Self::Noframes(e) => e.exportparts,
74933            Self::Param(e) => e.exportparts,
74934            Self::Plaintext(e) => e.exportparts,
74935            Self::Rb(e) => e.exportparts,
74936            Self::Rtc(e) => e.exportparts,
74937            Self::Spacer(e) => e.exportparts,
74938            Self::Strike(e) => e.exportparts,
74939            Self::Tt(e) => e.exportparts,
74940            Self::Xmp(e) => e.exportparts,
74941            Self::H1(e) => e.exportparts,
74942            Self::H2(e) => e.exportparts,
74943            Self::H3(e) => e.exportparts,
74944            Self::H4(e) => e.exportparts,
74945            Self::H5(e) => e.exportparts,
74946            Self::H6(e) => e.exportparts,
74947            Self::Unknown(e) => e.exportparts,
74948        }
74949    }
74950    /// Extra attributes of the element.
74951
74952    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
74953    #[cfg(feature = "alloc")]
74954    pub fn extra(&self) -> &alloc::collections::BTreeMap<&'life str, AttributeValue<'life>> {
74955        match self {
74956            Self::Html(e) => &e.extra,
74957            Self::Base(e) => &e.extra,
74958            Self::Head(e) => &e.extra,
74959            Self::Link(e) => &e.extra,
74960            Self::Meta(e) => &e.extra,
74961            Self::Style(e) => &e.extra,
74962            Self::Title(e) => &e.extra,
74963            Self::Body(e) => &e.extra,
74964            Self::Address(e) => &e.extra,
74965            Self::Article(e) => &e.extra,
74966            Self::Aside(e) => &e.extra,
74967            Self::Footer(e) => &e.extra,
74968            Self::Header(e) => &e.extra,
74969            Self::Hgroup(e) => &e.extra,
74970            Self::Main(e) => &e.extra,
74971            Self::Nav(e) => &e.extra,
74972            Self::Section(e) => &e.extra,
74973            Self::Blockquote(e) => &e.extra,
74974            Self::Dd(e) => &e.extra,
74975            Self::Div(e) => &e.extra,
74976            Self::Dl(e) => &e.extra,
74977            Self::Dt(e) => &e.extra,
74978            Self::Figcaption(e) => &e.extra,
74979            Self::Figure(e) => &e.extra,
74980            Self::Hr(e) => &e.extra,
74981            Self::Li(e) => &e.extra,
74982            Self::Menu(e) => &e.extra,
74983            Self::Ol(e) => &e.extra,
74984            Self::P(e) => &e.extra,
74985            Self::Pre(e) => &e.extra,
74986            Self::Ul(e) => &e.extra,
74987            Self::A(e) => &e.extra,
74988            Self::Abbr(e) => &e.extra,
74989            Self::B(e) => &e.extra,
74990            Self::Bdi(e) => &e.extra,
74991            Self::Bdo(e) => &e.extra,
74992            Self::Br(e) => &e.extra,
74993            Self::Cite(e) => &e.extra,
74994            Self::Code(e) => &e.extra,
74995            Self::Data(e) => &e.extra,
74996            Self::Dfn(e) => &e.extra,
74997            Self::Em(e) => &e.extra,
74998            Self::I(e) => &e.extra,
74999            Self::Kbd(e) => &e.extra,
75000            Self::Mark(e) => &e.extra,
75001            Self::Q(e) => &e.extra,
75002            Self::Rp(e) => &e.extra,
75003            Self::Rt(e) => &e.extra,
75004            Self::Ruby(e) => &e.extra,
75005            Self::S(e) => &e.extra,
75006            Self::Samp(e) => &e.extra,
75007            Self::Small(e) => &e.extra,
75008            Self::Span(e) => &e.extra,
75009            Self::Strong(e) => &e.extra,
75010            Self::Sub(e) => &e.extra,
75011            Self::Sup(e) => &e.extra,
75012            Self::Time(e) => &e.extra,
75013            Self::U(e) => &e.extra,
75014            Self::Var(e) => &e.extra,
75015            Self::Wbr(e) => &e.extra,
75016            Self::Area(e) => &e.extra,
75017            Self::Audio(e) => &e.extra,
75018            Self::Img(e) => &e.extra,
75019            Self::Map(e) => &e.extra,
75020            Self::Track(e) => &e.extra,
75021            Self::Video(e) => &e.extra,
75022            Self::Embed(e) => &e.extra,
75023            Self::Iframe(e) => &e.extra,
75024            Self::Object(e) => &e.extra,
75025            Self::Picture(e) => &e.extra,
75026            Self::Portal(e) => &e.extra,
75027            Self::Source(e) => &e.extra,
75028            Self::Canvas(e) => &e.extra,
75029            Self::Noscript(e) => &e.extra,
75030            Self::Script(e) => &e.extra,
75031            Self::Del(e) => &e.extra,
75032            Self::Ins(e) => &e.extra,
75033            Self::Caption(e) => &e.extra,
75034            Self::Col(e) => &e.extra,
75035            Self::Colgroup(e) => &e.extra,
75036            Self::Table(e) => &e.extra,
75037            Self::Tbody(e) => &e.extra,
75038            Self::Td(e) => &e.extra,
75039            Self::Tfoot(e) => &e.extra,
75040            Self::Th(e) => &e.extra,
75041            Self::Thead(e) => &e.extra,
75042            Self::Tr(e) => &e.extra,
75043            Self::Button(e) => &e.extra,
75044            Self::Datalist(e) => &e.extra,
75045            Self::Fieldset(e) => &e.extra,
75046            Self::Form(e) => &e.extra,
75047            Self::Input(e) => &e.extra,
75048            Self::Label(e) => &e.extra,
75049            Self::Legend(e) => &e.extra,
75050            Self::Meter(e) => &e.extra,
75051            Self::Optgroup(e) => &e.extra,
75052            Self::Option(e) => &e.extra,
75053            Self::Output(e) => &e.extra,
75054            Self::Progress(e) => &e.extra,
75055            Self::Select(e) => &e.extra,
75056            Self::Textarea(e) => &e.extra,
75057            Self::Details(e) => &e.extra,
75058            Self::Dialog(e) => &e.extra,
75059            Self::Summary(e) => &e.extra,
75060            Self::Slot(e) => &e.extra,
75061            Self::Template(e) => &e.extra,
75062            Self::Acronym(e) => &e.extra,
75063            Self::Applet(e) => &e.extra,
75064            Self::Bgsound(e) => &e.extra,
75065            Self::Big(e) => &e.extra,
75066            Self::Blink(e) => &e.extra,
75067            Self::Center(e) => &e.extra,
75068            Self::Dir(e) => &e.extra,
75069            Self::Font(e) => &e.extra,
75070            Self::Frame(e) => &e.extra,
75071            Self::Frameset(e) => &e.extra,
75072            Self::Image(e) => &e.extra,
75073            Self::Keygen(e) => &e.extra,
75074            Self::Marquee(e) => &e.extra,
75075            Self::Menuitem(e) => &e.extra,
75076            Self::Nobr(e) => &e.extra,
75077            Self::Noembed(e) => &e.extra,
75078            Self::Noframes(e) => &e.extra,
75079            Self::Param(e) => &e.extra,
75080            Self::Plaintext(e) => &e.extra,
75081            Self::Rb(e) => &e.extra,
75082            Self::Rtc(e) => &e.extra,
75083            Self::Spacer(e) => &e.extra,
75084            Self::Strike(e) => &e.extra,
75085            Self::Tt(e) => &e.extra,
75086            Self::Xmp(e) => &e.extra,
75087            Self::H1(e) => &e.extra,
75088            Self::H2(e) => &e.extra,
75089            Self::H3(e) => &e.extra,
75090            Self::H4(e) => &e.extra,
75091            Self::H5(e) => &e.extra,
75092            Self::H6(e) => &e.extra,
75093            Self::Unknown(e) => &e.extra,
75094        }
75095    }
75096
75097    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
75098    ///   
75099
75100    pub fn hidden(&self) -> core::option::Option<AttributeValue<'life>> {
75101        match self {
75102            Self::Html(e) => e.hidden,
75103            Self::Base(e) => e.hidden,
75104            Self::Head(e) => e.hidden,
75105            Self::Link(e) => e.hidden,
75106            Self::Meta(e) => e.hidden,
75107            Self::Style(e) => e.hidden,
75108            Self::Title(e) => e.hidden,
75109            Self::Body(e) => e.hidden,
75110            Self::Address(e) => e.hidden,
75111            Self::Article(e) => e.hidden,
75112            Self::Aside(e) => e.hidden,
75113            Self::Footer(e) => e.hidden,
75114            Self::Header(e) => e.hidden,
75115            Self::Hgroup(e) => e.hidden,
75116            Self::Main(e) => e.hidden,
75117            Self::Nav(e) => e.hidden,
75118            Self::Section(e) => e.hidden,
75119            Self::Blockquote(e) => e.hidden,
75120            Self::Dd(e) => e.hidden,
75121            Self::Div(e) => e.hidden,
75122            Self::Dl(e) => e.hidden,
75123            Self::Dt(e) => e.hidden,
75124            Self::Figcaption(e) => e.hidden,
75125            Self::Figure(e) => e.hidden,
75126            Self::Hr(e) => e.hidden,
75127            Self::Li(e) => e.hidden,
75128            Self::Menu(e) => e.hidden,
75129            Self::Ol(e) => e.hidden,
75130            Self::P(e) => e.hidden,
75131            Self::Pre(e) => e.hidden,
75132            Self::Ul(e) => e.hidden,
75133            Self::A(e) => e.hidden,
75134            Self::Abbr(e) => e.hidden,
75135            Self::B(e) => e.hidden,
75136            Self::Bdi(e) => e.hidden,
75137            Self::Bdo(e) => e.hidden,
75138            Self::Br(e) => e.hidden,
75139            Self::Cite(e) => e.hidden,
75140            Self::Code(e) => e.hidden,
75141            Self::Data(e) => e.hidden,
75142            Self::Dfn(e) => e.hidden,
75143            Self::Em(e) => e.hidden,
75144            Self::I(e) => e.hidden,
75145            Self::Kbd(e) => e.hidden,
75146            Self::Mark(e) => e.hidden,
75147            Self::Q(e) => e.hidden,
75148            Self::Rp(e) => e.hidden,
75149            Self::Rt(e) => e.hidden,
75150            Self::Ruby(e) => e.hidden,
75151            Self::S(e) => e.hidden,
75152            Self::Samp(e) => e.hidden,
75153            Self::Small(e) => e.hidden,
75154            Self::Span(e) => e.hidden,
75155            Self::Strong(e) => e.hidden,
75156            Self::Sub(e) => e.hidden,
75157            Self::Sup(e) => e.hidden,
75158            Self::Time(e) => e.hidden,
75159            Self::U(e) => e.hidden,
75160            Self::Var(e) => e.hidden,
75161            Self::Wbr(e) => e.hidden,
75162            Self::Area(e) => e.hidden,
75163            Self::Audio(e) => e.hidden,
75164            Self::Img(e) => e.hidden,
75165            Self::Map(e) => e.hidden,
75166            Self::Track(e) => e.hidden,
75167            Self::Video(e) => e.hidden,
75168            Self::Embed(e) => e.hidden,
75169            Self::Iframe(e) => e.hidden,
75170            Self::Object(e) => e.hidden,
75171            Self::Picture(e) => e.hidden,
75172            Self::Portal(e) => e.hidden,
75173            Self::Source(e) => e.hidden,
75174            Self::Canvas(e) => e.hidden,
75175            Self::Noscript(e) => e.hidden,
75176            Self::Script(e) => e.hidden,
75177            Self::Del(e) => e.hidden,
75178            Self::Ins(e) => e.hidden,
75179            Self::Caption(e) => e.hidden,
75180            Self::Col(e) => e.hidden,
75181            Self::Colgroup(e) => e.hidden,
75182            Self::Table(e) => e.hidden,
75183            Self::Tbody(e) => e.hidden,
75184            Self::Td(e) => e.hidden,
75185            Self::Tfoot(e) => e.hidden,
75186            Self::Th(e) => e.hidden,
75187            Self::Thead(e) => e.hidden,
75188            Self::Tr(e) => e.hidden,
75189            Self::Button(e) => e.hidden,
75190            Self::Datalist(e) => e.hidden,
75191            Self::Fieldset(e) => e.hidden,
75192            Self::Form(e) => e.hidden,
75193            Self::Input(e) => e.hidden,
75194            Self::Label(e) => e.hidden,
75195            Self::Legend(e) => e.hidden,
75196            Self::Meter(e) => e.hidden,
75197            Self::Optgroup(e) => e.hidden,
75198            Self::Option(e) => e.hidden,
75199            Self::Output(e) => e.hidden,
75200            Self::Progress(e) => e.hidden,
75201            Self::Select(e) => e.hidden,
75202            Self::Textarea(e) => e.hidden,
75203            Self::Details(e) => e.hidden,
75204            Self::Dialog(e) => e.hidden,
75205            Self::Summary(e) => e.hidden,
75206            Self::Slot(e) => e.hidden,
75207            Self::Template(e) => e.hidden,
75208            Self::Acronym(e) => e.hidden,
75209            Self::Applet(e) => e.hidden,
75210            Self::Bgsound(e) => e.hidden,
75211            Self::Big(e) => e.hidden,
75212            Self::Blink(e) => e.hidden,
75213            Self::Center(e) => e.hidden,
75214            Self::Dir(e) => e.hidden,
75215            Self::Font(e) => e.hidden,
75216            Self::Frame(e) => e.hidden,
75217            Self::Frameset(e) => e.hidden,
75218            Self::Image(e) => e.hidden,
75219            Self::Keygen(e) => e.hidden,
75220            Self::Marquee(e) => e.hidden,
75221            Self::Menuitem(e) => e.hidden,
75222            Self::Nobr(e) => e.hidden,
75223            Self::Noembed(e) => e.hidden,
75224            Self::Noframes(e) => e.hidden,
75225            Self::Param(e) => e.hidden,
75226            Self::Plaintext(e) => e.hidden,
75227            Self::Rb(e) => e.hidden,
75228            Self::Rtc(e) => e.hidden,
75229            Self::Spacer(e) => e.hidden,
75230            Self::Strike(e) => e.hidden,
75231            Self::Tt(e) => e.hidden,
75232            Self::Xmp(e) => e.hidden,
75233            Self::H1(e) => e.hidden,
75234            Self::H2(e) => e.hidden,
75235            Self::H3(e) => e.hidden,
75236            Self::H4(e) => e.hidden,
75237            Self::H5(e) => e.hidden,
75238            Self::H6(e) => e.hidden,
75239            Self::Unknown(e) => e.hidden,
75240        }
75241    }
75242
75243    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
75244    ///   
75245
75246    pub fn id(&self) -> core::option::Option<AttributeValue<'life>> {
75247        match self {
75248            Self::Html(e) => e.id,
75249            Self::Base(e) => e.id,
75250            Self::Head(e) => e.id,
75251            Self::Link(e) => e.id,
75252            Self::Meta(e) => e.id,
75253            Self::Style(e) => e.id,
75254            Self::Title(e) => e.id,
75255            Self::Body(e) => e.id,
75256            Self::Address(e) => e.id,
75257            Self::Article(e) => e.id,
75258            Self::Aside(e) => e.id,
75259            Self::Footer(e) => e.id,
75260            Self::Header(e) => e.id,
75261            Self::Hgroup(e) => e.id,
75262            Self::Main(e) => e.id,
75263            Self::Nav(e) => e.id,
75264            Self::Section(e) => e.id,
75265            Self::Blockquote(e) => e.id,
75266            Self::Dd(e) => e.id,
75267            Self::Div(e) => e.id,
75268            Self::Dl(e) => e.id,
75269            Self::Dt(e) => e.id,
75270            Self::Figcaption(e) => e.id,
75271            Self::Figure(e) => e.id,
75272            Self::Hr(e) => e.id,
75273            Self::Li(e) => e.id,
75274            Self::Menu(e) => e.id,
75275            Self::Ol(e) => e.id,
75276            Self::P(e) => e.id,
75277            Self::Pre(e) => e.id,
75278            Self::Ul(e) => e.id,
75279            Self::A(e) => e.id,
75280            Self::Abbr(e) => e.id,
75281            Self::B(e) => e.id,
75282            Self::Bdi(e) => e.id,
75283            Self::Bdo(e) => e.id,
75284            Self::Br(e) => e.id,
75285            Self::Cite(e) => e.id,
75286            Self::Code(e) => e.id,
75287            Self::Data(e) => e.id,
75288            Self::Dfn(e) => e.id,
75289            Self::Em(e) => e.id,
75290            Self::I(e) => e.id,
75291            Self::Kbd(e) => e.id,
75292            Self::Mark(e) => e.id,
75293            Self::Q(e) => e.id,
75294            Self::Rp(e) => e.id,
75295            Self::Rt(e) => e.id,
75296            Self::Ruby(e) => e.id,
75297            Self::S(e) => e.id,
75298            Self::Samp(e) => e.id,
75299            Self::Small(e) => e.id,
75300            Self::Span(e) => e.id,
75301            Self::Strong(e) => e.id,
75302            Self::Sub(e) => e.id,
75303            Self::Sup(e) => e.id,
75304            Self::Time(e) => e.id,
75305            Self::U(e) => e.id,
75306            Self::Var(e) => e.id,
75307            Self::Wbr(e) => e.id,
75308            Self::Area(e) => e.id,
75309            Self::Audio(e) => e.id,
75310            Self::Img(e) => e.id,
75311            Self::Map(e) => e.id,
75312            Self::Track(e) => e.id,
75313            Self::Video(e) => e.id,
75314            Self::Embed(e) => e.id,
75315            Self::Iframe(e) => e.id,
75316            Self::Object(e) => e.id,
75317            Self::Picture(e) => e.id,
75318            Self::Portal(e) => e.id,
75319            Self::Source(e) => e.id,
75320            Self::Canvas(e) => e.id,
75321            Self::Noscript(e) => e.id,
75322            Self::Script(e) => e.id,
75323            Self::Del(e) => e.id,
75324            Self::Ins(e) => e.id,
75325            Self::Caption(e) => e.id,
75326            Self::Col(e) => e.id,
75327            Self::Colgroup(e) => e.id,
75328            Self::Table(e) => e.id,
75329            Self::Tbody(e) => e.id,
75330            Self::Td(e) => e.id,
75331            Self::Tfoot(e) => e.id,
75332            Self::Th(e) => e.id,
75333            Self::Thead(e) => e.id,
75334            Self::Tr(e) => e.id,
75335            Self::Button(e) => e.id,
75336            Self::Datalist(e) => e.id,
75337            Self::Fieldset(e) => e.id,
75338            Self::Form(e) => e.id,
75339            Self::Input(e) => e.id,
75340            Self::Label(e) => e.id,
75341            Self::Legend(e) => e.id,
75342            Self::Meter(e) => e.id,
75343            Self::Optgroup(e) => e.id,
75344            Self::Option(e) => e.id,
75345            Self::Output(e) => e.id,
75346            Self::Progress(e) => e.id,
75347            Self::Select(e) => e.id,
75348            Self::Textarea(e) => e.id,
75349            Self::Details(e) => e.id,
75350            Self::Dialog(e) => e.id,
75351            Self::Summary(e) => e.id,
75352            Self::Slot(e) => e.id,
75353            Self::Template(e) => e.id,
75354            Self::Acronym(e) => e.id,
75355            Self::Applet(e) => e.id,
75356            Self::Bgsound(e) => e.id,
75357            Self::Big(e) => e.id,
75358            Self::Blink(e) => e.id,
75359            Self::Center(e) => e.id,
75360            Self::Dir(e) => e.id,
75361            Self::Font(e) => e.id,
75362            Self::Frame(e) => e.id,
75363            Self::Frameset(e) => e.id,
75364            Self::Image(e) => e.id,
75365            Self::Keygen(e) => e.id,
75366            Self::Marquee(e) => e.id,
75367            Self::Menuitem(e) => e.id,
75368            Self::Nobr(e) => e.id,
75369            Self::Noembed(e) => e.id,
75370            Self::Noframes(e) => e.id,
75371            Self::Param(e) => e.id,
75372            Self::Plaintext(e) => e.id,
75373            Self::Rb(e) => e.id,
75374            Self::Rtc(e) => e.id,
75375            Self::Spacer(e) => e.id,
75376            Self::Strike(e) => e.id,
75377            Self::Tt(e) => e.id,
75378            Self::Xmp(e) => e.id,
75379            Self::H1(e) => e.id,
75380            Self::H2(e) => e.id,
75381            Self::H3(e) => e.id,
75382            Self::H4(e) => e.id,
75383            Self::H5(e) => e.id,
75384            Self::H6(e) => e.id,
75385            Self::Unknown(e) => e.id,
75386        }
75387    }
75388
75389    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
75390    ///   
75391
75392    pub fn inert(&self) -> core::option::Option<AttributeValue<'life>> {
75393        match self {
75394            Self::Html(e) => e.inert,
75395            Self::Base(e) => e.inert,
75396            Self::Head(e) => e.inert,
75397            Self::Link(e) => e.inert,
75398            Self::Meta(e) => e.inert,
75399            Self::Style(e) => e.inert,
75400            Self::Title(e) => e.inert,
75401            Self::Body(e) => e.inert,
75402            Self::Address(e) => e.inert,
75403            Self::Article(e) => e.inert,
75404            Self::Aside(e) => e.inert,
75405            Self::Footer(e) => e.inert,
75406            Self::Header(e) => e.inert,
75407            Self::Hgroup(e) => e.inert,
75408            Self::Main(e) => e.inert,
75409            Self::Nav(e) => e.inert,
75410            Self::Section(e) => e.inert,
75411            Self::Blockquote(e) => e.inert,
75412            Self::Dd(e) => e.inert,
75413            Self::Div(e) => e.inert,
75414            Self::Dl(e) => e.inert,
75415            Self::Dt(e) => e.inert,
75416            Self::Figcaption(e) => e.inert,
75417            Self::Figure(e) => e.inert,
75418            Self::Hr(e) => e.inert,
75419            Self::Li(e) => e.inert,
75420            Self::Menu(e) => e.inert,
75421            Self::Ol(e) => e.inert,
75422            Self::P(e) => e.inert,
75423            Self::Pre(e) => e.inert,
75424            Self::Ul(e) => e.inert,
75425            Self::A(e) => e.inert,
75426            Self::Abbr(e) => e.inert,
75427            Self::B(e) => e.inert,
75428            Self::Bdi(e) => e.inert,
75429            Self::Bdo(e) => e.inert,
75430            Self::Br(e) => e.inert,
75431            Self::Cite(e) => e.inert,
75432            Self::Code(e) => e.inert,
75433            Self::Data(e) => e.inert,
75434            Self::Dfn(e) => e.inert,
75435            Self::Em(e) => e.inert,
75436            Self::I(e) => e.inert,
75437            Self::Kbd(e) => e.inert,
75438            Self::Mark(e) => e.inert,
75439            Self::Q(e) => e.inert,
75440            Self::Rp(e) => e.inert,
75441            Self::Rt(e) => e.inert,
75442            Self::Ruby(e) => e.inert,
75443            Self::S(e) => e.inert,
75444            Self::Samp(e) => e.inert,
75445            Self::Small(e) => e.inert,
75446            Self::Span(e) => e.inert,
75447            Self::Strong(e) => e.inert,
75448            Self::Sub(e) => e.inert,
75449            Self::Sup(e) => e.inert,
75450            Self::Time(e) => e.inert,
75451            Self::U(e) => e.inert,
75452            Self::Var(e) => e.inert,
75453            Self::Wbr(e) => e.inert,
75454            Self::Area(e) => e.inert,
75455            Self::Audio(e) => e.inert,
75456            Self::Img(e) => e.inert,
75457            Self::Map(e) => e.inert,
75458            Self::Track(e) => e.inert,
75459            Self::Video(e) => e.inert,
75460            Self::Embed(e) => e.inert,
75461            Self::Iframe(e) => e.inert,
75462            Self::Object(e) => e.inert,
75463            Self::Picture(e) => e.inert,
75464            Self::Portal(e) => e.inert,
75465            Self::Source(e) => e.inert,
75466            Self::Canvas(e) => e.inert,
75467            Self::Noscript(e) => e.inert,
75468            Self::Script(e) => e.inert,
75469            Self::Del(e) => e.inert,
75470            Self::Ins(e) => e.inert,
75471            Self::Caption(e) => e.inert,
75472            Self::Col(e) => e.inert,
75473            Self::Colgroup(e) => e.inert,
75474            Self::Table(e) => e.inert,
75475            Self::Tbody(e) => e.inert,
75476            Self::Td(e) => e.inert,
75477            Self::Tfoot(e) => e.inert,
75478            Self::Th(e) => e.inert,
75479            Self::Thead(e) => e.inert,
75480            Self::Tr(e) => e.inert,
75481            Self::Button(e) => e.inert,
75482            Self::Datalist(e) => e.inert,
75483            Self::Fieldset(e) => e.inert,
75484            Self::Form(e) => e.inert,
75485            Self::Input(e) => e.inert,
75486            Self::Label(e) => e.inert,
75487            Self::Legend(e) => e.inert,
75488            Self::Meter(e) => e.inert,
75489            Self::Optgroup(e) => e.inert,
75490            Self::Option(e) => e.inert,
75491            Self::Output(e) => e.inert,
75492            Self::Progress(e) => e.inert,
75493            Self::Select(e) => e.inert,
75494            Self::Textarea(e) => e.inert,
75495            Self::Details(e) => e.inert,
75496            Self::Dialog(e) => e.inert,
75497            Self::Summary(e) => e.inert,
75498            Self::Slot(e) => e.inert,
75499            Self::Template(e) => e.inert,
75500            Self::Acronym(e) => e.inert,
75501            Self::Applet(e) => e.inert,
75502            Self::Bgsound(e) => e.inert,
75503            Self::Big(e) => e.inert,
75504            Self::Blink(e) => e.inert,
75505            Self::Center(e) => e.inert,
75506            Self::Dir(e) => e.inert,
75507            Self::Font(e) => e.inert,
75508            Self::Frame(e) => e.inert,
75509            Self::Frameset(e) => e.inert,
75510            Self::Image(e) => e.inert,
75511            Self::Keygen(e) => e.inert,
75512            Self::Marquee(e) => e.inert,
75513            Self::Menuitem(e) => e.inert,
75514            Self::Nobr(e) => e.inert,
75515            Self::Noembed(e) => e.inert,
75516            Self::Noframes(e) => e.inert,
75517            Self::Param(e) => e.inert,
75518            Self::Plaintext(e) => e.inert,
75519            Self::Rb(e) => e.inert,
75520            Self::Rtc(e) => e.inert,
75521            Self::Spacer(e) => e.inert,
75522            Self::Strike(e) => e.inert,
75523            Self::Tt(e) => e.inert,
75524            Self::Xmp(e) => e.inert,
75525            Self::H1(e) => e.inert,
75526            Self::H2(e) => e.inert,
75527            Self::H3(e) => e.inert,
75528            Self::H4(e) => e.inert,
75529            Self::H5(e) => e.inert,
75530            Self::H6(e) => e.inert,
75531            Self::Unknown(e) => e.inert,
75532        }
75533    }
75534
75535    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
75536    ///   
75537
75538    pub fn inputmode(&self) -> core::option::Option<AttributeValue<'life>> {
75539        match self {
75540            Self::Html(e) => e.inputmode,
75541            Self::Base(e) => e.inputmode,
75542            Self::Head(e) => e.inputmode,
75543            Self::Link(e) => e.inputmode,
75544            Self::Meta(e) => e.inputmode,
75545            Self::Style(e) => e.inputmode,
75546            Self::Title(e) => e.inputmode,
75547            Self::Body(e) => e.inputmode,
75548            Self::Address(e) => e.inputmode,
75549            Self::Article(e) => e.inputmode,
75550            Self::Aside(e) => e.inputmode,
75551            Self::Footer(e) => e.inputmode,
75552            Self::Header(e) => e.inputmode,
75553            Self::Hgroup(e) => e.inputmode,
75554            Self::Main(e) => e.inputmode,
75555            Self::Nav(e) => e.inputmode,
75556            Self::Section(e) => e.inputmode,
75557            Self::Blockquote(e) => e.inputmode,
75558            Self::Dd(e) => e.inputmode,
75559            Self::Div(e) => e.inputmode,
75560            Self::Dl(e) => e.inputmode,
75561            Self::Dt(e) => e.inputmode,
75562            Self::Figcaption(e) => e.inputmode,
75563            Self::Figure(e) => e.inputmode,
75564            Self::Hr(e) => e.inputmode,
75565            Self::Li(e) => e.inputmode,
75566            Self::Menu(e) => e.inputmode,
75567            Self::Ol(e) => e.inputmode,
75568            Self::P(e) => e.inputmode,
75569            Self::Pre(e) => e.inputmode,
75570            Self::Ul(e) => e.inputmode,
75571            Self::A(e) => e.inputmode,
75572            Self::Abbr(e) => e.inputmode,
75573            Self::B(e) => e.inputmode,
75574            Self::Bdi(e) => e.inputmode,
75575            Self::Bdo(e) => e.inputmode,
75576            Self::Br(e) => e.inputmode,
75577            Self::Cite(e) => e.inputmode,
75578            Self::Code(e) => e.inputmode,
75579            Self::Data(e) => e.inputmode,
75580            Self::Dfn(e) => e.inputmode,
75581            Self::Em(e) => e.inputmode,
75582            Self::I(e) => e.inputmode,
75583            Self::Kbd(e) => e.inputmode,
75584            Self::Mark(e) => e.inputmode,
75585            Self::Q(e) => e.inputmode,
75586            Self::Rp(e) => e.inputmode,
75587            Self::Rt(e) => e.inputmode,
75588            Self::Ruby(e) => e.inputmode,
75589            Self::S(e) => e.inputmode,
75590            Self::Samp(e) => e.inputmode,
75591            Self::Small(e) => e.inputmode,
75592            Self::Span(e) => e.inputmode,
75593            Self::Strong(e) => e.inputmode,
75594            Self::Sub(e) => e.inputmode,
75595            Self::Sup(e) => e.inputmode,
75596            Self::Time(e) => e.inputmode,
75597            Self::U(e) => e.inputmode,
75598            Self::Var(e) => e.inputmode,
75599            Self::Wbr(e) => e.inputmode,
75600            Self::Area(e) => e.inputmode,
75601            Self::Audio(e) => e.inputmode,
75602            Self::Img(e) => e.inputmode,
75603            Self::Map(e) => e.inputmode,
75604            Self::Track(e) => e.inputmode,
75605            Self::Video(e) => e.inputmode,
75606            Self::Embed(e) => e.inputmode,
75607            Self::Iframe(e) => e.inputmode,
75608            Self::Object(e) => e.inputmode,
75609            Self::Picture(e) => e.inputmode,
75610            Self::Portal(e) => e.inputmode,
75611            Self::Source(e) => e.inputmode,
75612            Self::Canvas(e) => e.inputmode,
75613            Self::Noscript(e) => e.inputmode,
75614            Self::Script(e) => e.inputmode,
75615            Self::Del(e) => e.inputmode,
75616            Self::Ins(e) => e.inputmode,
75617            Self::Caption(e) => e.inputmode,
75618            Self::Col(e) => e.inputmode,
75619            Self::Colgroup(e) => e.inputmode,
75620            Self::Table(e) => e.inputmode,
75621            Self::Tbody(e) => e.inputmode,
75622            Self::Td(e) => e.inputmode,
75623            Self::Tfoot(e) => e.inputmode,
75624            Self::Th(e) => e.inputmode,
75625            Self::Thead(e) => e.inputmode,
75626            Self::Tr(e) => e.inputmode,
75627            Self::Button(e) => e.inputmode,
75628            Self::Datalist(e) => e.inputmode,
75629            Self::Fieldset(e) => e.inputmode,
75630            Self::Form(e) => e.inputmode,
75631            Self::Input(e) => e.inputmode,
75632            Self::Label(e) => e.inputmode,
75633            Self::Legend(e) => e.inputmode,
75634            Self::Meter(e) => e.inputmode,
75635            Self::Optgroup(e) => e.inputmode,
75636            Self::Option(e) => e.inputmode,
75637            Self::Output(e) => e.inputmode,
75638            Self::Progress(e) => e.inputmode,
75639            Self::Select(e) => e.inputmode,
75640            Self::Textarea(e) => e.inputmode,
75641            Self::Details(e) => e.inputmode,
75642            Self::Dialog(e) => e.inputmode,
75643            Self::Summary(e) => e.inputmode,
75644            Self::Slot(e) => e.inputmode,
75645            Self::Template(e) => e.inputmode,
75646            Self::Acronym(e) => e.inputmode,
75647            Self::Applet(e) => e.inputmode,
75648            Self::Bgsound(e) => e.inputmode,
75649            Self::Big(e) => e.inputmode,
75650            Self::Blink(e) => e.inputmode,
75651            Self::Center(e) => e.inputmode,
75652            Self::Dir(e) => e.inputmode,
75653            Self::Font(e) => e.inputmode,
75654            Self::Frame(e) => e.inputmode,
75655            Self::Frameset(e) => e.inputmode,
75656            Self::Image(e) => e.inputmode,
75657            Self::Keygen(e) => e.inputmode,
75658            Self::Marquee(e) => e.inputmode,
75659            Self::Menuitem(e) => e.inputmode,
75660            Self::Nobr(e) => e.inputmode,
75661            Self::Noembed(e) => e.inputmode,
75662            Self::Noframes(e) => e.inputmode,
75663            Self::Param(e) => e.inputmode,
75664            Self::Plaintext(e) => e.inputmode,
75665            Self::Rb(e) => e.inputmode,
75666            Self::Rtc(e) => e.inputmode,
75667            Self::Spacer(e) => e.inputmode,
75668            Self::Strike(e) => e.inputmode,
75669            Self::Tt(e) => e.inputmode,
75670            Self::Xmp(e) => e.inputmode,
75671            Self::H1(e) => e.inputmode,
75672            Self::H2(e) => e.inputmode,
75673            Self::H3(e) => e.inputmode,
75674            Self::H4(e) => e.inputmode,
75675            Self::H5(e) => e.inputmode,
75676            Self::H6(e) => e.inputmode,
75677            Self::Unknown(e) => e.inputmode,
75678        }
75679    }
75680
75681    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
75682    ///   
75683
75684    pub fn is(&self) -> core::option::Option<AttributeValue<'life>> {
75685        match self {
75686            Self::Html(e) => e.is,
75687            Self::Base(e) => e.is,
75688            Self::Head(e) => e.is,
75689            Self::Link(e) => e.is,
75690            Self::Meta(e) => e.is,
75691            Self::Style(e) => e.is,
75692            Self::Title(e) => e.is,
75693            Self::Body(e) => e.is,
75694            Self::Address(e) => e.is,
75695            Self::Article(e) => e.is,
75696            Self::Aside(e) => e.is,
75697            Self::Footer(e) => e.is,
75698            Self::Header(e) => e.is,
75699            Self::Hgroup(e) => e.is,
75700            Self::Main(e) => e.is,
75701            Self::Nav(e) => e.is,
75702            Self::Section(e) => e.is,
75703            Self::Blockquote(e) => e.is,
75704            Self::Dd(e) => e.is,
75705            Self::Div(e) => e.is,
75706            Self::Dl(e) => e.is,
75707            Self::Dt(e) => e.is,
75708            Self::Figcaption(e) => e.is,
75709            Self::Figure(e) => e.is,
75710            Self::Hr(e) => e.is,
75711            Self::Li(e) => e.is,
75712            Self::Menu(e) => e.is,
75713            Self::Ol(e) => e.is,
75714            Self::P(e) => e.is,
75715            Self::Pre(e) => e.is,
75716            Self::Ul(e) => e.is,
75717            Self::A(e) => e.is,
75718            Self::Abbr(e) => e.is,
75719            Self::B(e) => e.is,
75720            Self::Bdi(e) => e.is,
75721            Self::Bdo(e) => e.is,
75722            Self::Br(e) => e.is,
75723            Self::Cite(e) => e.is,
75724            Self::Code(e) => e.is,
75725            Self::Data(e) => e.is,
75726            Self::Dfn(e) => e.is,
75727            Self::Em(e) => e.is,
75728            Self::I(e) => e.is,
75729            Self::Kbd(e) => e.is,
75730            Self::Mark(e) => e.is,
75731            Self::Q(e) => e.is,
75732            Self::Rp(e) => e.is,
75733            Self::Rt(e) => e.is,
75734            Self::Ruby(e) => e.is,
75735            Self::S(e) => e.is,
75736            Self::Samp(e) => e.is,
75737            Self::Small(e) => e.is,
75738            Self::Span(e) => e.is,
75739            Self::Strong(e) => e.is,
75740            Self::Sub(e) => e.is,
75741            Self::Sup(e) => e.is,
75742            Self::Time(e) => e.is,
75743            Self::U(e) => e.is,
75744            Self::Var(e) => e.is,
75745            Self::Wbr(e) => e.is,
75746            Self::Area(e) => e.is,
75747            Self::Audio(e) => e.is,
75748            Self::Img(e) => e.is,
75749            Self::Map(e) => e.is,
75750            Self::Track(e) => e.is,
75751            Self::Video(e) => e.is,
75752            Self::Embed(e) => e.is,
75753            Self::Iframe(e) => e.is,
75754            Self::Object(e) => e.is,
75755            Self::Picture(e) => e.is,
75756            Self::Portal(e) => e.is,
75757            Self::Source(e) => e.is,
75758            Self::Canvas(e) => e.is,
75759            Self::Noscript(e) => e.is,
75760            Self::Script(e) => e.is,
75761            Self::Del(e) => e.is,
75762            Self::Ins(e) => e.is,
75763            Self::Caption(e) => e.is,
75764            Self::Col(e) => e.is,
75765            Self::Colgroup(e) => e.is,
75766            Self::Table(e) => e.is,
75767            Self::Tbody(e) => e.is,
75768            Self::Td(e) => e.is,
75769            Self::Tfoot(e) => e.is,
75770            Self::Th(e) => e.is,
75771            Self::Thead(e) => e.is,
75772            Self::Tr(e) => e.is,
75773            Self::Button(e) => e.is,
75774            Self::Datalist(e) => e.is,
75775            Self::Fieldset(e) => e.is,
75776            Self::Form(e) => e.is,
75777            Self::Input(e) => e.is,
75778            Self::Label(e) => e.is,
75779            Self::Legend(e) => e.is,
75780            Self::Meter(e) => e.is,
75781            Self::Optgroup(e) => e.is,
75782            Self::Option(e) => e.is,
75783            Self::Output(e) => e.is,
75784            Self::Progress(e) => e.is,
75785            Self::Select(e) => e.is,
75786            Self::Textarea(e) => e.is,
75787            Self::Details(e) => e.is,
75788            Self::Dialog(e) => e.is,
75789            Self::Summary(e) => e.is,
75790            Self::Slot(e) => e.is,
75791            Self::Template(e) => e.is,
75792            Self::Acronym(e) => e.is,
75793            Self::Applet(e) => e.is,
75794            Self::Bgsound(e) => e.is,
75795            Self::Big(e) => e.is,
75796            Self::Blink(e) => e.is,
75797            Self::Center(e) => e.is,
75798            Self::Dir(e) => e.is,
75799            Self::Font(e) => e.is,
75800            Self::Frame(e) => e.is,
75801            Self::Frameset(e) => e.is,
75802            Self::Image(e) => e.is,
75803            Self::Keygen(e) => e.is,
75804            Self::Marquee(e) => e.is,
75805            Self::Menuitem(e) => e.is,
75806            Self::Nobr(e) => e.is,
75807            Self::Noembed(e) => e.is,
75808            Self::Noframes(e) => e.is,
75809            Self::Param(e) => e.is,
75810            Self::Plaintext(e) => e.is,
75811            Self::Rb(e) => e.is,
75812            Self::Rtc(e) => e.is,
75813            Self::Spacer(e) => e.is,
75814            Self::Strike(e) => e.is,
75815            Self::Tt(e) => e.is,
75816            Self::Xmp(e) => e.is,
75817            Self::H1(e) => e.is,
75818            Self::H2(e) => e.is,
75819            Self::H3(e) => e.is,
75820            Self::H4(e) => e.is,
75821            Self::H5(e) => e.is,
75822            Self::H6(e) => e.is,
75823            Self::Unknown(e) => e.is,
75824        }
75825    }
75826
75827    ///     <p>The unique, global identifier of an item.</p>
75828    ///   
75829
75830    pub fn itemid(&self) -> core::option::Option<AttributeValue<'life>> {
75831        match self {
75832            Self::Html(e) => e.itemid,
75833            Self::Base(e) => e.itemid,
75834            Self::Head(e) => e.itemid,
75835            Self::Link(e) => e.itemid,
75836            Self::Meta(e) => e.itemid,
75837            Self::Style(e) => e.itemid,
75838            Self::Title(e) => e.itemid,
75839            Self::Body(e) => e.itemid,
75840            Self::Address(e) => e.itemid,
75841            Self::Article(e) => e.itemid,
75842            Self::Aside(e) => e.itemid,
75843            Self::Footer(e) => e.itemid,
75844            Self::Header(e) => e.itemid,
75845            Self::Hgroup(e) => e.itemid,
75846            Self::Main(e) => e.itemid,
75847            Self::Nav(e) => e.itemid,
75848            Self::Section(e) => e.itemid,
75849            Self::Blockquote(e) => e.itemid,
75850            Self::Dd(e) => e.itemid,
75851            Self::Div(e) => e.itemid,
75852            Self::Dl(e) => e.itemid,
75853            Self::Dt(e) => e.itemid,
75854            Self::Figcaption(e) => e.itemid,
75855            Self::Figure(e) => e.itemid,
75856            Self::Hr(e) => e.itemid,
75857            Self::Li(e) => e.itemid,
75858            Self::Menu(e) => e.itemid,
75859            Self::Ol(e) => e.itemid,
75860            Self::P(e) => e.itemid,
75861            Self::Pre(e) => e.itemid,
75862            Self::Ul(e) => e.itemid,
75863            Self::A(e) => e.itemid,
75864            Self::Abbr(e) => e.itemid,
75865            Self::B(e) => e.itemid,
75866            Self::Bdi(e) => e.itemid,
75867            Self::Bdo(e) => e.itemid,
75868            Self::Br(e) => e.itemid,
75869            Self::Cite(e) => e.itemid,
75870            Self::Code(e) => e.itemid,
75871            Self::Data(e) => e.itemid,
75872            Self::Dfn(e) => e.itemid,
75873            Self::Em(e) => e.itemid,
75874            Self::I(e) => e.itemid,
75875            Self::Kbd(e) => e.itemid,
75876            Self::Mark(e) => e.itemid,
75877            Self::Q(e) => e.itemid,
75878            Self::Rp(e) => e.itemid,
75879            Self::Rt(e) => e.itemid,
75880            Self::Ruby(e) => e.itemid,
75881            Self::S(e) => e.itemid,
75882            Self::Samp(e) => e.itemid,
75883            Self::Small(e) => e.itemid,
75884            Self::Span(e) => e.itemid,
75885            Self::Strong(e) => e.itemid,
75886            Self::Sub(e) => e.itemid,
75887            Self::Sup(e) => e.itemid,
75888            Self::Time(e) => e.itemid,
75889            Self::U(e) => e.itemid,
75890            Self::Var(e) => e.itemid,
75891            Self::Wbr(e) => e.itemid,
75892            Self::Area(e) => e.itemid,
75893            Self::Audio(e) => e.itemid,
75894            Self::Img(e) => e.itemid,
75895            Self::Map(e) => e.itemid,
75896            Self::Track(e) => e.itemid,
75897            Self::Video(e) => e.itemid,
75898            Self::Embed(e) => e.itemid,
75899            Self::Iframe(e) => e.itemid,
75900            Self::Object(e) => e.itemid,
75901            Self::Picture(e) => e.itemid,
75902            Self::Portal(e) => e.itemid,
75903            Self::Source(e) => e.itemid,
75904            Self::Canvas(e) => e.itemid,
75905            Self::Noscript(e) => e.itemid,
75906            Self::Script(e) => e.itemid,
75907            Self::Del(e) => e.itemid,
75908            Self::Ins(e) => e.itemid,
75909            Self::Caption(e) => e.itemid,
75910            Self::Col(e) => e.itemid,
75911            Self::Colgroup(e) => e.itemid,
75912            Self::Table(e) => e.itemid,
75913            Self::Tbody(e) => e.itemid,
75914            Self::Td(e) => e.itemid,
75915            Self::Tfoot(e) => e.itemid,
75916            Self::Th(e) => e.itemid,
75917            Self::Thead(e) => e.itemid,
75918            Self::Tr(e) => e.itemid,
75919            Self::Button(e) => e.itemid,
75920            Self::Datalist(e) => e.itemid,
75921            Self::Fieldset(e) => e.itemid,
75922            Self::Form(e) => e.itemid,
75923            Self::Input(e) => e.itemid,
75924            Self::Label(e) => e.itemid,
75925            Self::Legend(e) => e.itemid,
75926            Self::Meter(e) => e.itemid,
75927            Self::Optgroup(e) => e.itemid,
75928            Self::Option(e) => e.itemid,
75929            Self::Output(e) => e.itemid,
75930            Self::Progress(e) => e.itemid,
75931            Self::Select(e) => e.itemid,
75932            Self::Textarea(e) => e.itemid,
75933            Self::Details(e) => e.itemid,
75934            Self::Dialog(e) => e.itemid,
75935            Self::Summary(e) => e.itemid,
75936            Self::Slot(e) => e.itemid,
75937            Self::Template(e) => e.itemid,
75938            Self::Acronym(e) => e.itemid,
75939            Self::Applet(e) => e.itemid,
75940            Self::Bgsound(e) => e.itemid,
75941            Self::Big(e) => e.itemid,
75942            Self::Blink(e) => e.itemid,
75943            Self::Center(e) => e.itemid,
75944            Self::Dir(e) => e.itemid,
75945            Self::Font(e) => e.itemid,
75946            Self::Frame(e) => e.itemid,
75947            Self::Frameset(e) => e.itemid,
75948            Self::Image(e) => e.itemid,
75949            Self::Keygen(e) => e.itemid,
75950            Self::Marquee(e) => e.itemid,
75951            Self::Menuitem(e) => e.itemid,
75952            Self::Nobr(e) => e.itemid,
75953            Self::Noembed(e) => e.itemid,
75954            Self::Noframes(e) => e.itemid,
75955            Self::Param(e) => e.itemid,
75956            Self::Plaintext(e) => e.itemid,
75957            Self::Rb(e) => e.itemid,
75958            Self::Rtc(e) => e.itemid,
75959            Self::Spacer(e) => e.itemid,
75960            Self::Strike(e) => e.itemid,
75961            Self::Tt(e) => e.itemid,
75962            Self::Xmp(e) => e.itemid,
75963            Self::H1(e) => e.itemid,
75964            Self::H2(e) => e.itemid,
75965            Self::H3(e) => e.itemid,
75966            Self::H4(e) => e.itemid,
75967            Self::H5(e) => e.itemid,
75968            Self::H6(e) => e.itemid,
75969            Self::Unknown(e) => e.itemid,
75970        }
75971    }
75972
75973    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
75974    ///   
75975
75976    pub fn itemprop(&self) -> core::option::Option<AttributeValue<'life>> {
75977        match self {
75978            Self::Html(e) => e.itemprop,
75979            Self::Base(e) => e.itemprop,
75980            Self::Head(e) => e.itemprop,
75981            Self::Link(e) => e.itemprop,
75982            Self::Meta(e) => e.itemprop,
75983            Self::Style(e) => e.itemprop,
75984            Self::Title(e) => e.itemprop,
75985            Self::Body(e) => e.itemprop,
75986            Self::Address(e) => e.itemprop,
75987            Self::Article(e) => e.itemprop,
75988            Self::Aside(e) => e.itemprop,
75989            Self::Footer(e) => e.itemprop,
75990            Self::Header(e) => e.itemprop,
75991            Self::Hgroup(e) => e.itemprop,
75992            Self::Main(e) => e.itemprop,
75993            Self::Nav(e) => e.itemprop,
75994            Self::Section(e) => e.itemprop,
75995            Self::Blockquote(e) => e.itemprop,
75996            Self::Dd(e) => e.itemprop,
75997            Self::Div(e) => e.itemprop,
75998            Self::Dl(e) => e.itemprop,
75999            Self::Dt(e) => e.itemprop,
76000            Self::Figcaption(e) => e.itemprop,
76001            Self::Figure(e) => e.itemprop,
76002            Self::Hr(e) => e.itemprop,
76003            Self::Li(e) => e.itemprop,
76004            Self::Menu(e) => e.itemprop,
76005            Self::Ol(e) => e.itemprop,
76006            Self::P(e) => e.itemprop,
76007            Self::Pre(e) => e.itemprop,
76008            Self::Ul(e) => e.itemprop,
76009            Self::A(e) => e.itemprop,
76010            Self::Abbr(e) => e.itemprop,
76011            Self::B(e) => e.itemprop,
76012            Self::Bdi(e) => e.itemprop,
76013            Self::Bdo(e) => e.itemprop,
76014            Self::Br(e) => e.itemprop,
76015            Self::Cite(e) => e.itemprop,
76016            Self::Code(e) => e.itemprop,
76017            Self::Data(e) => e.itemprop,
76018            Self::Dfn(e) => e.itemprop,
76019            Self::Em(e) => e.itemprop,
76020            Self::I(e) => e.itemprop,
76021            Self::Kbd(e) => e.itemprop,
76022            Self::Mark(e) => e.itemprop,
76023            Self::Q(e) => e.itemprop,
76024            Self::Rp(e) => e.itemprop,
76025            Self::Rt(e) => e.itemprop,
76026            Self::Ruby(e) => e.itemprop,
76027            Self::S(e) => e.itemprop,
76028            Self::Samp(e) => e.itemprop,
76029            Self::Small(e) => e.itemprop,
76030            Self::Span(e) => e.itemprop,
76031            Self::Strong(e) => e.itemprop,
76032            Self::Sub(e) => e.itemprop,
76033            Self::Sup(e) => e.itemprop,
76034            Self::Time(e) => e.itemprop,
76035            Self::U(e) => e.itemprop,
76036            Self::Var(e) => e.itemprop,
76037            Self::Wbr(e) => e.itemprop,
76038            Self::Area(e) => e.itemprop,
76039            Self::Audio(e) => e.itemprop,
76040            Self::Img(e) => e.itemprop,
76041            Self::Map(e) => e.itemprop,
76042            Self::Track(e) => e.itemprop,
76043            Self::Video(e) => e.itemprop,
76044            Self::Embed(e) => e.itemprop,
76045            Self::Iframe(e) => e.itemprop,
76046            Self::Object(e) => e.itemprop,
76047            Self::Picture(e) => e.itemprop,
76048            Self::Portal(e) => e.itemprop,
76049            Self::Source(e) => e.itemprop,
76050            Self::Canvas(e) => e.itemprop,
76051            Self::Noscript(e) => e.itemprop,
76052            Self::Script(e) => e.itemprop,
76053            Self::Del(e) => e.itemprop,
76054            Self::Ins(e) => e.itemprop,
76055            Self::Caption(e) => e.itemprop,
76056            Self::Col(e) => e.itemprop,
76057            Self::Colgroup(e) => e.itemprop,
76058            Self::Table(e) => e.itemprop,
76059            Self::Tbody(e) => e.itemprop,
76060            Self::Td(e) => e.itemprop,
76061            Self::Tfoot(e) => e.itemprop,
76062            Self::Th(e) => e.itemprop,
76063            Self::Thead(e) => e.itemprop,
76064            Self::Tr(e) => e.itemprop,
76065            Self::Button(e) => e.itemprop,
76066            Self::Datalist(e) => e.itemprop,
76067            Self::Fieldset(e) => e.itemprop,
76068            Self::Form(e) => e.itemprop,
76069            Self::Input(e) => e.itemprop,
76070            Self::Label(e) => e.itemprop,
76071            Self::Legend(e) => e.itemprop,
76072            Self::Meter(e) => e.itemprop,
76073            Self::Optgroup(e) => e.itemprop,
76074            Self::Option(e) => e.itemprop,
76075            Self::Output(e) => e.itemprop,
76076            Self::Progress(e) => e.itemprop,
76077            Self::Select(e) => e.itemprop,
76078            Self::Textarea(e) => e.itemprop,
76079            Self::Details(e) => e.itemprop,
76080            Self::Dialog(e) => e.itemprop,
76081            Self::Summary(e) => e.itemprop,
76082            Self::Slot(e) => e.itemprop,
76083            Self::Template(e) => e.itemprop,
76084            Self::Acronym(e) => e.itemprop,
76085            Self::Applet(e) => e.itemprop,
76086            Self::Bgsound(e) => e.itemprop,
76087            Self::Big(e) => e.itemprop,
76088            Self::Blink(e) => e.itemprop,
76089            Self::Center(e) => e.itemprop,
76090            Self::Dir(e) => e.itemprop,
76091            Self::Font(e) => e.itemprop,
76092            Self::Frame(e) => e.itemprop,
76093            Self::Frameset(e) => e.itemprop,
76094            Self::Image(e) => e.itemprop,
76095            Self::Keygen(e) => e.itemprop,
76096            Self::Marquee(e) => e.itemprop,
76097            Self::Menuitem(e) => e.itemprop,
76098            Self::Nobr(e) => e.itemprop,
76099            Self::Noembed(e) => e.itemprop,
76100            Self::Noframes(e) => e.itemprop,
76101            Self::Param(e) => e.itemprop,
76102            Self::Plaintext(e) => e.itemprop,
76103            Self::Rb(e) => e.itemprop,
76104            Self::Rtc(e) => e.itemprop,
76105            Self::Spacer(e) => e.itemprop,
76106            Self::Strike(e) => e.itemprop,
76107            Self::Tt(e) => e.itemprop,
76108            Self::Xmp(e) => e.itemprop,
76109            Self::H1(e) => e.itemprop,
76110            Self::H2(e) => e.itemprop,
76111            Self::H3(e) => e.itemprop,
76112            Self::H4(e) => e.itemprop,
76113            Self::H5(e) => e.itemprop,
76114            Self::H6(e) => e.itemprop,
76115            Self::Unknown(e) => e.itemprop,
76116        }
76117    }
76118
76119    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
76120    ///   
76121
76122    pub fn itemref(&self) -> core::option::Option<AttributeValue<'life>> {
76123        match self {
76124            Self::Html(e) => e.itemref,
76125            Self::Base(e) => e.itemref,
76126            Self::Head(e) => e.itemref,
76127            Self::Link(e) => e.itemref,
76128            Self::Meta(e) => e.itemref,
76129            Self::Style(e) => e.itemref,
76130            Self::Title(e) => e.itemref,
76131            Self::Body(e) => e.itemref,
76132            Self::Address(e) => e.itemref,
76133            Self::Article(e) => e.itemref,
76134            Self::Aside(e) => e.itemref,
76135            Self::Footer(e) => e.itemref,
76136            Self::Header(e) => e.itemref,
76137            Self::Hgroup(e) => e.itemref,
76138            Self::Main(e) => e.itemref,
76139            Self::Nav(e) => e.itemref,
76140            Self::Section(e) => e.itemref,
76141            Self::Blockquote(e) => e.itemref,
76142            Self::Dd(e) => e.itemref,
76143            Self::Div(e) => e.itemref,
76144            Self::Dl(e) => e.itemref,
76145            Self::Dt(e) => e.itemref,
76146            Self::Figcaption(e) => e.itemref,
76147            Self::Figure(e) => e.itemref,
76148            Self::Hr(e) => e.itemref,
76149            Self::Li(e) => e.itemref,
76150            Self::Menu(e) => e.itemref,
76151            Self::Ol(e) => e.itemref,
76152            Self::P(e) => e.itemref,
76153            Self::Pre(e) => e.itemref,
76154            Self::Ul(e) => e.itemref,
76155            Self::A(e) => e.itemref,
76156            Self::Abbr(e) => e.itemref,
76157            Self::B(e) => e.itemref,
76158            Self::Bdi(e) => e.itemref,
76159            Self::Bdo(e) => e.itemref,
76160            Self::Br(e) => e.itemref,
76161            Self::Cite(e) => e.itemref,
76162            Self::Code(e) => e.itemref,
76163            Self::Data(e) => e.itemref,
76164            Self::Dfn(e) => e.itemref,
76165            Self::Em(e) => e.itemref,
76166            Self::I(e) => e.itemref,
76167            Self::Kbd(e) => e.itemref,
76168            Self::Mark(e) => e.itemref,
76169            Self::Q(e) => e.itemref,
76170            Self::Rp(e) => e.itemref,
76171            Self::Rt(e) => e.itemref,
76172            Self::Ruby(e) => e.itemref,
76173            Self::S(e) => e.itemref,
76174            Self::Samp(e) => e.itemref,
76175            Self::Small(e) => e.itemref,
76176            Self::Span(e) => e.itemref,
76177            Self::Strong(e) => e.itemref,
76178            Self::Sub(e) => e.itemref,
76179            Self::Sup(e) => e.itemref,
76180            Self::Time(e) => e.itemref,
76181            Self::U(e) => e.itemref,
76182            Self::Var(e) => e.itemref,
76183            Self::Wbr(e) => e.itemref,
76184            Self::Area(e) => e.itemref,
76185            Self::Audio(e) => e.itemref,
76186            Self::Img(e) => e.itemref,
76187            Self::Map(e) => e.itemref,
76188            Self::Track(e) => e.itemref,
76189            Self::Video(e) => e.itemref,
76190            Self::Embed(e) => e.itemref,
76191            Self::Iframe(e) => e.itemref,
76192            Self::Object(e) => e.itemref,
76193            Self::Picture(e) => e.itemref,
76194            Self::Portal(e) => e.itemref,
76195            Self::Source(e) => e.itemref,
76196            Self::Canvas(e) => e.itemref,
76197            Self::Noscript(e) => e.itemref,
76198            Self::Script(e) => e.itemref,
76199            Self::Del(e) => e.itemref,
76200            Self::Ins(e) => e.itemref,
76201            Self::Caption(e) => e.itemref,
76202            Self::Col(e) => e.itemref,
76203            Self::Colgroup(e) => e.itemref,
76204            Self::Table(e) => e.itemref,
76205            Self::Tbody(e) => e.itemref,
76206            Self::Td(e) => e.itemref,
76207            Self::Tfoot(e) => e.itemref,
76208            Self::Th(e) => e.itemref,
76209            Self::Thead(e) => e.itemref,
76210            Self::Tr(e) => e.itemref,
76211            Self::Button(e) => e.itemref,
76212            Self::Datalist(e) => e.itemref,
76213            Self::Fieldset(e) => e.itemref,
76214            Self::Form(e) => e.itemref,
76215            Self::Input(e) => e.itemref,
76216            Self::Label(e) => e.itemref,
76217            Self::Legend(e) => e.itemref,
76218            Self::Meter(e) => e.itemref,
76219            Self::Optgroup(e) => e.itemref,
76220            Self::Option(e) => e.itemref,
76221            Self::Output(e) => e.itemref,
76222            Self::Progress(e) => e.itemref,
76223            Self::Select(e) => e.itemref,
76224            Self::Textarea(e) => e.itemref,
76225            Self::Details(e) => e.itemref,
76226            Self::Dialog(e) => e.itemref,
76227            Self::Summary(e) => e.itemref,
76228            Self::Slot(e) => e.itemref,
76229            Self::Template(e) => e.itemref,
76230            Self::Acronym(e) => e.itemref,
76231            Self::Applet(e) => e.itemref,
76232            Self::Bgsound(e) => e.itemref,
76233            Self::Big(e) => e.itemref,
76234            Self::Blink(e) => e.itemref,
76235            Self::Center(e) => e.itemref,
76236            Self::Dir(e) => e.itemref,
76237            Self::Font(e) => e.itemref,
76238            Self::Frame(e) => e.itemref,
76239            Self::Frameset(e) => e.itemref,
76240            Self::Image(e) => e.itemref,
76241            Self::Keygen(e) => e.itemref,
76242            Self::Marquee(e) => e.itemref,
76243            Self::Menuitem(e) => e.itemref,
76244            Self::Nobr(e) => e.itemref,
76245            Self::Noembed(e) => e.itemref,
76246            Self::Noframes(e) => e.itemref,
76247            Self::Param(e) => e.itemref,
76248            Self::Plaintext(e) => e.itemref,
76249            Self::Rb(e) => e.itemref,
76250            Self::Rtc(e) => e.itemref,
76251            Self::Spacer(e) => e.itemref,
76252            Self::Strike(e) => e.itemref,
76253            Self::Tt(e) => e.itemref,
76254            Self::Xmp(e) => e.itemref,
76255            Self::H1(e) => e.itemref,
76256            Self::H2(e) => e.itemref,
76257            Self::H3(e) => e.itemref,
76258            Self::H4(e) => e.itemref,
76259            Self::H5(e) => e.itemref,
76260            Self::H6(e) => e.itemref,
76261            Self::Unknown(e) => e.itemref,
76262        }
76263    }
76264
76265    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
76266    ///   
76267
76268    pub fn itemscope(&self) -> core::option::Option<AttributeValue<'life>> {
76269        match self {
76270            Self::Html(e) => e.itemscope,
76271            Self::Base(e) => e.itemscope,
76272            Self::Head(e) => e.itemscope,
76273            Self::Link(e) => e.itemscope,
76274            Self::Meta(e) => e.itemscope,
76275            Self::Style(e) => e.itemscope,
76276            Self::Title(e) => e.itemscope,
76277            Self::Body(e) => e.itemscope,
76278            Self::Address(e) => e.itemscope,
76279            Self::Article(e) => e.itemscope,
76280            Self::Aside(e) => e.itemscope,
76281            Self::Footer(e) => e.itemscope,
76282            Self::Header(e) => e.itemscope,
76283            Self::Hgroup(e) => e.itemscope,
76284            Self::Main(e) => e.itemscope,
76285            Self::Nav(e) => e.itemscope,
76286            Self::Section(e) => e.itemscope,
76287            Self::Blockquote(e) => e.itemscope,
76288            Self::Dd(e) => e.itemscope,
76289            Self::Div(e) => e.itemscope,
76290            Self::Dl(e) => e.itemscope,
76291            Self::Dt(e) => e.itemscope,
76292            Self::Figcaption(e) => e.itemscope,
76293            Self::Figure(e) => e.itemscope,
76294            Self::Hr(e) => e.itemscope,
76295            Self::Li(e) => e.itemscope,
76296            Self::Menu(e) => e.itemscope,
76297            Self::Ol(e) => e.itemscope,
76298            Self::P(e) => e.itemscope,
76299            Self::Pre(e) => e.itemscope,
76300            Self::Ul(e) => e.itemscope,
76301            Self::A(e) => e.itemscope,
76302            Self::Abbr(e) => e.itemscope,
76303            Self::B(e) => e.itemscope,
76304            Self::Bdi(e) => e.itemscope,
76305            Self::Bdo(e) => e.itemscope,
76306            Self::Br(e) => e.itemscope,
76307            Self::Cite(e) => e.itemscope,
76308            Self::Code(e) => e.itemscope,
76309            Self::Data(e) => e.itemscope,
76310            Self::Dfn(e) => e.itemscope,
76311            Self::Em(e) => e.itemscope,
76312            Self::I(e) => e.itemscope,
76313            Self::Kbd(e) => e.itemscope,
76314            Self::Mark(e) => e.itemscope,
76315            Self::Q(e) => e.itemscope,
76316            Self::Rp(e) => e.itemscope,
76317            Self::Rt(e) => e.itemscope,
76318            Self::Ruby(e) => e.itemscope,
76319            Self::S(e) => e.itemscope,
76320            Self::Samp(e) => e.itemscope,
76321            Self::Small(e) => e.itemscope,
76322            Self::Span(e) => e.itemscope,
76323            Self::Strong(e) => e.itemscope,
76324            Self::Sub(e) => e.itemscope,
76325            Self::Sup(e) => e.itemscope,
76326            Self::Time(e) => e.itemscope,
76327            Self::U(e) => e.itemscope,
76328            Self::Var(e) => e.itemscope,
76329            Self::Wbr(e) => e.itemscope,
76330            Self::Area(e) => e.itemscope,
76331            Self::Audio(e) => e.itemscope,
76332            Self::Img(e) => e.itemscope,
76333            Self::Map(e) => e.itemscope,
76334            Self::Track(e) => e.itemscope,
76335            Self::Video(e) => e.itemscope,
76336            Self::Embed(e) => e.itemscope,
76337            Self::Iframe(e) => e.itemscope,
76338            Self::Object(e) => e.itemscope,
76339            Self::Picture(e) => e.itemscope,
76340            Self::Portal(e) => e.itemscope,
76341            Self::Source(e) => e.itemscope,
76342            Self::Canvas(e) => e.itemscope,
76343            Self::Noscript(e) => e.itemscope,
76344            Self::Script(e) => e.itemscope,
76345            Self::Del(e) => e.itemscope,
76346            Self::Ins(e) => e.itemscope,
76347            Self::Caption(e) => e.itemscope,
76348            Self::Col(e) => e.itemscope,
76349            Self::Colgroup(e) => e.itemscope,
76350            Self::Table(e) => e.itemscope,
76351            Self::Tbody(e) => e.itemscope,
76352            Self::Td(e) => e.itemscope,
76353            Self::Tfoot(e) => e.itemscope,
76354            Self::Th(e) => e.itemscope,
76355            Self::Thead(e) => e.itemscope,
76356            Self::Tr(e) => e.itemscope,
76357            Self::Button(e) => e.itemscope,
76358            Self::Datalist(e) => e.itemscope,
76359            Self::Fieldset(e) => e.itemscope,
76360            Self::Form(e) => e.itemscope,
76361            Self::Input(e) => e.itemscope,
76362            Self::Label(e) => e.itemscope,
76363            Self::Legend(e) => e.itemscope,
76364            Self::Meter(e) => e.itemscope,
76365            Self::Optgroup(e) => e.itemscope,
76366            Self::Option(e) => e.itemscope,
76367            Self::Output(e) => e.itemscope,
76368            Self::Progress(e) => e.itemscope,
76369            Self::Select(e) => e.itemscope,
76370            Self::Textarea(e) => e.itemscope,
76371            Self::Details(e) => e.itemscope,
76372            Self::Dialog(e) => e.itemscope,
76373            Self::Summary(e) => e.itemscope,
76374            Self::Slot(e) => e.itemscope,
76375            Self::Template(e) => e.itemscope,
76376            Self::Acronym(e) => e.itemscope,
76377            Self::Applet(e) => e.itemscope,
76378            Self::Bgsound(e) => e.itemscope,
76379            Self::Big(e) => e.itemscope,
76380            Self::Blink(e) => e.itemscope,
76381            Self::Center(e) => e.itemscope,
76382            Self::Dir(e) => e.itemscope,
76383            Self::Font(e) => e.itemscope,
76384            Self::Frame(e) => e.itemscope,
76385            Self::Frameset(e) => e.itemscope,
76386            Self::Image(e) => e.itemscope,
76387            Self::Keygen(e) => e.itemscope,
76388            Self::Marquee(e) => e.itemscope,
76389            Self::Menuitem(e) => e.itemscope,
76390            Self::Nobr(e) => e.itemscope,
76391            Self::Noembed(e) => e.itemscope,
76392            Self::Noframes(e) => e.itemscope,
76393            Self::Param(e) => e.itemscope,
76394            Self::Plaintext(e) => e.itemscope,
76395            Self::Rb(e) => e.itemscope,
76396            Self::Rtc(e) => e.itemscope,
76397            Self::Spacer(e) => e.itemscope,
76398            Self::Strike(e) => e.itemscope,
76399            Self::Tt(e) => e.itemscope,
76400            Self::Xmp(e) => e.itemscope,
76401            Self::H1(e) => e.itemscope,
76402            Self::H2(e) => e.itemscope,
76403            Self::H3(e) => e.itemscope,
76404            Self::H4(e) => e.itemscope,
76405            Self::H5(e) => e.itemscope,
76406            Self::H6(e) => e.itemscope,
76407            Self::Unknown(e) => e.itemscope,
76408        }
76409    }
76410
76411    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
76412    ///   
76413
76414    pub fn itemtype(&self) -> core::option::Option<AttributeValue<'life>> {
76415        match self {
76416            Self::Html(e) => e.itemtype,
76417            Self::Base(e) => e.itemtype,
76418            Self::Head(e) => e.itemtype,
76419            Self::Link(e) => e.itemtype,
76420            Self::Meta(e) => e.itemtype,
76421            Self::Style(e) => e.itemtype,
76422            Self::Title(e) => e.itemtype,
76423            Self::Body(e) => e.itemtype,
76424            Self::Address(e) => e.itemtype,
76425            Self::Article(e) => e.itemtype,
76426            Self::Aside(e) => e.itemtype,
76427            Self::Footer(e) => e.itemtype,
76428            Self::Header(e) => e.itemtype,
76429            Self::Hgroup(e) => e.itemtype,
76430            Self::Main(e) => e.itemtype,
76431            Self::Nav(e) => e.itemtype,
76432            Self::Section(e) => e.itemtype,
76433            Self::Blockquote(e) => e.itemtype,
76434            Self::Dd(e) => e.itemtype,
76435            Self::Div(e) => e.itemtype,
76436            Self::Dl(e) => e.itemtype,
76437            Self::Dt(e) => e.itemtype,
76438            Self::Figcaption(e) => e.itemtype,
76439            Self::Figure(e) => e.itemtype,
76440            Self::Hr(e) => e.itemtype,
76441            Self::Li(e) => e.itemtype,
76442            Self::Menu(e) => e.itemtype,
76443            Self::Ol(e) => e.itemtype,
76444            Self::P(e) => e.itemtype,
76445            Self::Pre(e) => e.itemtype,
76446            Self::Ul(e) => e.itemtype,
76447            Self::A(e) => e.itemtype,
76448            Self::Abbr(e) => e.itemtype,
76449            Self::B(e) => e.itemtype,
76450            Self::Bdi(e) => e.itemtype,
76451            Self::Bdo(e) => e.itemtype,
76452            Self::Br(e) => e.itemtype,
76453            Self::Cite(e) => e.itemtype,
76454            Self::Code(e) => e.itemtype,
76455            Self::Data(e) => e.itemtype,
76456            Self::Dfn(e) => e.itemtype,
76457            Self::Em(e) => e.itemtype,
76458            Self::I(e) => e.itemtype,
76459            Self::Kbd(e) => e.itemtype,
76460            Self::Mark(e) => e.itemtype,
76461            Self::Q(e) => e.itemtype,
76462            Self::Rp(e) => e.itemtype,
76463            Self::Rt(e) => e.itemtype,
76464            Self::Ruby(e) => e.itemtype,
76465            Self::S(e) => e.itemtype,
76466            Self::Samp(e) => e.itemtype,
76467            Self::Small(e) => e.itemtype,
76468            Self::Span(e) => e.itemtype,
76469            Self::Strong(e) => e.itemtype,
76470            Self::Sub(e) => e.itemtype,
76471            Self::Sup(e) => e.itemtype,
76472            Self::Time(e) => e.itemtype,
76473            Self::U(e) => e.itemtype,
76474            Self::Var(e) => e.itemtype,
76475            Self::Wbr(e) => e.itemtype,
76476            Self::Area(e) => e.itemtype,
76477            Self::Audio(e) => e.itemtype,
76478            Self::Img(e) => e.itemtype,
76479            Self::Map(e) => e.itemtype,
76480            Self::Track(e) => e.itemtype,
76481            Self::Video(e) => e.itemtype,
76482            Self::Embed(e) => e.itemtype,
76483            Self::Iframe(e) => e.itemtype,
76484            Self::Object(e) => e.itemtype,
76485            Self::Picture(e) => e.itemtype,
76486            Self::Portal(e) => e.itemtype,
76487            Self::Source(e) => e.itemtype,
76488            Self::Canvas(e) => e.itemtype,
76489            Self::Noscript(e) => e.itemtype,
76490            Self::Script(e) => e.itemtype,
76491            Self::Del(e) => e.itemtype,
76492            Self::Ins(e) => e.itemtype,
76493            Self::Caption(e) => e.itemtype,
76494            Self::Col(e) => e.itemtype,
76495            Self::Colgroup(e) => e.itemtype,
76496            Self::Table(e) => e.itemtype,
76497            Self::Tbody(e) => e.itemtype,
76498            Self::Td(e) => e.itemtype,
76499            Self::Tfoot(e) => e.itemtype,
76500            Self::Th(e) => e.itemtype,
76501            Self::Thead(e) => e.itemtype,
76502            Self::Tr(e) => e.itemtype,
76503            Self::Button(e) => e.itemtype,
76504            Self::Datalist(e) => e.itemtype,
76505            Self::Fieldset(e) => e.itemtype,
76506            Self::Form(e) => e.itemtype,
76507            Self::Input(e) => e.itemtype,
76508            Self::Label(e) => e.itemtype,
76509            Self::Legend(e) => e.itemtype,
76510            Self::Meter(e) => e.itemtype,
76511            Self::Optgroup(e) => e.itemtype,
76512            Self::Option(e) => e.itemtype,
76513            Self::Output(e) => e.itemtype,
76514            Self::Progress(e) => e.itemtype,
76515            Self::Select(e) => e.itemtype,
76516            Self::Textarea(e) => e.itemtype,
76517            Self::Details(e) => e.itemtype,
76518            Self::Dialog(e) => e.itemtype,
76519            Self::Summary(e) => e.itemtype,
76520            Self::Slot(e) => e.itemtype,
76521            Self::Template(e) => e.itemtype,
76522            Self::Acronym(e) => e.itemtype,
76523            Self::Applet(e) => e.itemtype,
76524            Self::Bgsound(e) => e.itemtype,
76525            Self::Big(e) => e.itemtype,
76526            Self::Blink(e) => e.itemtype,
76527            Self::Center(e) => e.itemtype,
76528            Self::Dir(e) => e.itemtype,
76529            Self::Font(e) => e.itemtype,
76530            Self::Frame(e) => e.itemtype,
76531            Self::Frameset(e) => e.itemtype,
76532            Self::Image(e) => e.itemtype,
76533            Self::Keygen(e) => e.itemtype,
76534            Self::Marquee(e) => e.itemtype,
76535            Self::Menuitem(e) => e.itemtype,
76536            Self::Nobr(e) => e.itemtype,
76537            Self::Noembed(e) => e.itemtype,
76538            Self::Noframes(e) => e.itemtype,
76539            Self::Param(e) => e.itemtype,
76540            Self::Plaintext(e) => e.itemtype,
76541            Self::Rb(e) => e.itemtype,
76542            Self::Rtc(e) => e.itemtype,
76543            Self::Spacer(e) => e.itemtype,
76544            Self::Strike(e) => e.itemtype,
76545            Self::Tt(e) => e.itemtype,
76546            Self::Xmp(e) => e.itemtype,
76547            Self::H1(e) => e.itemtype,
76548            Self::H2(e) => e.itemtype,
76549            Self::H3(e) => e.itemtype,
76550            Self::H4(e) => e.itemtype,
76551            Self::H5(e) => e.itemtype,
76552            Self::H6(e) => e.itemtype,
76553            Self::Unknown(e) => e.itemtype,
76554        }
76555    }
76556
76557    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
76558    ///   
76559
76560    pub fn lang(&self) -> core::option::Option<AttributeValue<'life>> {
76561        match self {
76562            Self::Html(e) => e.lang,
76563            Self::Base(e) => e.lang,
76564            Self::Head(e) => e.lang,
76565            Self::Link(e) => e.lang,
76566            Self::Meta(e) => e.lang,
76567            Self::Style(e) => e.lang,
76568            Self::Title(e) => e.lang,
76569            Self::Body(e) => e.lang,
76570            Self::Address(e) => e.lang,
76571            Self::Article(e) => e.lang,
76572            Self::Aside(e) => e.lang,
76573            Self::Footer(e) => e.lang,
76574            Self::Header(e) => e.lang,
76575            Self::Hgroup(e) => e.lang,
76576            Self::Main(e) => e.lang,
76577            Self::Nav(e) => e.lang,
76578            Self::Section(e) => e.lang,
76579            Self::Blockquote(e) => e.lang,
76580            Self::Dd(e) => e.lang,
76581            Self::Div(e) => e.lang,
76582            Self::Dl(e) => e.lang,
76583            Self::Dt(e) => e.lang,
76584            Self::Figcaption(e) => e.lang,
76585            Self::Figure(e) => e.lang,
76586            Self::Hr(e) => e.lang,
76587            Self::Li(e) => e.lang,
76588            Self::Menu(e) => e.lang,
76589            Self::Ol(e) => e.lang,
76590            Self::P(e) => e.lang,
76591            Self::Pre(e) => e.lang,
76592            Self::Ul(e) => e.lang,
76593            Self::A(e) => e.lang,
76594            Self::Abbr(e) => e.lang,
76595            Self::B(e) => e.lang,
76596            Self::Bdi(e) => e.lang,
76597            Self::Bdo(e) => e.lang,
76598            Self::Br(e) => e.lang,
76599            Self::Cite(e) => e.lang,
76600            Self::Code(e) => e.lang,
76601            Self::Data(e) => e.lang,
76602            Self::Dfn(e) => e.lang,
76603            Self::Em(e) => e.lang,
76604            Self::I(e) => e.lang,
76605            Self::Kbd(e) => e.lang,
76606            Self::Mark(e) => e.lang,
76607            Self::Q(e) => e.lang,
76608            Self::Rp(e) => e.lang,
76609            Self::Rt(e) => e.lang,
76610            Self::Ruby(e) => e.lang,
76611            Self::S(e) => e.lang,
76612            Self::Samp(e) => e.lang,
76613            Self::Small(e) => e.lang,
76614            Self::Span(e) => e.lang,
76615            Self::Strong(e) => e.lang,
76616            Self::Sub(e) => e.lang,
76617            Self::Sup(e) => e.lang,
76618            Self::Time(e) => e.lang,
76619            Self::U(e) => e.lang,
76620            Self::Var(e) => e.lang,
76621            Self::Wbr(e) => e.lang,
76622            Self::Area(e) => e.lang,
76623            Self::Audio(e) => e.lang,
76624            Self::Img(e) => e.lang,
76625            Self::Map(e) => e.lang,
76626            Self::Track(e) => e.lang,
76627            Self::Video(e) => e.lang,
76628            Self::Embed(e) => e.lang,
76629            Self::Iframe(e) => e.lang,
76630            Self::Object(e) => e.lang,
76631            Self::Picture(e) => e.lang,
76632            Self::Portal(e) => e.lang,
76633            Self::Source(e) => e.lang,
76634            Self::Canvas(e) => e.lang,
76635            Self::Noscript(e) => e.lang,
76636            Self::Script(e) => e.lang,
76637            Self::Del(e) => e.lang,
76638            Self::Ins(e) => e.lang,
76639            Self::Caption(e) => e.lang,
76640            Self::Col(e) => e.lang,
76641            Self::Colgroup(e) => e.lang,
76642            Self::Table(e) => e.lang,
76643            Self::Tbody(e) => e.lang,
76644            Self::Td(e) => e.lang,
76645            Self::Tfoot(e) => e.lang,
76646            Self::Th(e) => e.lang,
76647            Self::Thead(e) => e.lang,
76648            Self::Tr(e) => e.lang,
76649            Self::Button(e) => e.lang,
76650            Self::Datalist(e) => e.lang,
76651            Self::Fieldset(e) => e.lang,
76652            Self::Form(e) => e.lang,
76653            Self::Input(e) => e.lang,
76654            Self::Label(e) => e.lang,
76655            Self::Legend(e) => e.lang,
76656            Self::Meter(e) => e.lang,
76657            Self::Optgroup(e) => e.lang,
76658            Self::Option(e) => e.lang,
76659            Self::Output(e) => e.lang,
76660            Self::Progress(e) => e.lang,
76661            Self::Select(e) => e.lang,
76662            Self::Textarea(e) => e.lang,
76663            Self::Details(e) => e.lang,
76664            Self::Dialog(e) => e.lang,
76665            Self::Summary(e) => e.lang,
76666            Self::Slot(e) => e.lang,
76667            Self::Template(e) => e.lang,
76668            Self::Acronym(e) => e.lang,
76669            Self::Applet(e) => e.lang,
76670            Self::Bgsound(e) => e.lang,
76671            Self::Big(e) => e.lang,
76672            Self::Blink(e) => e.lang,
76673            Self::Center(e) => e.lang,
76674            Self::Dir(e) => e.lang,
76675            Self::Font(e) => e.lang,
76676            Self::Frame(e) => e.lang,
76677            Self::Frameset(e) => e.lang,
76678            Self::Image(e) => e.lang,
76679            Self::Keygen(e) => e.lang,
76680            Self::Marquee(e) => e.lang,
76681            Self::Menuitem(e) => e.lang,
76682            Self::Nobr(e) => e.lang,
76683            Self::Noembed(e) => e.lang,
76684            Self::Noframes(e) => e.lang,
76685            Self::Param(e) => e.lang,
76686            Self::Plaintext(e) => e.lang,
76687            Self::Rb(e) => e.lang,
76688            Self::Rtc(e) => e.lang,
76689            Self::Spacer(e) => e.lang,
76690            Self::Strike(e) => e.lang,
76691            Self::Tt(e) => e.lang,
76692            Self::Xmp(e) => e.lang,
76693            Self::H1(e) => e.lang,
76694            Self::H2(e) => e.lang,
76695            Self::H3(e) => e.lang,
76696            Self::H4(e) => e.lang,
76697            Self::H5(e) => e.lang,
76698            Self::H6(e) => e.lang,
76699            Self::Unknown(e) => e.lang,
76700        }
76701    }
76702
76703    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
76704    ///   
76705
76706    pub fn nonce(&self) -> core::option::Option<AttributeValue<'life>> {
76707        match self {
76708            Self::Html(e) => e.nonce,
76709            Self::Base(e) => e.nonce,
76710            Self::Head(e) => e.nonce,
76711            Self::Link(e) => e.nonce,
76712            Self::Meta(e) => e.nonce,
76713            Self::Style(e) => e.nonce,
76714            Self::Title(e) => e.nonce,
76715            Self::Body(e) => e.nonce,
76716            Self::Address(e) => e.nonce,
76717            Self::Article(e) => e.nonce,
76718            Self::Aside(e) => e.nonce,
76719            Self::Footer(e) => e.nonce,
76720            Self::Header(e) => e.nonce,
76721            Self::Hgroup(e) => e.nonce,
76722            Self::Main(e) => e.nonce,
76723            Self::Nav(e) => e.nonce,
76724            Self::Section(e) => e.nonce,
76725            Self::Blockquote(e) => e.nonce,
76726            Self::Dd(e) => e.nonce,
76727            Self::Div(e) => e.nonce,
76728            Self::Dl(e) => e.nonce,
76729            Self::Dt(e) => e.nonce,
76730            Self::Figcaption(e) => e.nonce,
76731            Self::Figure(e) => e.nonce,
76732            Self::Hr(e) => e.nonce,
76733            Self::Li(e) => e.nonce,
76734            Self::Menu(e) => e.nonce,
76735            Self::Ol(e) => e.nonce,
76736            Self::P(e) => e.nonce,
76737            Self::Pre(e) => e.nonce,
76738            Self::Ul(e) => e.nonce,
76739            Self::A(e) => e.nonce,
76740            Self::Abbr(e) => e.nonce,
76741            Self::B(e) => e.nonce,
76742            Self::Bdi(e) => e.nonce,
76743            Self::Bdo(e) => e.nonce,
76744            Self::Br(e) => e.nonce,
76745            Self::Cite(e) => e.nonce,
76746            Self::Code(e) => e.nonce,
76747            Self::Data(e) => e.nonce,
76748            Self::Dfn(e) => e.nonce,
76749            Self::Em(e) => e.nonce,
76750            Self::I(e) => e.nonce,
76751            Self::Kbd(e) => e.nonce,
76752            Self::Mark(e) => e.nonce,
76753            Self::Q(e) => e.nonce,
76754            Self::Rp(e) => e.nonce,
76755            Self::Rt(e) => e.nonce,
76756            Self::Ruby(e) => e.nonce,
76757            Self::S(e) => e.nonce,
76758            Self::Samp(e) => e.nonce,
76759            Self::Small(e) => e.nonce,
76760            Self::Span(e) => e.nonce,
76761            Self::Strong(e) => e.nonce,
76762            Self::Sub(e) => e.nonce,
76763            Self::Sup(e) => e.nonce,
76764            Self::Time(e) => e.nonce,
76765            Self::U(e) => e.nonce,
76766            Self::Var(e) => e.nonce,
76767            Self::Wbr(e) => e.nonce,
76768            Self::Area(e) => e.nonce,
76769            Self::Audio(e) => e.nonce,
76770            Self::Img(e) => e.nonce,
76771            Self::Map(e) => e.nonce,
76772            Self::Track(e) => e.nonce,
76773            Self::Video(e) => e.nonce,
76774            Self::Embed(e) => e.nonce,
76775            Self::Iframe(e) => e.nonce,
76776            Self::Object(e) => e.nonce,
76777            Self::Picture(e) => e.nonce,
76778            Self::Portal(e) => e.nonce,
76779            Self::Source(e) => e.nonce,
76780            Self::Canvas(e) => e.nonce,
76781            Self::Noscript(e) => e.nonce,
76782            Self::Script(e) => e.nonce,
76783            Self::Del(e) => e.nonce,
76784            Self::Ins(e) => e.nonce,
76785            Self::Caption(e) => e.nonce,
76786            Self::Col(e) => e.nonce,
76787            Self::Colgroup(e) => e.nonce,
76788            Self::Table(e) => e.nonce,
76789            Self::Tbody(e) => e.nonce,
76790            Self::Td(e) => e.nonce,
76791            Self::Tfoot(e) => e.nonce,
76792            Self::Th(e) => e.nonce,
76793            Self::Thead(e) => e.nonce,
76794            Self::Tr(e) => e.nonce,
76795            Self::Button(e) => e.nonce,
76796            Self::Datalist(e) => e.nonce,
76797            Self::Fieldset(e) => e.nonce,
76798            Self::Form(e) => e.nonce,
76799            Self::Input(e) => e.nonce,
76800            Self::Label(e) => e.nonce,
76801            Self::Legend(e) => e.nonce,
76802            Self::Meter(e) => e.nonce,
76803            Self::Optgroup(e) => e.nonce,
76804            Self::Option(e) => e.nonce,
76805            Self::Output(e) => e.nonce,
76806            Self::Progress(e) => e.nonce,
76807            Self::Select(e) => e.nonce,
76808            Self::Textarea(e) => e.nonce,
76809            Self::Details(e) => e.nonce,
76810            Self::Dialog(e) => e.nonce,
76811            Self::Summary(e) => e.nonce,
76812            Self::Slot(e) => e.nonce,
76813            Self::Template(e) => e.nonce,
76814            Self::Acronym(e) => e.nonce,
76815            Self::Applet(e) => e.nonce,
76816            Self::Bgsound(e) => e.nonce,
76817            Self::Big(e) => e.nonce,
76818            Self::Blink(e) => e.nonce,
76819            Self::Center(e) => e.nonce,
76820            Self::Dir(e) => e.nonce,
76821            Self::Font(e) => e.nonce,
76822            Self::Frame(e) => e.nonce,
76823            Self::Frameset(e) => e.nonce,
76824            Self::Image(e) => e.nonce,
76825            Self::Keygen(e) => e.nonce,
76826            Self::Marquee(e) => e.nonce,
76827            Self::Menuitem(e) => e.nonce,
76828            Self::Nobr(e) => e.nonce,
76829            Self::Noembed(e) => e.nonce,
76830            Self::Noframes(e) => e.nonce,
76831            Self::Param(e) => e.nonce,
76832            Self::Plaintext(e) => e.nonce,
76833            Self::Rb(e) => e.nonce,
76834            Self::Rtc(e) => e.nonce,
76835            Self::Spacer(e) => e.nonce,
76836            Self::Strike(e) => e.nonce,
76837            Self::Tt(e) => e.nonce,
76838            Self::Xmp(e) => e.nonce,
76839            Self::H1(e) => e.nonce,
76840            Self::H2(e) => e.nonce,
76841            Self::H3(e) => e.nonce,
76842            Self::H4(e) => e.nonce,
76843            Self::H5(e) => e.nonce,
76844            Self::H6(e) => e.nonce,
76845            Self::Unknown(e) => e.nonce,
76846        }
76847    }
76848
76849    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
76850    ///   
76851
76852    pub fn part(&self) -> core::option::Option<AttributeValue<'life>> {
76853        match self {
76854            Self::Html(e) => e.part,
76855            Self::Base(e) => e.part,
76856            Self::Head(e) => e.part,
76857            Self::Link(e) => e.part,
76858            Self::Meta(e) => e.part,
76859            Self::Style(e) => e.part,
76860            Self::Title(e) => e.part,
76861            Self::Body(e) => e.part,
76862            Self::Address(e) => e.part,
76863            Self::Article(e) => e.part,
76864            Self::Aside(e) => e.part,
76865            Self::Footer(e) => e.part,
76866            Self::Header(e) => e.part,
76867            Self::Hgroup(e) => e.part,
76868            Self::Main(e) => e.part,
76869            Self::Nav(e) => e.part,
76870            Self::Section(e) => e.part,
76871            Self::Blockquote(e) => e.part,
76872            Self::Dd(e) => e.part,
76873            Self::Div(e) => e.part,
76874            Self::Dl(e) => e.part,
76875            Self::Dt(e) => e.part,
76876            Self::Figcaption(e) => e.part,
76877            Self::Figure(e) => e.part,
76878            Self::Hr(e) => e.part,
76879            Self::Li(e) => e.part,
76880            Self::Menu(e) => e.part,
76881            Self::Ol(e) => e.part,
76882            Self::P(e) => e.part,
76883            Self::Pre(e) => e.part,
76884            Self::Ul(e) => e.part,
76885            Self::A(e) => e.part,
76886            Self::Abbr(e) => e.part,
76887            Self::B(e) => e.part,
76888            Self::Bdi(e) => e.part,
76889            Self::Bdo(e) => e.part,
76890            Self::Br(e) => e.part,
76891            Self::Cite(e) => e.part,
76892            Self::Code(e) => e.part,
76893            Self::Data(e) => e.part,
76894            Self::Dfn(e) => e.part,
76895            Self::Em(e) => e.part,
76896            Self::I(e) => e.part,
76897            Self::Kbd(e) => e.part,
76898            Self::Mark(e) => e.part,
76899            Self::Q(e) => e.part,
76900            Self::Rp(e) => e.part,
76901            Self::Rt(e) => e.part,
76902            Self::Ruby(e) => e.part,
76903            Self::S(e) => e.part,
76904            Self::Samp(e) => e.part,
76905            Self::Small(e) => e.part,
76906            Self::Span(e) => e.part,
76907            Self::Strong(e) => e.part,
76908            Self::Sub(e) => e.part,
76909            Self::Sup(e) => e.part,
76910            Self::Time(e) => e.part,
76911            Self::U(e) => e.part,
76912            Self::Var(e) => e.part,
76913            Self::Wbr(e) => e.part,
76914            Self::Area(e) => e.part,
76915            Self::Audio(e) => e.part,
76916            Self::Img(e) => e.part,
76917            Self::Map(e) => e.part,
76918            Self::Track(e) => e.part,
76919            Self::Video(e) => e.part,
76920            Self::Embed(e) => e.part,
76921            Self::Iframe(e) => e.part,
76922            Self::Object(e) => e.part,
76923            Self::Picture(e) => e.part,
76924            Self::Portal(e) => e.part,
76925            Self::Source(e) => e.part,
76926            Self::Canvas(e) => e.part,
76927            Self::Noscript(e) => e.part,
76928            Self::Script(e) => e.part,
76929            Self::Del(e) => e.part,
76930            Self::Ins(e) => e.part,
76931            Self::Caption(e) => e.part,
76932            Self::Col(e) => e.part,
76933            Self::Colgroup(e) => e.part,
76934            Self::Table(e) => e.part,
76935            Self::Tbody(e) => e.part,
76936            Self::Td(e) => e.part,
76937            Self::Tfoot(e) => e.part,
76938            Self::Th(e) => e.part,
76939            Self::Thead(e) => e.part,
76940            Self::Tr(e) => e.part,
76941            Self::Button(e) => e.part,
76942            Self::Datalist(e) => e.part,
76943            Self::Fieldset(e) => e.part,
76944            Self::Form(e) => e.part,
76945            Self::Input(e) => e.part,
76946            Self::Label(e) => e.part,
76947            Self::Legend(e) => e.part,
76948            Self::Meter(e) => e.part,
76949            Self::Optgroup(e) => e.part,
76950            Self::Option(e) => e.part,
76951            Self::Output(e) => e.part,
76952            Self::Progress(e) => e.part,
76953            Self::Select(e) => e.part,
76954            Self::Textarea(e) => e.part,
76955            Self::Details(e) => e.part,
76956            Self::Dialog(e) => e.part,
76957            Self::Summary(e) => e.part,
76958            Self::Slot(e) => e.part,
76959            Self::Template(e) => e.part,
76960            Self::Acronym(e) => e.part,
76961            Self::Applet(e) => e.part,
76962            Self::Bgsound(e) => e.part,
76963            Self::Big(e) => e.part,
76964            Self::Blink(e) => e.part,
76965            Self::Center(e) => e.part,
76966            Self::Dir(e) => e.part,
76967            Self::Font(e) => e.part,
76968            Self::Frame(e) => e.part,
76969            Self::Frameset(e) => e.part,
76970            Self::Image(e) => e.part,
76971            Self::Keygen(e) => e.part,
76972            Self::Marquee(e) => e.part,
76973            Self::Menuitem(e) => e.part,
76974            Self::Nobr(e) => e.part,
76975            Self::Noembed(e) => e.part,
76976            Self::Noframes(e) => e.part,
76977            Self::Param(e) => e.part,
76978            Self::Plaintext(e) => e.part,
76979            Self::Rb(e) => e.part,
76980            Self::Rtc(e) => e.part,
76981            Self::Spacer(e) => e.part,
76982            Self::Strike(e) => e.part,
76983            Self::Tt(e) => e.part,
76984            Self::Xmp(e) => e.part,
76985            Self::H1(e) => e.part,
76986            Self::H2(e) => e.part,
76987            Self::H3(e) => e.part,
76988            Self::H4(e) => e.part,
76989            Self::H5(e) => e.part,
76990            Self::H6(e) => e.part,
76991            Self::Unknown(e) => e.part,
76992        }
76993    }
76994
76995    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
76996    ///   
76997
76998    pub fn popover(&self) -> core::option::Option<AttributeValue<'life>> {
76999        match self {
77000            Self::Html(e) => e.popover,
77001            Self::Base(e) => e.popover,
77002            Self::Head(e) => e.popover,
77003            Self::Link(e) => e.popover,
77004            Self::Meta(e) => e.popover,
77005            Self::Style(e) => e.popover,
77006            Self::Title(e) => e.popover,
77007            Self::Body(e) => e.popover,
77008            Self::Address(e) => e.popover,
77009            Self::Article(e) => e.popover,
77010            Self::Aside(e) => e.popover,
77011            Self::Footer(e) => e.popover,
77012            Self::Header(e) => e.popover,
77013            Self::Hgroup(e) => e.popover,
77014            Self::Main(e) => e.popover,
77015            Self::Nav(e) => e.popover,
77016            Self::Section(e) => e.popover,
77017            Self::Blockquote(e) => e.popover,
77018            Self::Dd(e) => e.popover,
77019            Self::Div(e) => e.popover,
77020            Self::Dl(e) => e.popover,
77021            Self::Dt(e) => e.popover,
77022            Self::Figcaption(e) => e.popover,
77023            Self::Figure(e) => e.popover,
77024            Self::Hr(e) => e.popover,
77025            Self::Li(e) => e.popover,
77026            Self::Menu(e) => e.popover,
77027            Self::Ol(e) => e.popover,
77028            Self::P(e) => e.popover,
77029            Self::Pre(e) => e.popover,
77030            Self::Ul(e) => e.popover,
77031            Self::A(e) => e.popover,
77032            Self::Abbr(e) => e.popover,
77033            Self::B(e) => e.popover,
77034            Self::Bdi(e) => e.popover,
77035            Self::Bdo(e) => e.popover,
77036            Self::Br(e) => e.popover,
77037            Self::Cite(e) => e.popover,
77038            Self::Code(e) => e.popover,
77039            Self::Data(e) => e.popover,
77040            Self::Dfn(e) => e.popover,
77041            Self::Em(e) => e.popover,
77042            Self::I(e) => e.popover,
77043            Self::Kbd(e) => e.popover,
77044            Self::Mark(e) => e.popover,
77045            Self::Q(e) => e.popover,
77046            Self::Rp(e) => e.popover,
77047            Self::Rt(e) => e.popover,
77048            Self::Ruby(e) => e.popover,
77049            Self::S(e) => e.popover,
77050            Self::Samp(e) => e.popover,
77051            Self::Small(e) => e.popover,
77052            Self::Span(e) => e.popover,
77053            Self::Strong(e) => e.popover,
77054            Self::Sub(e) => e.popover,
77055            Self::Sup(e) => e.popover,
77056            Self::Time(e) => e.popover,
77057            Self::U(e) => e.popover,
77058            Self::Var(e) => e.popover,
77059            Self::Wbr(e) => e.popover,
77060            Self::Area(e) => e.popover,
77061            Self::Audio(e) => e.popover,
77062            Self::Img(e) => e.popover,
77063            Self::Map(e) => e.popover,
77064            Self::Track(e) => e.popover,
77065            Self::Video(e) => e.popover,
77066            Self::Embed(e) => e.popover,
77067            Self::Iframe(e) => e.popover,
77068            Self::Object(e) => e.popover,
77069            Self::Picture(e) => e.popover,
77070            Self::Portal(e) => e.popover,
77071            Self::Source(e) => e.popover,
77072            Self::Canvas(e) => e.popover,
77073            Self::Noscript(e) => e.popover,
77074            Self::Script(e) => e.popover,
77075            Self::Del(e) => e.popover,
77076            Self::Ins(e) => e.popover,
77077            Self::Caption(e) => e.popover,
77078            Self::Col(e) => e.popover,
77079            Self::Colgroup(e) => e.popover,
77080            Self::Table(e) => e.popover,
77081            Self::Tbody(e) => e.popover,
77082            Self::Td(e) => e.popover,
77083            Self::Tfoot(e) => e.popover,
77084            Self::Th(e) => e.popover,
77085            Self::Thead(e) => e.popover,
77086            Self::Tr(e) => e.popover,
77087            Self::Button(e) => e.popover,
77088            Self::Datalist(e) => e.popover,
77089            Self::Fieldset(e) => e.popover,
77090            Self::Form(e) => e.popover,
77091            Self::Input(e) => e.popover,
77092            Self::Label(e) => e.popover,
77093            Self::Legend(e) => e.popover,
77094            Self::Meter(e) => e.popover,
77095            Self::Optgroup(e) => e.popover,
77096            Self::Option(e) => e.popover,
77097            Self::Output(e) => e.popover,
77098            Self::Progress(e) => e.popover,
77099            Self::Select(e) => e.popover,
77100            Self::Textarea(e) => e.popover,
77101            Self::Details(e) => e.popover,
77102            Self::Dialog(e) => e.popover,
77103            Self::Summary(e) => e.popover,
77104            Self::Slot(e) => e.popover,
77105            Self::Template(e) => e.popover,
77106            Self::Acronym(e) => e.popover,
77107            Self::Applet(e) => e.popover,
77108            Self::Bgsound(e) => e.popover,
77109            Self::Big(e) => e.popover,
77110            Self::Blink(e) => e.popover,
77111            Self::Center(e) => e.popover,
77112            Self::Dir(e) => e.popover,
77113            Self::Font(e) => e.popover,
77114            Self::Frame(e) => e.popover,
77115            Self::Frameset(e) => e.popover,
77116            Self::Image(e) => e.popover,
77117            Self::Keygen(e) => e.popover,
77118            Self::Marquee(e) => e.popover,
77119            Self::Menuitem(e) => e.popover,
77120            Self::Nobr(e) => e.popover,
77121            Self::Noembed(e) => e.popover,
77122            Self::Noframes(e) => e.popover,
77123            Self::Param(e) => e.popover,
77124            Self::Plaintext(e) => e.popover,
77125            Self::Rb(e) => e.popover,
77126            Self::Rtc(e) => e.popover,
77127            Self::Spacer(e) => e.popover,
77128            Self::Strike(e) => e.popover,
77129            Self::Tt(e) => e.popover,
77130            Self::Xmp(e) => e.popover,
77131            Self::H1(e) => e.popover,
77132            Self::H2(e) => e.popover,
77133            Self::H3(e) => e.popover,
77134            Self::H4(e) => e.popover,
77135            Self::H5(e) => e.popover,
77136            Self::H6(e) => e.popover,
77137            Self::Unknown(e) => e.popover,
77138        }
77139    }
77140
77141    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
77142    ///   
77143
77144    pub fn role(&self) -> core::option::Option<AttributeValue<'life>> {
77145        match self {
77146            Self::Html(e) => e.role,
77147            Self::Base(e) => e.role,
77148            Self::Head(e) => e.role,
77149            Self::Link(e) => e.role,
77150            Self::Meta(e) => e.role,
77151            Self::Style(e) => e.role,
77152            Self::Title(e) => e.role,
77153            Self::Body(e) => e.role,
77154            Self::Address(e) => e.role,
77155            Self::Article(e) => e.role,
77156            Self::Aside(e) => e.role,
77157            Self::Footer(e) => e.role,
77158            Self::Header(e) => e.role,
77159            Self::Hgroup(e) => e.role,
77160            Self::Main(e) => e.role,
77161            Self::Nav(e) => e.role,
77162            Self::Section(e) => e.role,
77163            Self::Blockquote(e) => e.role,
77164            Self::Dd(e) => e.role,
77165            Self::Div(e) => e.role,
77166            Self::Dl(e) => e.role,
77167            Self::Dt(e) => e.role,
77168            Self::Figcaption(e) => e.role,
77169            Self::Figure(e) => e.role,
77170            Self::Hr(e) => e.role,
77171            Self::Li(e) => e.role,
77172            Self::Menu(e) => e.role,
77173            Self::Ol(e) => e.role,
77174            Self::P(e) => e.role,
77175            Self::Pre(e) => e.role,
77176            Self::Ul(e) => e.role,
77177            Self::A(e) => e.role,
77178            Self::Abbr(e) => e.role,
77179            Self::B(e) => e.role,
77180            Self::Bdi(e) => e.role,
77181            Self::Bdo(e) => e.role,
77182            Self::Br(e) => e.role,
77183            Self::Cite(e) => e.role,
77184            Self::Code(e) => e.role,
77185            Self::Data(e) => e.role,
77186            Self::Dfn(e) => e.role,
77187            Self::Em(e) => e.role,
77188            Self::I(e) => e.role,
77189            Self::Kbd(e) => e.role,
77190            Self::Mark(e) => e.role,
77191            Self::Q(e) => e.role,
77192            Self::Rp(e) => e.role,
77193            Self::Rt(e) => e.role,
77194            Self::Ruby(e) => e.role,
77195            Self::S(e) => e.role,
77196            Self::Samp(e) => e.role,
77197            Self::Small(e) => e.role,
77198            Self::Span(e) => e.role,
77199            Self::Strong(e) => e.role,
77200            Self::Sub(e) => e.role,
77201            Self::Sup(e) => e.role,
77202            Self::Time(e) => e.role,
77203            Self::U(e) => e.role,
77204            Self::Var(e) => e.role,
77205            Self::Wbr(e) => e.role,
77206            Self::Area(e) => e.role,
77207            Self::Audio(e) => e.role,
77208            Self::Img(e) => e.role,
77209            Self::Map(e) => e.role,
77210            Self::Track(e) => e.role,
77211            Self::Video(e) => e.role,
77212            Self::Embed(e) => e.role,
77213            Self::Iframe(e) => e.role,
77214            Self::Object(e) => e.role,
77215            Self::Picture(e) => e.role,
77216            Self::Portal(e) => e.role,
77217            Self::Source(e) => e.role,
77218            Self::Canvas(e) => e.role,
77219            Self::Noscript(e) => e.role,
77220            Self::Script(e) => e.role,
77221            Self::Del(e) => e.role,
77222            Self::Ins(e) => e.role,
77223            Self::Caption(e) => e.role,
77224            Self::Col(e) => e.role,
77225            Self::Colgroup(e) => e.role,
77226            Self::Table(e) => e.role,
77227            Self::Tbody(e) => e.role,
77228            Self::Td(e) => e.role,
77229            Self::Tfoot(e) => e.role,
77230            Self::Th(e) => e.role,
77231            Self::Thead(e) => e.role,
77232            Self::Tr(e) => e.role,
77233            Self::Button(e) => e.role,
77234            Self::Datalist(e) => e.role,
77235            Self::Fieldset(e) => e.role,
77236            Self::Form(e) => e.role,
77237            Self::Input(e) => e.role,
77238            Self::Label(e) => e.role,
77239            Self::Legend(e) => e.role,
77240            Self::Meter(e) => e.role,
77241            Self::Optgroup(e) => e.role,
77242            Self::Option(e) => e.role,
77243            Self::Output(e) => e.role,
77244            Self::Progress(e) => e.role,
77245            Self::Select(e) => e.role,
77246            Self::Textarea(e) => e.role,
77247            Self::Details(e) => e.role,
77248            Self::Dialog(e) => e.role,
77249            Self::Summary(e) => e.role,
77250            Self::Slot(e) => e.role,
77251            Self::Template(e) => e.role,
77252            Self::Acronym(e) => e.role,
77253            Self::Applet(e) => e.role,
77254            Self::Bgsound(e) => e.role,
77255            Self::Big(e) => e.role,
77256            Self::Blink(e) => e.role,
77257            Self::Center(e) => e.role,
77258            Self::Dir(e) => e.role,
77259            Self::Font(e) => e.role,
77260            Self::Frame(e) => e.role,
77261            Self::Frameset(e) => e.role,
77262            Self::Image(e) => e.role,
77263            Self::Keygen(e) => e.role,
77264            Self::Marquee(e) => e.role,
77265            Self::Menuitem(e) => e.role,
77266            Self::Nobr(e) => e.role,
77267            Self::Noembed(e) => e.role,
77268            Self::Noframes(e) => e.role,
77269            Self::Param(e) => e.role,
77270            Self::Plaintext(e) => e.role,
77271            Self::Rb(e) => e.role,
77272            Self::Rtc(e) => e.role,
77273            Self::Spacer(e) => e.role,
77274            Self::Strike(e) => e.role,
77275            Self::Tt(e) => e.role,
77276            Self::Xmp(e) => e.role,
77277            Self::H1(e) => e.role,
77278            Self::H2(e) => e.role,
77279            Self::H3(e) => e.role,
77280            Self::H4(e) => e.role,
77281            Self::H5(e) => e.role,
77282            Self::H6(e) => e.role,
77283            Self::Unknown(e) => e.role,
77284        }
77285    }
77286
77287    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
77288    ///   
77289
77290    pub fn slot(&self) -> core::option::Option<AttributeValue<'life>> {
77291        match self {
77292            Self::Html(e) => e.slot,
77293            Self::Base(e) => e.slot,
77294            Self::Head(e) => e.slot,
77295            Self::Link(e) => e.slot,
77296            Self::Meta(e) => e.slot,
77297            Self::Style(e) => e.slot,
77298            Self::Title(e) => e.slot,
77299            Self::Body(e) => e.slot,
77300            Self::Address(e) => e.slot,
77301            Self::Article(e) => e.slot,
77302            Self::Aside(e) => e.slot,
77303            Self::Footer(e) => e.slot,
77304            Self::Header(e) => e.slot,
77305            Self::Hgroup(e) => e.slot,
77306            Self::Main(e) => e.slot,
77307            Self::Nav(e) => e.slot,
77308            Self::Section(e) => e.slot,
77309            Self::Blockquote(e) => e.slot,
77310            Self::Dd(e) => e.slot,
77311            Self::Div(e) => e.slot,
77312            Self::Dl(e) => e.slot,
77313            Self::Dt(e) => e.slot,
77314            Self::Figcaption(e) => e.slot,
77315            Self::Figure(e) => e.slot,
77316            Self::Hr(e) => e.slot,
77317            Self::Li(e) => e.slot,
77318            Self::Menu(e) => e.slot,
77319            Self::Ol(e) => e.slot,
77320            Self::P(e) => e.slot,
77321            Self::Pre(e) => e.slot,
77322            Self::Ul(e) => e.slot,
77323            Self::A(e) => e.slot,
77324            Self::Abbr(e) => e.slot,
77325            Self::B(e) => e.slot,
77326            Self::Bdi(e) => e.slot,
77327            Self::Bdo(e) => e.slot,
77328            Self::Br(e) => e.slot,
77329            Self::Cite(e) => e.slot,
77330            Self::Code(e) => e.slot,
77331            Self::Data(e) => e.slot,
77332            Self::Dfn(e) => e.slot,
77333            Self::Em(e) => e.slot,
77334            Self::I(e) => e.slot,
77335            Self::Kbd(e) => e.slot,
77336            Self::Mark(e) => e.slot,
77337            Self::Q(e) => e.slot,
77338            Self::Rp(e) => e.slot,
77339            Self::Rt(e) => e.slot,
77340            Self::Ruby(e) => e.slot,
77341            Self::S(e) => e.slot,
77342            Self::Samp(e) => e.slot,
77343            Self::Small(e) => e.slot,
77344            Self::Span(e) => e.slot,
77345            Self::Strong(e) => e.slot,
77346            Self::Sub(e) => e.slot,
77347            Self::Sup(e) => e.slot,
77348            Self::Time(e) => e.slot,
77349            Self::U(e) => e.slot,
77350            Self::Var(e) => e.slot,
77351            Self::Wbr(e) => e.slot,
77352            Self::Area(e) => e.slot,
77353            Self::Audio(e) => e.slot,
77354            Self::Img(e) => e.slot,
77355            Self::Map(e) => e.slot,
77356            Self::Track(e) => e.slot,
77357            Self::Video(e) => e.slot,
77358            Self::Embed(e) => e.slot,
77359            Self::Iframe(e) => e.slot,
77360            Self::Object(e) => e.slot,
77361            Self::Picture(e) => e.slot,
77362            Self::Portal(e) => e.slot,
77363            Self::Source(e) => e.slot,
77364            Self::Canvas(e) => e.slot,
77365            Self::Noscript(e) => e.slot,
77366            Self::Script(e) => e.slot,
77367            Self::Del(e) => e.slot,
77368            Self::Ins(e) => e.slot,
77369            Self::Caption(e) => e.slot,
77370            Self::Col(e) => e.slot,
77371            Self::Colgroup(e) => e.slot,
77372            Self::Table(e) => e.slot,
77373            Self::Tbody(e) => e.slot,
77374            Self::Td(e) => e.slot,
77375            Self::Tfoot(e) => e.slot,
77376            Self::Th(e) => e.slot,
77377            Self::Thead(e) => e.slot,
77378            Self::Tr(e) => e.slot,
77379            Self::Button(e) => e.slot,
77380            Self::Datalist(e) => e.slot,
77381            Self::Fieldset(e) => e.slot,
77382            Self::Form(e) => e.slot,
77383            Self::Input(e) => e.slot,
77384            Self::Label(e) => e.slot,
77385            Self::Legend(e) => e.slot,
77386            Self::Meter(e) => e.slot,
77387            Self::Optgroup(e) => e.slot,
77388            Self::Option(e) => e.slot,
77389            Self::Output(e) => e.slot,
77390            Self::Progress(e) => e.slot,
77391            Self::Select(e) => e.slot,
77392            Self::Textarea(e) => e.slot,
77393            Self::Details(e) => e.slot,
77394            Self::Dialog(e) => e.slot,
77395            Self::Summary(e) => e.slot,
77396            Self::Slot(e) => e.slot,
77397            Self::Template(e) => e.slot,
77398            Self::Acronym(e) => e.slot,
77399            Self::Applet(e) => e.slot,
77400            Self::Bgsound(e) => e.slot,
77401            Self::Big(e) => e.slot,
77402            Self::Blink(e) => e.slot,
77403            Self::Center(e) => e.slot,
77404            Self::Dir(e) => e.slot,
77405            Self::Font(e) => e.slot,
77406            Self::Frame(e) => e.slot,
77407            Self::Frameset(e) => e.slot,
77408            Self::Image(e) => e.slot,
77409            Self::Keygen(e) => e.slot,
77410            Self::Marquee(e) => e.slot,
77411            Self::Menuitem(e) => e.slot,
77412            Self::Nobr(e) => e.slot,
77413            Self::Noembed(e) => e.slot,
77414            Self::Noframes(e) => e.slot,
77415            Self::Param(e) => e.slot,
77416            Self::Plaintext(e) => e.slot,
77417            Self::Rb(e) => e.slot,
77418            Self::Rtc(e) => e.slot,
77419            Self::Spacer(e) => e.slot,
77420            Self::Strike(e) => e.slot,
77421            Self::Tt(e) => e.slot,
77422            Self::Xmp(e) => e.slot,
77423            Self::H1(e) => e.slot,
77424            Self::H2(e) => e.slot,
77425            Self::H3(e) => e.slot,
77426            Self::H4(e) => e.slot,
77427            Self::H5(e) => e.slot,
77428            Self::H6(e) => e.slot,
77429            Self::Unknown(e) => e.slot,
77430        }
77431    }
77432
77433    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
77434    ///     <ul>
77435    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
77436    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
77437    ///     </ul>
77438    ///   
77439
77440    pub fn spellcheck(&self) -> core::option::Option<AttributeValue<'life>> {
77441        match self {
77442            Self::Html(e) => e.spellcheck,
77443            Self::Base(e) => e.spellcheck,
77444            Self::Head(e) => e.spellcheck,
77445            Self::Link(e) => e.spellcheck,
77446            Self::Meta(e) => e.spellcheck,
77447            Self::Style(e) => e.spellcheck,
77448            Self::Title(e) => e.spellcheck,
77449            Self::Body(e) => e.spellcheck,
77450            Self::Address(e) => e.spellcheck,
77451            Self::Article(e) => e.spellcheck,
77452            Self::Aside(e) => e.spellcheck,
77453            Self::Footer(e) => e.spellcheck,
77454            Self::Header(e) => e.spellcheck,
77455            Self::Hgroup(e) => e.spellcheck,
77456            Self::Main(e) => e.spellcheck,
77457            Self::Nav(e) => e.spellcheck,
77458            Self::Section(e) => e.spellcheck,
77459            Self::Blockquote(e) => e.spellcheck,
77460            Self::Dd(e) => e.spellcheck,
77461            Self::Div(e) => e.spellcheck,
77462            Self::Dl(e) => e.spellcheck,
77463            Self::Dt(e) => e.spellcheck,
77464            Self::Figcaption(e) => e.spellcheck,
77465            Self::Figure(e) => e.spellcheck,
77466            Self::Hr(e) => e.spellcheck,
77467            Self::Li(e) => e.spellcheck,
77468            Self::Menu(e) => e.spellcheck,
77469            Self::Ol(e) => e.spellcheck,
77470            Self::P(e) => e.spellcheck,
77471            Self::Pre(e) => e.spellcheck,
77472            Self::Ul(e) => e.spellcheck,
77473            Self::A(e) => e.spellcheck,
77474            Self::Abbr(e) => e.spellcheck,
77475            Self::B(e) => e.spellcheck,
77476            Self::Bdi(e) => e.spellcheck,
77477            Self::Bdo(e) => e.spellcheck,
77478            Self::Br(e) => e.spellcheck,
77479            Self::Cite(e) => e.spellcheck,
77480            Self::Code(e) => e.spellcheck,
77481            Self::Data(e) => e.spellcheck,
77482            Self::Dfn(e) => e.spellcheck,
77483            Self::Em(e) => e.spellcheck,
77484            Self::I(e) => e.spellcheck,
77485            Self::Kbd(e) => e.spellcheck,
77486            Self::Mark(e) => e.spellcheck,
77487            Self::Q(e) => e.spellcheck,
77488            Self::Rp(e) => e.spellcheck,
77489            Self::Rt(e) => e.spellcheck,
77490            Self::Ruby(e) => e.spellcheck,
77491            Self::S(e) => e.spellcheck,
77492            Self::Samp(e) => e.spellcheck,
77493            Self::Small(e) => e.spellcheck,
77494            Self::Span(e) => e.spellcheck,
77495            Self::Strong(e) => e.spellcheck,
77496            Self::Sub(e) => e.spellcheck,
77497            Self::Sup(e) => e.spellcheck,
77498            Self::Time(e) => e.spellcheck,
77499            Self::U(e) => e.spellcheck,
77500            Self::Var(e) => e.spellcheck,
77501            Self::Wbr(e) => e.spellcheck,
77502            Self::Area(e) => e.spellcheck,
77503            Self::Audio(e) => e.spellcheck,
77504            Self::Img(e) => e.spellcheck,
77505            Self::Map(e) => e.spellcheck,
77506            Self::Track(e) => e.spellcheck,
77507            Self::Video(e) => e.spellcheck,
77508            Self::Embed(e) => e.spellcheck,
77509            Self::Iframe(e) => e.spellcheck,
77510            Self::Object(e) => e.spellcheck,
77511            Self::Picture(e) => e.spellcheck,
77512            Self::Portal(e) => e.spellcheck,
77513            Self::Source(e) => e.spellcheck,
77514            Self::Canvas(e) => e.spellcheck,
77515            Self::Noscript(e) => e.spellcheck,
77516            Self::Script(e) => e.spellcheck,
77517            Self::Del(e) => e.spellcheck,
77518            Self::Ins(e) => e.spellcheck,
77519            Self::Caption(e) => e.spellcheck,
77520            Self::Col(e) => e.spellcheck,
77521            Self::Colgroup(e) => e.spellcheck,
77522            Self::Table(e) => e.spellcheck,
77523            Self::Tbody(e) => e.spellcheck,
77524            Self::Td(e) => e.spellcheck,
77525            Self::Tfoot(e) => e.spellcheck,
77526            Self::Th(e) => e.spellcheck,
77527            Self::Thead(e) => e.spellcheck,
77528            Self::Tr(e) => e.spellcheck,
77529            Self::Button(e) => e.spellcheck,
77530            Self::Datalist(e) => e.spellcheck,
77531            Self::Fieldset(e) => e.spellcheck,
77532            Self::Form(e) => e.spellcheck,
77533            Self::Input(e) => e.spellcheck,
77534            Self::Label(e) => e.spellcheck,
77535            Self::Legend(e) => e.spellcheck,
77536            Self::Meter(e) => e.spellcheck,
77537            Self::Optgroup(e) => e.spellcheck,
77538            Self::Option(e) => e.spellcheck,
77539            Self::Output(e) => e.spellcheck,
77540            Self::Progress(e) => e.spellcheck,
77541            Self::Select(e) => e.spellcheck,
77542            Self::Textarea(e) => e.spellcheck,
77543            Self::Details(e) => e.spellcheck,
77544            Self::Dialog(e) => e.spellcheck,
77545            Self::Summary(e) => e.spellcheck,
77546            Self::Slot(e) => e.spellcheck,
77547            Self::Template(e) => e.spellcheck,
77548            Self::Acronym(e) => e.spellcheck,
77549            Self::Applet(e) => e.spellcheck,
77550            Self::Bgsound(e) => e.spellcheck,
77551            Self::Big(e) => e.spellcheck,
77552            Self::Blink(e) => e.spellcheck,
77553            Self::Center(e) => e.spellcheck,
77554            Self::Dir(e) => e.spellcheck,
77555            Self::Font(e) => e.spellcheck,
77556            Self::Frame(e) => e.spellcheck,
77557            Self::Frameset(e) => e.spellcheck,
77558            Self::Image(e) => e.spellcheck,
77559            Self::Keygen(e) => e.spellcheck,
77560            Self::Marquee(e) => e.spellcheck,
77561            Self::Menuitem(e) => e.spellcheck,
77562            Self::Nobr(e) => e.spellcheck,
77563            Self::Noembed(e) => e.spellcheck,
77564            Self::Noframes(e) => e.spellcheck,
77565            Self::Param(e) => e.spellcheck,
77566            Self::Plaintext(e) => e.spellcheck,
77567            Self::Rb(e) => e.spellcheck,
77568            Self::Rtc(e) => e.spellcheck,
77569            Self::Spacer(e) => e.spellcheck,
77570            Self::Strike(e) => e.spellcheck,
77571            Self::Tt(e) => e.spellcheck,
77572            Self::Xmp(e) => e.spellcheck,
77573            Self::H1(e) => e.spellcheck,
77574            Self::H2(e) => e.spellcheck,
77575            Self::H3(e) => e.spellcheck,
77576            Self::H4(e) => e.spellcheck,
77577            Self::H5(e) => e.spellcheck,
77578            Self::H6(e) => e.spellcheck,
77579            Self::Unknown(e) => e.spellcheck,
77580        }
77581    }
77582
77583    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
77584    ///   
77585
77586    pub fn style(&self) -> core::option::Option<AttributeValue<'life>> {
77587        match self {
77588            Self::Html(e) => e.style,
77589            Self::Base(e) => e.style,
77590            Self::Head(e) => e.style,
77591            Self::Link(e) => e.style,
77592            Self::Meta(e) => e.style,
77593            Self::Style(e) => e.style,
77594            Self::Title(e) => e.style,
77595            Self::Body(e) => e.style,
77596            Self::Address(e) => e.style,
77597            Self::Article(e) => e.style,
77598            Self::Aside(e) => e.style,
77599            Self::Footer(e) => e.style,
77600            Self::Header(e) => e.style,
77601            Self::Hgroup(e) => e.style,
77602            Self::Main(e) => e.style,
77603            Self::Nav(e) => e.style,
77604            Self::Section(e) => e.style,
77605            Self::Blockquote(e) => e.style,
77606            Self::Dd(e) => e.style,
77607            Self::Div(e) => e.style,
77608            Self::Dl(e) => e.style,
77609            Self::Dt(e) => e.style,
77610            Self::Figcaption(e) => e.style,
77611            Self::Figure(e) => e.style,
77612            Self::Hr(e) => e.style,
77613            Self::Li(e) => e.style,
77614            Self::Menu(e) => e.style,
77615            Self::Ol(e) => e.style,
77616            Self::P(e) => e.style,
77617            Self::Pre(e) => e.style,
77618            Self::Ul(e) => e.style,
77619            Self::A(e) => e.style,
77620            Self::Abbr(e) => e.style,
77621            Self::B(e) => e.style,
77622            Self::Bdi(e) => e.style,
77623            Self::Bdo(e) => e.style,
77624            Self::Br(e) => e.style,
77625            Self::Cite(e) => e.style,
77626            Self::Code(e) => e.style,
77627            Self::Data(e) => e.style,
77628            Self::Dfn(e) => e.style,
77629            Self::Em(e) => e.style,
77630            Self::I(e) => e.style,
77631            Self::Kbd(e) => e.style,
77632            Self::Mark(e) => e.style,
77633            Self::Q(e) => e.style,
77634            Self::Rp(e) => e.style,
77635            Self::Rt(e) => e.style,
77636            Self::Ruby(e) => e.style,
77637            Self::S(e) => e.style,
77638            Self::Samp(e) => e.style,
77639            Self::Small(e) => e.style,
77640            Self::Span(e) => e.style,
77641            Self::Strong(e) => e.style,
77642            Self::Sub(e) => e.style,
77643            Self::Sup(e) => e.style,
77644            Self::Time(e) => e.style,
77645            Self::U(e) => e.style,
77646            Self::Var(e) => e.style,
77647            Self::Wbr(e) => e.style,
77648            Self::Area(e) => e.style,
77649            Self::Audio(e) => e.style,
77650            Self::Img(e) => e.style,
77651            Self::Map(e) => e.style,
77652            Self::Track(e) => e.style,
77653            Self::Video(e) => e.style,
77654            Self::Embed(e) => e.style,
77655            Self::Iframe(e) => e.style,
77656            Self::Object(e) => e.style,
77657            Self::Picture(e) => e.style,
77658            Self::Portal(e) => e.style,
77659            Self::Source(e) => e.style,
77660            Self::Canvas(e) => e.style,
77661            Self::Noscript(e) => e.style,
77662            Self::Script(e) => e.style,
77663            Self::Del(e) => e.style,
77664            Self::Ins(e) => e.style,
77665            Self::Caption(e) => e.style,
77666            Self::Col(e) => e.style,
77667            Self::Colgroup(e) => e.style,
77668            Self::Table(e) => e.style,
77669            Self::Tbody(e) => e.style,
77670            Self::Td(e) => e.style,
77671            Self::Tfoot(e) => e.style,
77672            Self::Th(e) => e.style,
77673            Self::Thead(e) => e.style,
77674            Self::Tr(e) => e.style,
77675            Self::Button(e) => e.style,
77676            Self::Datalist(e) => e.style,
77677            Self::Fieldset(e) => e.style,
77678            Self::Form(e) => e.style,
77679            Self::Input(e) => e.style,
77680            Self::Label(e) => e.style,
77681            Self::Legend(e) => e.style,
77682            Self::Meter(e) => e.style,
77683            Self::Optgroup(e) => e.style,
77684            Self::Option(e) => e.style,
77685            Self::Output(e) => e.style,
77686            Self::Progress(e) => e.style,
77687            Self::Select(e) => e.style,
77688            Self::Textarea(e) => e.style,
77689            Self::Details(e) => e.style,
77690            Self::Dialog(e) => e.style,
77691            Self::Summary(e) => e.style,
77692            Self::Slot(e) => e.style,
77693            Self::Template(e) => e.style,
77694            Self::Acronym(e) => e.style,
77695            Self::Applet(e) => e.style,
77696            Self::Bgsound(e) => e.style,
77697            Self::Big(e) => e.style,
77698            Self::Blink(e) => e.style,
77699            Self::Center(e) => e.style,
77700            Self::Dir(e) => e.style,
77701            Self::Font(e) => e.style,
77702            Self::Frame(e) => e.style,
77703            Self::Frameset(e) => e.style,
77704            Self::Image(e) => e.style,
77705            Self::Keygen(e) => e.style,
77706            Self::Marquee(e) => e.style,
77707            Self::Menuitem(e) => e.style,
77708            Self::Nobr(e) => e.style,
77709            Self::Noembed(e) => e.style,
77710            Self::Noframes(e) => e.style,
77711            Self::Param(e) => e.style,
77712            Self::Plaintext(e) => e.style,
77713            Self::Rb(e) => e.style,
77714            Self::Rtc(e) => e.style,
77715            Self::Spacer(e) => e.style,
77716            Self::Strike(e) => e.style,
77717            Self::Tt(e) => e.style,
77718            Self::Xmp(e) => e.style,
77719            Self::H1(e) => e.style,
77720            Self::H2(e) => e.style,
77721            Self::H3(e) => e.style,
77722            Self::H4(e) => e.style,
77723            Self::H5(e) => e.style,
77724            Self::H6(e) => e.style,
77725            Self::Unknown(e) => e.style,
77726        }
77727    }
77728
77729    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
77730    ///     <ul>
77731    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
77732    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
77733    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
77734    ///     </ul>
77735    ///   
77736
77737    pub fn tabindex(&self) -> core::option::Option<AttributeValue<'life>> {
77738        match self {
77739            Self::Html(e) => e.tabindex,
77740            Self::Base(e) => e.tabindex,
77741            Self::Head(e) => e.tabindex,
77742            Self::Link(e) => e.tabindex,
77743            Self::Meta(e) => e.tabindex,
77744            Self::Style(e) => e.tabindex,
77745            Self::Title(e) => e.tabindex,
77746            Self::Body(e) => e.tabindex,
77747            Self::Address(e) => e.tabindex,
77748            Self::Article(e) => e.tabindex,
77749            Self::Aside(e) => e.tabindex,
77750            Self::Footer(e) => e.tabindex,
77751            Self::Header(e) => e.tabindex,
77752            Self::Hgroup(e) => e.tabindex,
77753            Self::Main(e) => e.tabindex,
77754            Self::Nav(e) => e.tabindex,
77755            Self::Section(e) => e.tabindex,
77756            Self::Blockquote(e) => e.tabindex,
77757            Self::Dd(e) => e.tabindex,
77758            Self::Div(e) => e.tabindex,
77759            Self::Dl(e) => e.tabindex,
77760            Self::Dt(e) => e.tabindex,
77761            Self::Figcaption(e) => e.tabindex,
77762            Self::Figure(e) => e.tabindex,
77763            Self::Hr(e) => e.tabindex,
77764            Self::Li(e) => e.tabindex,
77765            Self::Menu(e) => e.tabindex,
77766            Self::Ol(e) => e.tabindex,
77767            Self::P(e) => e.tabindex,
77768            Self::Pre(e) => e.tabindex,
77769            Self::Ul(e) => e.tabindex,
77770            Self::A(e) => e.tabindex,
77771            Self::Abbr(e) => e.tabindex,
77772            Self::B(e) => e.tabindex,
77773            Self::Bdi(e) => e.tabindex,
77774            Self::Bdo(e) => e.tabindex,
77775            Self::Br(e) => e.tabindex,
77776            Self::Cite(e) => e.tabindex,
77777            Self::Code(e) => e.tabindex,
77778            Self::Data(e) => e.tabindex,
77779            Self::Dfn(e) => e.tabindex,
77780            Self::Em(e) => e.tabindex,
77781            Self::I(e) => e.tabindex,
77782            Self::Kbd(e) => e.tabindex,
77783            Self::Mark(e) => e.tabindex,
77784            Self::Q(e) => e.tabindex,
77785            Self::Rp(e) => e.tabindex,
77786            Self::Rt(e) => e.tabindex,
77787            Self::Ruby(e) => e.tabindex,
77788            Self::S(e) => e.tabindex,
77789            Self::Samp(e) => e.tabindex,
77790            Self::Small(e) => e.tabindex,
77791            Self::Span(e) => e.tabindex,
77792            Self::Strong(e) => e.tabindex,
77793            Self::Sub(e) => e.tabindex,
77794            Self::Sup(e) => e.tabindex,
77795            Self::Time(e) => e.tabindex,
77796            Self::U(e) => e.tabindex,
77797            Self::Var(e) => e.tabindex,
77798            Self::Wbr(e) => e.tabindex,
77799            Self::Area(e) => e.tabindex,
77800            Self::Audio(e) => e.tabindex,
77801            Self::Img(e) => e.tabindex,
77802            Self::Map(e) => e.tabindex,
77803            Self::Track(e) => e.tabindex,
77804            Self::Video(e) => e.tabindex,
77805            Self::Embed(e) => e.tabindex,
77806            Self::Iframe(e) => e.tabindex,
77807            Self::Object(e) => e.tabindex,
77808            Self::Picture(e) => e.tabindex,
77809            Self::Portal(e) => e.tabindex,
77810            Self::Source(e) => e.tabindex,
77811            Self::Canvas(e) => e.tabindex,
77812            Self::Noscript(e) => e.tabindex,
77813            Self::Script(e) => e.tabindex,
77814            Self::Del(e) => e.tabindex,
77815            Self::Ins(e) => e.tabindex,
77816            Self::Caption(e) => e.tabindex,
77817            Self::Col(e) => e.tabindex,
77818            Self::Colgroup(e) => e.tabindex,
77819            Self::Table(e) => e.tabindex,
77820            Self::Tbody(e) => e.tabindex,
77821            Self::Td(e) => e.tabindex,
77822            Self::Tfoot(e) => e.tabindex,
77823            Self::Th(e) => e.tabindex,
77824            Self::Thead(e) => e.tabindex,
77825            Self::Tr(e) => e.tabindex,
77826            Self::Button(e) => e.tabindex,
77827            Self::Datalist(e) => e.tabindex,
77828            Self::Fieldset(e) => e.tabindex,
77829            Self::Form(e) => e.tabindex,
77830            Self::Input(e) => e.tabindex,
77831            Self::Label(e) => e.tabindex,
77832            Self::Legend(e) => e.tabindex,
77833            Self::Meter(e) => e.tabindex,
77834            Self::Optgroup(e) => e.tabindex,
77835            Self::Option(e) => e.tabindex,
77836            Self::Output(e) => e.tabindex,
77837            Self::Progress(e) => e.tabindex,
77838            Self::Select(e) => e.tabindex,
77839            Self::Textarea(e) => e.tabindex,
77840            Self::Details(e) => e.tabindex,
77841            Self::Dialog(e) => e.tabindex,
77842            Self::Summary(e) => e.tabindex,
77843            Self::Slot(e) => e.tabindex,
77844            Self::Template(e) => e.tabindex,
77845            Self::Acronym(e) => e.tabindex,
77846            Self::Applet(e) => e.tabindex,
77847            Self::Bgsound(e) => e.tabindex,
77848            Self::Big(e) => e.tabindex,
77849            Self::Blink(e) => e.tabindex,
77850            Self::Center(e) => e.tabindex,
77851            Self::Dir(e) => e.tabindex,
77852            Self::Font(e) => e.tabindex,
77853            Self::Frame(e) => e.tabindex,
77854            Self::Frameset(e) => e.tabindex,
77855            Self::Image(e) => e.tabindex,
77856            Self::Keygen(e) => e.tabindex,
77857            Self::Marquee(e) => e.tabindex,
77858            Self::Menuitem(e) => e.tabindex,
77859            Self::Nobr(e) => e.tabindex,
77860            Self::Noembed(e) => e.tabindex,
77861            Self::Noframes(e) => e.tabindex,
77862            Self::Param(e) => e.tabindex,
77863            Self::Plaintext(e) => e.tabindex,
77864            Self::Rb(e) => e.tabindex,
77865            Self::Rtc(e) => e.tabindex,
77866            Self::Spacer(e) => e.tabindex,
77867            Self::Strike(e) => e.tabindex,
77868            Self::Tt(e) => e.tabindex,
77869            Self::Xmp(e) => e.tabindex,
77870            Self::H1(e) => e.tabindex,
77871            Self::H2(e) => e.tabindex,
77872            Self::H3(e) => e.tabindex,
77873            Self::H4(e) => e.tabindex,
77874            Self::H5(e) => e.tabindex,
77875            Self::H6(e) => e.tabindex,
77876            Self::Unknown(e) => e.tabindex,
77877        }
77878    }
77879
77880    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
77881    ///   
77882
77883    pub fn title(&self) -> core::option::Option<AttributeValue<'life>> {
77884        match self {
77885            Self::Html(e) => e.title,
77886            Self::Base(e) => e.title,
77887            Self::Head(e) => e.title,
77888            Self::Link(e) => e.title,
77889            Self::Meta(e) => e.title,
77890            Self::Style(e) => e.title,
77891            Self::Title(e) => e.title,
77892            Self::Body(e) => e.title,
77893            Self::Address(e) => e.title,
77894            Self::Article(e) => e.title,
77895            Self::Aside(e) => e.title,
77896            Self::Footer(e) => e.title,
77897            Self::Header(e) => e.title,
77898            Self::Hgroup(e) => e.title,
77899            Self::Main(e) => e.title,
77900            Self::Nav(e) => e.title,
77901            Self::Section(e) => e.title,
77902            Self::Blockquote(e) => e.title,
77903            Self::Dd(e) => e.title,
77904            Self::Div(e) => e.title,
77905            Self::Dl(e) => e.title,
77906            Self::Dt(e) => e.title,
77907            Self::Figcaption(e) => e.title,
77908            Self::Figure(e) => e.title,
77909            Self::Hr(e) => e.title,
77910            Self::Li(e) => e.title,
77911            Self::Menu(e) => e.title,
77912            Self::Ol(e) => e.title,
77913            Self::P(e) => e.title,
77914            Self::Pre(e) => e.title,
77915            Self::Ul(e) => e.title,
77916            Self::A(e) => e.title,
77917            Self::Abbr(e) => e.title,
77918            Self::B(e) => e.title,
77919            Self::Bdi(e) => e.title,
77920            Self::Bdo(e) => e.title,
77921            Self::Br(e) => e.title,
77922            Self::Cite(e) => e.title,
77923            Self::Code(e) => e.title,
77924            Self::Data(e) => e.title,
77925            Self::Dfn(e) => e.title,
77926            Self::Em(e) => e.title,
77927            Self::I(e) => e.title,
77928            Self::Kbd(e) => e.title,
77929            Self::Mark(e) => e.title,
77930            Self::Q(e) => e.title,
77931            Self::Rp(e) => e.title,
77932            Self::Rt(e) => e.title,
77933            Self::Ruby(e) => e.title,
77934            Self::S(e) => e.title,
77935            Self::Samp(e) => e.title,
77936            Self::Small(e) => e.title,
77937            Self::Span(e) => e.title,
77938            Self::Strong(e) => e.title,
77939            Self::Sub(e) => e.title,
77940            Self::Sup(e) => e.title,
77941            Self::Time(e) => e.title,
77942            Self::U(e) => e.title,
77943            Self::Var(e) => e.title,
77944            Self::Wbr(e) => e.title,
77945            Self::Area(e) => e.title,
77946            Self::Audio(e) => e.title,
77947            Self::Img(e) => e.title,
77948            Self::Map(e) => e.title,
77949            Self::Track(e) => e.title,
77950            Self::Video(e) => e.title,
77951            Self::Embed(e) => e.title,
77952            Self::Iframe(e) => e.title,
77953            Self::Object(e) => e.title,
77954            Self::Picture(e) => e.title,
77955            Self::Portal(e) => e.title,
77956            Self::Source(e) => e.title,
77957            Self::Canvas(e) => e.title,
77958            Self::Noscript(e) => e.title,
77959            Self::Script(e) => e.title,
77960            Self::Del(e) => e.title,
77961            Self::Ins(e) => e.title,
77962            Self::Caption(e) => e.title,
77963            Self::Col(e) => e.title,
77964            Self::Colgroup(e) => e.title,
77965            Self::Table(e) => e.title,
77966            Self::Tbody(e) => e.title,
77967            Self::Td(e) => e.title,
77968            Self::Tfoot(e) => e.title,
77969            Self::Th(e) => e.title,
77970            Self::Thead(e) => e.title,
77971            Self::Tr(e) => e.title,
77972            Self::Button(e) => e.title,
77973            Self::Datalist(e) => e.title,
77974            Self::Fieldset(e) => e.title,
77975            Self::Form(e) => e.title,
77976            Self::Input(e) => e.title,
77977            Self::Label(e) => e.title,
77978            Self::Legend(e) => e.title,
77979            Self::Meter(e) => e.title,
77980            Self::Optgroup(e) => e.title,
77981            Self::Option(e) => e.title,
77982            Self::Output(e) => e.title,
77983            Self::Progress(e) => e.title,
77984            Self::Select(e) => e.title,
77985            Self::Textarea(e) => e.title,
77986            Self::Details(e) => e.title,
77987            Self::Dialog(e) => e.title,
77988            Self::Summary(e) => e.title,
77989            Self::Slot(e) => e.title,
77990            Self::Template(e) => e.title,
77991            Self::Acronym(e) => e.title,
77992            Self::Applet(e) => e.title,
77993            Self::Bgsound(e) => e.title,
77994            Self::Big(e) => e.title,
77995            Self::Blink(e) => e.title,
77996            Self::Center(e) => e.title,
77997            Self::Dir(e) => e.title,
77998            Self::Font(e) => e.title,
77999            Self::Frame(e) => e.title,
78000            Self::Frameset(e) => e.title,
78001            Self::Image(e) => e.title,
78002            Self::Keygen(e) => e.title,
78003            Self::Marquee(e) => e.title,
78004            Self::Menuitem(e) => e.title,
78005            Self::Nobr(e) => e.title,
78006            Self::Noembed(e) => e.title,
78007            Self::Noframes(e) => e.title,
78008            Self::Param(e) => e.title,
78009            Self::Plaintext(e) => e.title,
78010            Self::Rb(e) => e.title,
78011            Self::Rtc(e) => e.title,
78012            Self::Spacer(e) => e.title,
78013            Self::Strike(e) => e.title,
78014            Self::Tt(e) => e.title,
78015            Self::Xmp(e) => e.title,
78016            Self::H1(e) => e.title,
78017            Self::H2(e) => e.title,
78018            Self::H3(e) => e.title,
78019            Self::H4(e) => e.title,
78020            Self::H5(e) => e.title,
78021            Self::H6(e) => e.title,
78022            Self::Unknown(e) => e.title,
78023        }
78024    }
78025
78026    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
78027    ///     <ul>
78028    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
78029    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
78030    ///     </ul>
78031    ///   
78032
78033    pub fn translate(&self) -> core::option::Option<AttributeValue<'life>> {
78034        match self {
78035            Self::Html(e) => e.translate,
78036            Self::Base(e) => e.translate,
78037            Self::Head(e) => e.translate,
78038            Self::Link(e) => e.translate,
78039            Self::Meta(e) => e.translate,
78040            Self::Style(e) => e.translate,
78041            Self::Title(e) => e.translate,
78042            Self::Body(e) => e.translate,
78043            Self::Address(e) => e.translate,
78044            Self::Article(e) => e.translate,
78045            Self::Aside(e) => e.translate,
78046            Self::Footer(e) => e.translate,
78047            Self::Header(e) => e.translate,
78048            Self::Hgroup(e) => e.translate,
78049            Self::Main(e) => e.translate,
78050            Self::Nav(e) => e.translate,
78051            Self::Section(e) => e.translate,
78052            Self::Blockquote(e) => e.translate,
78053            Self::Dd(e) => e.translate,
78054            Self::Div(e) => e.translate,
78055            Self::Dl(e) => e.translate,
78056            Self::Dt(e) => e.translate,
78057            Self::Figcaption(e) => e.translate,
78058            Self::Figure(e) => e.translate,
78059            Self::Hr(e) => e.translate,
78060            Self::Li(e) => e.translate,
78061            Self::Menu(e) => e.translate,
78062            Self::Ol(e) => e.translate,
78063            Self::P(e) => e.translate,
78064            Self::Pre(e) => e.translate,
78065            Self::Ul(e) => e.translate,
78066            Self::A(e) => e.translate,
78067            Self::Abbr(e) => e.translate,
78068            Self::B(e) => e.translate,
78069            Self::Bdi(e) => e.translate,
78070            Self::Bdo(e) => e.translate,
78071            Self::Br(e) => e.translate,
78072            Self::Cite(e) => e.translate,
78073            Self::Code(e) => e.translate,
78074            Self::Data(e) => e.translate,
78075            Self::Dfn(e) => e.translate,
78076            Self::Em(e) => e.translate,
78077            Self::I(e) => e.translate,
78078            Self::Kbd(e) => e.translate,
78079            Self::Mark(e) => e.translate,
78080            Self::Q(e) => e.translate,
78081            Self::Rp(e) => e.translate,
78082            Self::Rt(e) => e.translate,
78083            Self::Ruby(e) => e.translate,
78084            Self::S(e) => e.translate,
78085            Self::Samp(e) => e.translate,
78086            Self::Small(e) => e.translate,
78087            Self::Span(e) => e.translate,
78088            Self::Strong(e) => e.translate,
78089            Self::Sub(e) => e.translate,
78090            Self::Sup(e) => e.translate,
78091            Self::Time(e) => e.translate,
78092            Self::U(e) => e.translate,
78093            Self::Var(e) => e.translate,
78094            Self::Wbr(e) => e.translate,
78095            Self::Area(e) => e.translate,
78096            Self::Audio(e) => e.translate,
78097            Self::Img(e) => e.translate,
78098            Self::Map(e) => e.translate,
78099            Self::Track(e) => e.translate,
78100            Self::Video(e) => e.translate,
78101            Self::Embed(e) => e.translate,
78102            Self::Iframe(e) => e.translate,
78103            Self::Object(e) => e.translate,
78104            Self::Picture(e) => e.translate,
78105            Self::Portal(e) => e.translate,
78106            Self::Source(e) => e.translate,
78107            Self::Canvas(e) => e.translate,
78108            Self::Noscript(e) => e.translate,
78109            Self::Script(e) => e.translate,
78110            Self::Del(e) => e.translate,
78111            Self::Ins(e) => e.translate,
78112            Self::Caption(e) => e.translate,
78113            Self::Col(e) => e.translate,
78114            Self::Colgroup(e) => e.translate,
78115            Self::Table(e) => e.translate,
78116            Self::Tbody(e) => e.translate,
78117            Self::Td(e) => e.translate,
78118            Self::Tfoot(e) => e.translate,
78119            Self::Th(e) => e.translate,
78120            Self::Thead(e) => e.translate,
78121            Self::Tr(e) => e.translate,
78122            Self::Button(e) => e.translate,
78123            Self::Datalist(e) => e.translate,
78124            Self::Fieldset(e) => e.translate,
78125            Self::Form(e) => e.translate,
78126            Self::Input(e) => e.translate,
78127            Self::Label(e) => e.translate,
78128            Self::Legend(e) => e.translate,
78129            Self::Meter(e) => e.translate,
78130            Self::Optgroup(e) => e.translate,
78131            Self::Option(e) => e.translate,
78132            Self::Output(e) => e.translate,
78133            Self::Progress(e) => e.translate,
78134            Self::Select(e) => e.translate,
78135            Self::Textarea(e) => e.translate,
78136            Self::Details(e) => e.translate,
78137            Self::Dialog(e) => e.translate,
78138            Self::Summary(e) => e.translate,
78139            Self::Slot(e) => e.translate,
78140            Self::Template(e) => e.translate,
78141            Self::Acronym(e) => e.translate,
78142            Self::Applet(e) => e.translate,
78143            Self::Bgsound(e) => e.translate,
78144            Self::Big(e) => e.translate,
78145            Self::Blink(e) => e.translate,
78146            Self::Center(e) => e.translate,
78147            Self::Dir(e) => e.translate,
78148            Self::Font(e) => e.translate,
78149            Self::Frame(e) => e.translate,
78150            Self::Frameset(e) => e.translate,
78151            Self::Image(e) => e.translate,
78152            Self::Keygen(e) => e.translate,
78153            Self::Marquee(e) => e.translate,
78154            Self::Menuitem(e) => e.translate,
78155            Self::Nobr(e) => e.translate,
78156            Self::Noembed(e) => e.translate,
78157            Self::Noframes(e) => e.translate,
78158            Self::Param(e) => e.translate,
78159            Self::Plaintext(e) => e.translate,
78160            Self::Rb(e) => e.translate,
78161            Self::Rtc(e) => e.translate,
78162            Self::Spacer(e) => e.translate,
78163            Self::Strike(e) => e.translate,
78164            Self::Tt(e) => e.translate,
78165            Self::Xmp(e) => e.translate,
78166            Self::H1(e) => e.translate,
78167            Self::H2(e) => e.translate,
78168            Self::H3(e) => e.translate,
78169            Self::H4(e) => e.translate,
78170            Self::H5(e) => e.translate,
78171            Self::H6(e) => e.translate,
78172            Self::Unknown(e) => e.translate,
78173        }
78174    }
78175
78176    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
78177    ///     <ul>
78178    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
78179    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
78180    ///     </ul>
78181    ///   
78182
78183    pub fn virtualkeyboardpolicy(&self) -> core::option::Option<AttributeValue<'life>> {
78184        match self {
78185            Self::Html(e) => e.virtualkeyboardpolicy,
78186            Self::Base(e) => e.virtualkeyboardpolicy,
78187            Self::Head(e) => e.virtualkeyboardpolicy,
78188            Self::Link(e) => e.virtualkeyboardpolicy,
78189            Self::Meta(e) => e.virtualkeyboardpolicy,
78190            Self::Style(e) => e.virtualkeyboardpolicy,
78191            Self::Title(e) => e.virtualkeyboardpolicy,
78192            Self::Body(e) => e.virtualkeyboardpolicy,
78193            Self::Address(e) => e.virtualkeyboardpolicy,
78194            Self::Article(e) => e.virtualkeyboardpolicy,
78195            Self::Aside(e) => e.virtualkeyboardpolicy,
78196            Self::Footer(e) => e.virtualkeyboardpolicy,
78197            Self::Header(e) => e.virtualkeyboardpolicy,
78198            Self::Hgroup(e) => e.virtualkeyboardpolicy,
78199            Self::Main(e) => e.virtualkeyboardpolicy,
78200            Self::Nav(e) => e.virtualkeyboardpolicy,
78201            Self::Section(e) => e.virtualkeyboardpolicy,
78202            Self::Blockquote(e) => e.virtualkeyboardpolicy,
78203            Self::Dd(e) => e.virtualkeyboardpolicy,
78204            Self::Div(e) => e.virtualkeyboardpolicy,
78205            Self::Dl(e) => e.virtualkeyboardpolicy,
78206            Self::Dt(e) => e.virtualkeyboardpolicy,
78207            Self::Figcaption(e) => e.virtualkeyboardpolicy,
78208            Self::Figure(e) => e.virtualkeyboardpolicy,
78209            Self::Hr(e) => e.virtualkeyboardpolicy,
78210            Self::Li(e) => e.virtualkeyboardpolicy,
78211            Self::Menu(e) => e.virtualkeyboardpolicy,
78212            Self::Ol(e) => e.virtualkeyboardpolicy,
78213            Self::P(e) => e.virtualkeyboardpolicy,
78214            Self::Pre(e) => e.virtualkeyboardpolicy,
78215            Self::Ul(e) => e.virtualkeyboardpolicy,
78216            Self::A(e) => e.virtualkeyboardpolicy,
78217            Self::Abbr(e) => e.virtualkeyboardpolicy,
78218            Self::B(e) => e.virtualkeyboardpolicy,
78219            Self::Bdi(e) => e.virtualkeyboardpolicy,
78220            Self::Bdo(e) => e.virtualkeyboardpolicy,
78221            Self::Br(e) => e.virtualkeyboardpolicy,
78222            Self::Cite(e) => e.virtualkeyboardpolicy,
78223            Self::Code(e) => e.virtualkeyboardpolicy,
78224            Self::Data(e) => e.virtualkeyboardpolicy,
78225            Self::Dfn(e) => e.virtualkeyboardpolicy,
78226            Self::Em(e) => e.virtualkeyboardpolicy,
78227            Self::I(e) => e.virtualkeyboardpolicy,
78228            Self::Kbd(e) => e.virtualkeyboardpolicy,
78229            Self::Mark(e) => e.virtualkeyboardpolicy,
78230            Self::Q(e) => e.virtualkeyboardpolicy,
78231            Self::Rp(e) => e.virtualkeyboardpolicy,
78232            Self::Rt(e) => e.virtualkeyboardpolicy,
78233            Self::Ruby(e) => e.virtualkeyboardpolicy,
78234            Self::S(e) => e.virtualkeyboardpolicy,
78235            Self::Samp(e) => e.virtualkeyboardpolicy,
78236            Self::Small(e) => e.virtualkeyboardpolicy,
78237            Self::Span(e) => e.virtualkeyboardpolicy,
78238            Self::Strong(e) => e.virtualkeyboardpolicy,
78239            Self::Sub(e) => e.virtualkeyboardpolicy,
78240            Self::Sup(e) => e.virtualkeyboardpolicy,
78241            Self::Time(e) => e.virtualkeyboardpolicy,
78242            Self::U(e) => e.virtualkeyboardpolicy,
78243            Self::Var(e) => e.virtualkeyboardpolicy,
78244            Self::Wbr(e) => e.virtualkeyboardpolicy,
78245            Self::Area(e) => e.virtualkeyboardpolicy,
78246            Self::Audio(e) => e.virtualkeyboardpolicy,
78247            Self::Img(e) => e.virtualkeyboardpolicy,
78248            Self::Map(e) => e.virtualkeyboardpolicy,
78249            Self::Track(e) => e.virtualkeyboardpolicy,
78250            Self::Video(e) => e.virtualkeyboardpolicy,
78251            Self::Embed(e) => e.virtualkeyboardpolicy,
78252            Self::Iframe(e) => e.virtualkeyboardpolicy,
78253            Self::Object(e) => e.virtualkeyboardpolicy,
78254            Self::Picture(e) => e.virtualkeyboardpolicy,
78255            Self::Portal(e) => e.virtualkeyboardpolicy,
78256            Self::Source(e) => e.virtualkeyboardpolicy,
78257            Self::Canvas(e) => e.virtualkeyboardpolicy,
78258            Self::Noscript(e) => e.virtualkeyboardpolicy,
78259            Self::Script(e) => e.virtualkeyboardpolicy,
78260            Self::Del(e) => e.virtualkeyboardpolicy,
78261            Self::Ins(e) => e.virtualkeyboardpolicy,
78262            Self::Caption(e) => e.virtualkeyboardpolicy,
78263            Self::Col(e) => e.virtualkeyboardpolicy,
78264            Self::Colgroup(e) => e.virtualkeyboardpolicy,
78265            Self::Table(e) => e.virtualkeyboardpolicy,
78266            Self::Tbody(e) => e.virtualkeyboardpolicy,
78267            Self::Td(e) => e.virtualkeyboardpolicy,
78268            Self::Tfoot(e) => e.virtualkeyboardpolicy,
78269            Self::Th(e) => e.virtualkeyboardpolicy,
78270            Self::Thead(e) => e.virtualkeyboardpolicy,
78271            Self::Tr(e) => e.virtualkeyboardpolicy,
78272            Self::Button(e) => e.virtualkeyboardpolicy,
78273            Self::Datalist(e) => e.virtualkeyboardpolicy,
78274            Self::Fieldset(e) => e.virtualkeyboardpolicy,
78275            Self::Form(e) => e.virtualkeyboardpolicy,
78276            Self::Input(e) => e.virtualkeyboardpolicy,
78277            Self::Label(e) => e.virtualkeyboardpolicy,
78278            Self::Legend(e) => e.virtualkeyboardpolicy,
78279            Self::Meter(e) => e.virtualkeyboardpolicy,
78280            Self::Optgroup(e) => e.virtualkeyboardpolicy,
78281            Self::Option(e) => e.virtualkeyboardpolicy,
78282            Self::Output(e) => e.virtualkeyboardpolicy,
78283            Self::Progress(e) => e.virtualkeyboardpolicy,
78284            Self::Select(e) => e.virtualkeyboardpolicy,
78285            Self::Textarea(e) => e.virtualkeyboardpolicy,
78286            Self::Details(e) => e.virtualkeyboardpolicy,
78287            Self::Dialog(e) => e.virtualkeyboardpolicy,
78288            Self::Summary(e) => e.virtualkeyboardpolicy,
78289            Self::Slot(e) => e.virtualkeyboardpolicy,
78290            Self::Template(e) => e.virtualkeyboardpolicy,
78291            Self::Acronym(e) => e.virtualkeyboardpolicy,
78292            Self::Applet(e) => e.virtualkeyboardpolicy,
78293            Self::Bgsound(e) => e.virtualkeyboardpolicy,
78294            Self::Big(e) => e.virtualkeyboardpolicy,
78295            Self::Blink(e) => e.virtualkeyboardpolicy,
78296            Self::Center(e) => e.virtualkeyboardpolicy,
78297            Self::Dir(e) => e.virtualkeyboardpolicy,
78298            Self::Font(e) => e.virtualkeyboardpolicy,
78299            Self::Frame(e) => e.virtualkeyboardpolicy,
78300            Self::Frameset(e) => e.virtualkeyboardpolicy,
78301            Self::Image(e) => e.virtualkeyboardpolicy,
78302            Self::Keygen(e) => e.virtualkeyboardpolicy,
78303            Self::Marquee(e) => e.virtualkeyboardpolicy,
78304            Self::Menuitem(e) => e.virtualkeyboardpolicy,
78305            Self::Nobr(e) => e.virtualkeyboardpolicy,
78306            Self::Noembed(e) => e.virtualkeyboardpolicy,
78307            Self::Noframes(e) => e.virtualkeyboardpolicy,
78308            Self::Param(e) => e.virtualkeyboardpolicy,
78309            Self::Plaintext(e) => e.virtualkeyboardpolicy,
78310            Self::Rb(e) => e.virtualkeyboardpolicy,
78311            Self::Rtc(e) => e.virtualkeyboardpolicy,
78312            Self::Spacer(e) => e.virtualkeyboardpolicy,
78313            Self::Strike(e) => e.virtualkeyboardpolicy,
78314            Self::Tt(e) => e.virtualkeyboardpolicy,
78315            Self::Xmp(e) => e.virtualkeyboardpolicy,
78316            Self::H1(e) => e.virtualkeyboardpolicy,
78317            Self::H2(e) => e.virtualkeyboardpolicy,
78318            Self::H3(e) => e.virtualkeyboardpolicy,
78319            Self::H4(e) => e.virtualkeyboardpolicy,
78320            Self::H5(e) => e.virtualkeyboardpolicy,
78321            Self::H6(e) => e.virtualkeyboardpolicy,
78322            Self::Unknown(e) => e.virtualkeyboardpolicy,
78323        }
78324    }
78325
78326    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
78327    ///   
78328
78329    pub fn set_accesskey(&mut self, val: AttributeValue<'life>) {
78330        match self {
78331            Self::Html(e) => e.accesskey.replace(val),
78332            Self::Base(e) => e.accesskey.replace(val),
78333            Self::Head(e) => e.accesskey.replace(val),
78334            Self::Link(e) => e.accesskey.replace(val),
78335            Self::Meta(e) => e.accesskey.replace(val),
78336            Self::Style(e) => e.accesskey.replace(val),
78337            Self::Title(e) => e.accesskey.replace(val),
78338            Self::Body(e) => e.accesskey.replace(val),
78339            Self::Address(e) => e.accesskey.replace(val),
78340            Self::Article(e) => e.accesskey.replace(val),
78341            Self::Aside(e) => e.accesskey.replace(val),
78342            Self::Footer(e) => e.accesskey.replace(val),
78343            Self::Header(e) => e.accesskey.replace(val),
78344            Self::Hgroup(e) => e.accesskey.replace(val),
78345            Self::Main(e) => e.accesskey.replace(val),
78346            Self::Nav(e) => e.accesskey.replace(val),
78347            Self::Section(e) => e.accesskey.replace(val),
78348            Self::Blockquote(e) => e.accesskey.replace(val),
78349            Self::Dd(e) => e.accesskey.replace(val),
78350            Self::Div(e) => e.accesskey.replace(val),
78351            Self::Dl(e) => e.accesskey.replace(val),
78352            Self::Dt(e) => e.accesskey.replace(val),
78353            Self::Figcaption(e) => e.accesskey.replace(val),
78354            Self::Figure(e) => e.accesskey.replace(val),
78355            Self::Hr(e) => e.accesskey.replace(val),
78356            Self::Li(e) => e.accesskey.replace(val),
78357            Self::Menu(e) => e.accesskey.replace(val),
78358            Self::Ol(e) => e.accesskey.replace(val),
78359            Self::P(e) => e.accesskey.replace(val),
78360            Self::Pre(e) => e.accesskey.replace(val),
78361            Self::Ul(e) => e.accesskey.replace(val),
78362            Self::A(e) => e.accesskey.replace(val),
78363            Self::Abbr(e) => e.accesskey.replace(val),
78364            Self::B(e) => e.accesskey.replace(val),
78365            Self::Bdi(e) => e.accesskey.replace(val),
78366            Self::Bdo(e) => e.accesskey.replace(val),
78367            Self::Br(e) => e.accesskey.replace(val),
78368            Self::Cite(e) => e.accesskey.replace(val),
78369            Self::Code(e) => e.accesskey.replace(val),
78370            Self::Data(e) => e.accesskey.replace(val),
78371            Self::Dfn(e) => e.accesskey.replace(val),
78372            Self::Em(e) => e.accesskey.replace(val),
78373            Self::I(e) => e.accesskey.replace(val),
78374            Self::Kbd(e) => e.accesskey.replace(val),
78375            Self::Mark(e) => e.accesskey.replace(val),
78376            Self::Q(e) => e.accesskey.replace(val),
78377            Self::Rp(e) => e.accesskey.replace(val),
78378            Self::Rt(e) => e.accesskey.replace(val),
78379            Self::Ruby(e) => e.accesskey.replace(val),
78380            Self::S(e) => e.accesskey.replace(val),
78381            Self::Samp(e) => e.accesskey.replace(val),
78382            Self::Small(e) => e.accesskey.replace(val),
78383            Self::Span(e) => e.accesskey.replace(val),
78384            Self::Strong(e) => e.accesskey.replace(val),
78385            Self::Sub(e) => e.accesskey.replace(val),
78386            Self::Sup(e) => e.accesskey.replace(val),
78387            Self::Time(e) => e.accesskey.replace(val),
78388            Self::U(e) => e.accesskey.replace(val),
78389            Self::Var(e) => e.accesskey.replace(val),
78390            Self::Wbr(e) => e.accesskey.replace(val),
78391            Self::Area(e) => e.accesskey.replace(val),
78392            Self::Audio(e) => e.accesskey.replace(val),
78393            Self::Img(e) => e.accesskey.replace(val),
78394            Self::Map(e) => e.accesskey.replace(val),
78395            Self::Track(e) => e.accesskey.replace(val),
78396            Self::Video(e) => e.accesskey.replace(val),
78397            Self::Embed(e) => e.accesskey.replace(val),
78398            Self::Iframe(e) => e.accesskey.replace(val),
78399            Self::Object(e) => e.accesskey.replace(val),
78400            Self::Picture(e) => e.accesskey.replace(val),
78401            Self::Portal(e) => e.accesskey.replace(val),
78402            Self::Source(e) => e.accesskey.replace(val),
78403            Self::Canvas(e) => e.accesskey.replace(val),
78404            Self::Noscript(e) => e.accesskey.replace(val),
78405            Self::Script(e) => e.accesskey.replace(val),
78406            Self::Del(e) => e.accesskey.replace(val),
78407            Self::Ins(e) => e.accesskey.replace(val),
78408            Self::Caption(e) => e.accesskey.replace(val),
78409            Self::Col(e) => e.accesskey.replace(val),
78410            Self::Colgroup(e) => e.accesskey.replace(val),
78411            Self::Table(e) => e.accesskey.replace(val),
78412            Self::Tbody(e) => e.accesskey.replace(val),
78413            Self::Td(e) => e.accesskey.replace(val),
78414            Self::Tfoot(e) => e.accesskey.replace(val),
78415            Self::Th(e) => e.accesskey.replace(val),
78416            Self::Thead(e) => e.accesskey.replace(val),
78417            Self::Tr(e) => e.accesskey.replace(val),
78418            Self::Button(e) => e.accesskey.replace(val),
78419            Self::Datalist(e) => e.accesskey.replace(val),
78420            Self::Fieldset(e) => e.accesskey.replace(val),
78421            Self::Form(e) => e.accesskey.replace(val),
78422            Self::Input(e) => e.accesskey.replace(val),
78423            Self::Label(e) => e.accesskey.replace(val),
78424            Self::Legend(e) => e.accesskey.replace(val),
78425            Self::Meter(e) => e.accesskey.replace(val),
78426            Self::Optgroup(e) => e.accesskey.replace(val),
78427            Self::Option(e) => e.accesskey.replace(val),
78428            Self::Output(e) => e.accesskey.replace(val),
78429            Self::Progress(e) => e.accesskey.replace(val),
78430            Self::Select(e) => e.accesskey.replace(val),
78431            Self::Textarea(e) => e.accesskey.replace(val),
78432            Self::Details(e) => e.accesskey.replace(val),
78433            Self::Dialog(e) => e.accesskey.replace(val),
78434            Self::Summary(e) => e.accesskey.replace(val),
78435            Self::Slot(e) => e.accesskey.replace(val),
78436            Self::Template(e) => e.accesskey.replace(val),
78437            Self::Acronym(e) => e.accesskey.replace(val),
78438            Self::Applet(e) => e.accesskey.replace(val),
78439            Self::Bgsound(e) => e.accesskey.replace(val),
78440            Self::Big(e) => e.accesskey.replace(val),
78441            Self::Blink(e) => e.accesskey.replace(val),
78442            Self::Center(e) => e.accesskey.replace(val),
78443            Self::Dir(e) => e.accesskey.replace(val),
78444            Self::Font(e) => e.accesskey.replace(val),
78445            Self::Frame(e) => e.accesskey.replace(val),
78446            Self::Frameset(e) => e.accesskey.replace(val),
78447            Self::Image(e) => e.accesskey.replace(val),
78448            Self::Keygen(e) => e.accesskey.replace(val),
78449            Self::Marquee(e) => e.accesskey.replace(val),
78450            Self::Menuitem(e) => e.accesskey.replace(val),
78451            Self::Nobr(e) => e.accesskey.replace(val),
78452            Self::Noembed(e) => e.accesskey.replace(val),
78453            Self::Noframes(e) => e.accesskey.replace(val),
78454            Self::Param(e) => e.accesskey.replace(val),
78455            Self::Plaintext(e) => e.accesskey.replace(val),
78456            Self::Rb(e) => e.accesskey.replace(val),
78457            Self::Rtc(e) => e.accesskey.replace(val),
78458            Self::Spacer(e) => e.accesskey.replace(val),
78459            Self::Strike(e) => e.accesskey.replace(val),
78460            Self::Tt(e) => e.accesskey.replace(val),
78461            Self::Xmp(e) => e.accesskey.replace(val),
78462            Self::H1(e) => e.accesskey.replace(val),
78463            Self::H2(e) => e.accesskey.replace(val),
78464            Self::H3(e) => e.accesskey.replace(val),
78465            Self::H4(e) => e.accesskey.replace(val),
78466            Self::H5(e) => e.accesskey.replace(val),
78467            Self::H6(e) => e.accesskey.replace(val),
78468            Self::Unknown(e) => e.accesskey.replace(val),
78469        };
78470    }
78471
78472    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
78473    ///     <ul>
78474    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
78475    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
78476    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
78477    ///       <li><code>characters</code>, all letters should default to uppercase</li>
78478    ///     </ul>
78479    ///   
78480
78481    pub fn set_autocapitalize(&mut self, val: AttributeValue<'life>) {
78482        match self {
78483            Self::Html(e) => e.autocapitalize.replace(val),
78484            Self::Base(e) => e.autocapitalize.replace(val),
78485            Self::Head(e) => e.autocapitalize.replace(val),
78486            Self::Link(e) => e.autocapitalize.replace(val),
78487            Self::Meta(e) => e.autocapitalize.replace(val),
78488            Self::Style(e) => e.autocapitalize.replace(val),
78489            Self::Title(e) => e.autocapitalize.replace(val),
78490            Self::Body(e) => e.autocapitalize.replace(val),
78491            Self::Address(e) => e.autocapitalize.replace(val),
78492            Self::Article(e) => e.autocapitalize.replace(val),
78493            Self::Aside(e) => e.autocapitalize.replace(val),
78494            Self::Footer(e) => e.autocapitalize.replace(val),
78495            Self::Header(e) => e.autocapitalize.replace(val),
78496            Self::Hgroup(e) => e.autocapitalize.replace(val),
78497            Self::Main(e) => e.autocapitalize.replace(val),
78498            Self::Nav(e) => e.autocapitalize.replace(val),
78499            Self::Section(e) => e.autocapitalize.replace(val),
78500            Self::Blockquote(e) => e.autocapitalize.replace(val),
78501            Self::Dd(e) => e.autocapitalize.replace(val),
78502            Self::Div(e) => e.autocapitalize.replace(val),
78503            Self::Dl(e) => e.autocapitalize.replace(val),
78504            Self::Dt(e) => e.autocapitalize.replace(val),
78505            Self::Figcaption(e) => e.autocapitalize.replace(val),
78506            Self::Figure(e) => e.autocapitalize.replace(val),
78507            Self::Hr(e) => e.autocapitalize.replace(val),
78508            Self::Li(e) => e.autocapitalize.replace(val),
78509            Self::Menu(e) => e.autocapitalize.replace(val),
78510            Self::Ol(e) => e.autocapitalize.replace(val),
78511            Self::P(e) => e.autocapitalize.replace(val),
78512            Self::Pre(e) => e.autocapitalize.replace(val),
78513            Self::Ul(e) => e.autocapitalize.replace(val),
78514            Self::A(e) => e.autocapitalize.replace(val),
78515            Self::Abbr(e) => e.autocapitalize.replace(val),
78516            Self::B(e) => e.autocapitalize.replace(val),
78517            Self::Bdi(e) => e.autocapitalize.replace(val),
78518            Self::Bdo(e) => e.autocapitalize.replace(val),
78519            Self::Br(e) => e.autocapitalize.replace(val),
78520            Self::Cite(e) => e.autocapitalize.replace(val),
78521            Self::Code(e) => e.autocapitalize.replace(val),
78522            Self::Data(e) => e.autocapitalize.replace(val),
78523            Self::Dfn(e) => e.autocapitalize.replace(val),
78524            Self::Em(e) => e.autocapitalize.replace(val),
78525            Self::I(e) => e.autocapitalize.replace(val),
78526            Self::Kbd(e) => e.autocapitalize.replace(val),
78527            Self::Mark(e) => e.autocapitalize.replace(val),
78528            Self::Q(e) => e.autocapitalize.replace(val),
78529            Self::Rp(e) => e.autocapitalize.replace(val),
78530            Self::Rt(e) => e.autocapitalize.replace(val),
78531            Self::Ruby(e) => e.autocapitalize.replace(val),
78532            Self::S(e) => e.autocapitalize.replace(val),
78533            Self::Samp(e) => e.autocapitalize.replace(val),
78534            Self::Small(e) => e.autocapitalize.replace(val),
78535            Self::Span(e) => e.autocapitalize.replace(val),
78536            Self::Strong(e) => e.autocapitalize.replace(val),
78537            Self::Sub(e) => e.autocapitalize.replace(val),
78538            Self::Sup(e) => e.autocapitalize.replace(val),
78539            Self::Time(e) => e.autocapitalize.replace(val),
78540            Self::U(e) => e.autocapitalize.replace(val),
78541            Self::Var(e) => e.autocapitalize.replace(val),
78542            Self::Wbr(e) => e.autocapitalize.replace(val),
78543            Self::Area(e) => e.autocapitalize.replace(val),
78544            Self::Audio(e) => e.autocapitalize.replace(val),
78545            Self::Img(e) => e.autocapitalize.replace(val),
78546            Self::Map(e) => e.autocapitalize.replace(val),
78547            Self::Track(e) => e.autocapitalize.replace(val),
78548            Self::Video(e) => e.autocapitalize.replace(val),
78549            Self::Embed(e) => e.autocapitalize.replace(val),
78550            Self::Iframe(e) => e.autocapitalize.replace(val),
78551            Self::Object(e) => e.autocapitalize.replace(val),
78552            Self::Picture(e) => e.autocapitalize.replace(val),
78553            Self::Portal(e) => e.autocapitalize.replace(val),
78554            Self::Source(e) => e.autocapitalize.replace(val),
78555            Self::Canvas(e) => e.autocapitalize.replace(val),
78556            Self::Noscript(e) => e.autocapitalize.replace(val),
78557            Self::Script(e) => e.autocapitalize.replace(val),
78558            Self::Del(e) => e.autocapitalize.replace(val),
78559            Self::Ins(e) => e.autocapitalize.replace(val),
78560            Self::Caption(e) => e.autocapitalize.replace(val),
78561            Self::Col(e) => e.autocapitalize.replace(val),
78562            Self::Colgroup(e) => e.autocapitalize.replace(val),
78563            Self::Table(e) => e.autocapitalize.replace(val),
78564            Self::Tbody(e) => e.autocapitalize.replace(val),
78565            Self::Td(e) => e.autocapitalize.replace(val),
78566            Self::Tfoot(e) => e.autocapitalize.replace(val),
78567            Self::Th(e) => e.autocapitalize.replace(val),
78568            Self::Thead(e) => e.autocapitalize.replace(val),
78569            Self::Tr(e) => e.autocapitalize.replace(val),
78570            Self::Button(e) => e.autocapitalize.replace(val),
78571            Self::Datalist(e) => e.autocapitalize.replace(val),
78572            Self::Fieldset(e) => e.autocapitalize.replace(val),
78573            Self::Form(e) => e.autocapitalize.replace(val),
78574            Self::Input(e) => e.autocapitalize.replace(val),
78575            Self::Label(e) => e.autocapitalize.replace(val),
78576            Self::Legend(e) => e.autocapitalize.replace(val),
78577            Self::Meter(e) => e.autocapitalize.replace(val),
78578            Self::Optgroup(e) => e.autocapitalize.replace(val),
78579            Self::Option(e) => e.autocapitalize.replace(val),
78580            Self::Output(e) => e.autocapitalize.replace(val),
78581            Self::Progress(e) => e.autocapitalize.replace(val),
78582            Self::Select(e) => e.autocapitalize.replace(val),
78583            Self::Textarea(e) => e.autocapitalize.replace(val),
78584            Self::Details(e) => e.autocapitalize.replace(val),
78585            Self::Dialog(e) => e.autocapitalize.replace(val),
78586            Self::Summary(e) => e.autocapitalize.replace(val),
78587            Self::Slot(e) => e.autocapitalize.replace(val),
78588            Self::Template(e) => e.autocapitalize.replace(val),
78589            Self::Acronym(e) => e.autocapitalize.replace(val),
78590            Self::Applet(e) => e.autocapitalize.replace(val),
78591            Self::Bgsound(e) => e.autocapitalize.replace(val),
78592            Self::Big(e) => e.autocapitalize.replace(val),
78593            Self::Blink(e) => e.autocapitalize.replace(val),
78594            Self::Center(e) => e.autocapitalize.replace(val),
78595            Self::Dir(e) => e.autocapitalize.replace(val),
78596            Self::Font(e) => e.autocapitalize.replace(val),
78597            Self::Frame(e) => e.autocapitalize.replace(val),
78598            Self::Frameset(e) => e.autocapitalize.replace(val),
78599            Self::Image(e) => e.autocapitalize.replace(val),
78600            Self::Keygen(e) => e.autocapitalize.replace(val),
78601            Self::Marquee(e) => e.autocapitalize.replace(val),
78602            Self::Menuitem(e) => e.autocapitalize.replace(val),
78603            Self::Nobr(e) => e.autocapitalize.replace(val),
78604            Self::Noembed(e) => e.autocapitalize.replace(val),
78605            Self::Noframes(e) => e.autocapitalize.replace(val),
78606            Self::Param(e) => e.autocapitalize.replace(val),
78607            Self::Plaintext(e) => e.autocapitalize.replace(val),
78608            Self::Rb(e) => e.autocapitalize.replace(val),
78609            Self::Rtc(e) => e.autocapitalize.replace(val),
78610            Self::Spacer(e) => e.autocapitalize.replace(val),
78611            Self::Strike(e) => e.autocapitalize.replace(val),
78612            Self::Tt(e) => e.autocapitalize.replace(val),
78613            Self::Xmp(e) => e.autocapitalize.replace(val),
78614            Self::H1(e) => e.autocapitalize.replace(val),
78615            Self::H2(e) => e.autocapitalize.replace(val),
78616            Self::H3(e) => e.autocapitalize.replace(val),
78617            Self::H4(e) => e.autocapitalize.replace(val),
78618            Self::H5(e) => e.autocapitalize.replace(val),
78619            Self::H6(e) => e.autocapitalize.replace(val),
78620            Self::Unknown(e) => e.autocapitalize.replace(val),
78621        };
78622    }
78623
78624    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
78625    ///   
78626
78627    pub fn set_autofocus(&mut self, val: AttributeValue<'life>) {
78628        match self {
78629            Self::Html(e) => e.autofocus.replace(val),
78630            Self::Base(e) => e.autofocus.replace(val),
78631            Self::Head(e) => e.autofocus.replace(val),
78632            Self::Link(e) => e.autofocus.replace(val),
78633            Self::Meta(e) => e.autofocus.replace(val),
78634            Self::Style(e) => e.autofocus.replace(val),
78635            Self::Title(e) => e.autofocus.replace(val),
78636            Self::Body(e) => e.autofocus.replace(val),
78637            Self::Address(e) => e.autofocus.replace(val),
78638            Self::Article(e) => e.autofocus.replace(val),
78639            Self::Aside(e) => e.autofocus.replace(val),
78640            Self::Footer(e) => e.autofocus.replace(val),
78641            Self::Header(e) => e.autofocus.replace(val),
78642            Self::Hgroup(e) => e.autofocus.replace(val),
78643            Self::Main(e) => e.autofocus.replace(val),
78644            Self::Nav(e) => e.autofocus.replace(val),
78645            Self::Section(e) => e.autofocus.replace(val),
78646            Self::Blockquote(e) => e.autofocus.replace(val),
78647            Self::Dd(e) => e.autofocus.replace(val),
78648            Self::Div(e) => e.autofocus.replace(val),
78649            Self::Dl(e) => e.autofocus.replace(val),
78650            Self::Dt(e) => e.autofocus.replace(val),
78651            Self::Figcaption(e) => e.autofocus.replace(val),
78652            Self::Figure(e) => e.autofocus.replace(val),
78653            Self::Hr(e) => e.autofocus.replace(val),
78654            Self::Li(e) => e.autofocus.replace(val),
78655            Self::Menu(e) => e.autofocus.replace(val),
78656            Self::Ol(e) => e.autofocus.replace(val),
78657            Self::P(e) => e.autofocus.replace(val),
78658            Self::Pre(e) => e.autofocus.replace(val),
78659            Self::Ul(e) => e.autofocus.replace(val),
78660            Self::A(e) => e.autofocus.replace(val),
78661            Self::Abbr(e) => e.autofocus.replace(val),
78662            Self::B(e) => e.autofocus.replace(val),
78663            Self::Bdi(e) => e.autofocus.replace(val),
78664            Self::Bdo(e) => e.autofocus.replace(val),
78665            Self::Br(e) => e.autofocus.replace(val),
78666            Self::Cite(e) => e.autofocus.replace(val),
78667            Self::Code(e) => e.autofocus.replace(val),
78668            Self::Data(e) => e.autofocus.replace(val),
78669            Self::Dfn(e) => e.autofocus.replace(val),
78670            Self::Em(e) => e.autofocus.replace(val),
78671            Self::I(e) => e.autofocus.replace(val),
78672            Self::Kbd(e) => e.autofocus.replace(val),
78673            Self::Mark(e) => e.autofocus.replace(val),
78674            Self::Q(e) => e.autofocus.replace(val),
78675            Self::Rp(e) => e.autofocus.replace(val),
78676            Self::Rt(e) => e.autofocus.replace(val),
78677            Self::Ruby(e) => e.autofocus.replace(val),
78678            Self::S(e) => e.autofocus.replace(val),
78679            Self::Samp(e) => e.autofocus.replace(val),
78680            Self::Small(e) => e.autofocus.replace(val),
78681            Self::Span(e) => e.autofocus.replace(val),
78682            Self::Strong(e) => e.autofocus.replace(val),
78683            Self::Sub(e) => e.autofocus.replace(val),
78684            Self::Sup(e) => e.autofocus.replace(val),
78685            Self::Time(e) => e.autofocus.replace(val),
78686            Self::U(e) => e.autofocus.replace(val),
78687            Self::Var(e) => e.autofocus.replace(val),
78688            Self::Wbr(e) => e.autofocus.replace(val),
78689            Self::Area(e) => e.autofocus.replace(val),
78690            Self::Audio(e) => e.autofocus.replace(val),
78691            Self::Img(e) => e.autofocus.replace(val),
78692            Self::Map(e) => e.autofocus.replace(val),
78693            Self::Track(e) => e.autofocus.replace(val),
78694            Self::Video(e) => e.autofocus.replace(val),
78695            Self::Embed(e) => e.autofocus.replace(val),
78696            Self::Iframe(e) => e.autofocus.replace(val),
78697            Self::Object(e) => e.autofocus.replace(val),
78698            Self::Picture(e) => e.autofocus.replace(val),
78699            Self::Portal(e) => e.autofocus.replace(val),
78700            Self::Source(e) => e.autofocus.replace(val),
78701            Self::Canvas(e) => e.autofocus.replace(val),
78702            Self::Noscript(e) => e.autofocus.replace(val),
78703            Self::Script(e) => e.autofocus.replace(val),
78704            Self::Del(e) => e.autofocus.replace(val),
78705            Self::Ins(e) => e.autofocus.replace(val),
78706            Self::Caption(e) => e.autofocus.replace(val),
78707            Self::Col(e) => e.autofocus.replace(val),
78708            Self::Colgroup(e) => e.autofocus.replace(val),
78709            Self::Table(e) => e.autofocus.replace(val),
78710            Self::Tbody(e) => e.autofocus.replace(val),
78711            Self::Td(e) => e.autofocus.replace(val),
78712            Self::Tfoot(e) => e.autofocus.replace(val),
78713            Self::Th(e) => e.autofocus.replace(val),
78714            Self::Thead(e) => e.autofocus.replace(val),
78715            Self::Tr(e) => e.autofocus.replace(val),
78716            Self::Button(e) => e.autofocus.replace(val),
78717            Self::Datalist(e) => e.autofocus.replace(val),
78718            Self::Fieldset(e) => e.autofocus.replace(val),
78719            Self::Form(e) => e.autofocus.replace(val),
78720            Self::Input(e) => e.autofocus.replace(val),
78721            Self::Label(e) => e.autofocus.replace(val),
78722            Self::Legend(e) => e.autofocus.replace(val),
78723            Self::Meter(e) => e.autofocus.replace(val),
78724            Self::Optgroup(e) => e.autofocus.replace(val),
78725            Self::Option(e) => e.autofocus.replace(val),
78726            Self::Output(e) => e.autofocus.replace(val),
78727            Self::Progress(e) => e.autofocus.replace(val),
78728            Self::Select(e) => e.autofocus.replace(val),
78729            Self::Textarea(e) => e.autofocus.replace(val),
78730            Self::Details(e) => e.autofocus.replace(val),
78731            Self::Dialog(e) => e.autofocus.replace(val),
78732            Self::Summary(e) => e.autofocus.replace(val),
78733            Self::Slot(e) => e.autofocus.replace(val),
78734            Self::Template(e) => e.autofocus.replace(val),
78735            Self::Acronym(e) => e.autofocus.replace(val),
78736            Self::Applet(e) => e.autofocus.replace(val),
78737            Self::Bgsound(e) => e.autofocus.replace(val),
78738            Self::Big(e) => e.autofocus.replace(val),
78739            Self::Blink(e) => e.autofocus.replace(val),
78740            Self::Center(e) => e.autofocus.replace(val),
78741            Self::Dir(e) => e.autofocus.replace(val),
78742            Self::Font(e) => e.autofocus.replace(val),
78743            Self::Frame(e) => e.autofocus.replace(val),
78744            Self::Frameset(e) => e.autofocus.replace(val),
78745            Self::Image(e) => e.autofocus.replace(val),
78746            Self::Keygen(e) => e.autofocus.replace(val),
78747            Self::Marquee(e) => e.autofocus.replace(val),
78748            Self::Menuitem(e) => e.autofocus.replace(val),
78749            Self::Nobr(e) => e.autofocus.replace(val),
78750            Self::Noembed(e) => e.autofocus.replace(val),
78751            Self::Noframes(e) => e.autofocus.replace(val),
78752            Self::Param(e) => e.autofocus.replace(val),
78753            Self::Plaintext(e) => e.autofocus.replace(val),
78754            Self::Rb(e) => e.autofocus.replace(val),
78755            Self::Rtc(e) => e.autofocus.replace(val),
78756            Self::Spacer(e) => e.autofocus.replace(val),
78757            Self::Strike(e) => e.autofocus.replace(val),
78758            Self::Tt(e) => e.autofocus.replace(val),
78759            Self::Xmp(e) => e.autofocus.replace(val),
78760            Self::H1(e) => e.autofocus.replace(val),
78761            Self::H2(e) => e.autofocus.replace(val),
78762            Self::H3(e) => e.autofocus.replace(val),
78763            Self::H4(e) => e.autofocus.replace(val),
78764            Self::H5(e) => e.autofocus.replace(val),
78765            Self::H6(e) => e.autofocus.replace(val),
78766            Self::Unknown(e) => e.autofocus.replace(val),
78767        };
78768    }
78769
78770    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
78771    ///   
78772
78773    pub fn set_class(&mut self, val: AttributeValue<'life>) {
78774        match self {
78775            Self::Html(e) => e.class.replace(val),
78776            Self::Base(e) => e.class.replace(val),
78777            Self::Head(e) => e.class.replace(val),
78778            Self::Link(e) => e.class.replace(val),
78779            Self::Meta(e) => e.class.replace(val),
78780            Self::Style(e) => e.class.replace(val),
78781            Self::Title(e) => e.class.replace(val),
78782            Self::Body(e) => e.class.replace(val),
78783            Self::Address(e) => e.class.replace(val),
78784            Self::Article(e) => e.class.replace(val),
78785            Self::Aside(e) => e.class.replace(val),
78786            Self::Footer(e) => e.class.replace(val),
78787            Self::Header(e) => e.class.replace(val),
78788            Self::Hgroup(e) => e.class.replace(val),
78789            Self::Main(e) => e.class.replace(val),
78790            Self::Nav(e) => e.class.replace(val),
78791            Self::Section(e) => e.class.replace(val),
78792            Self::Blockquote(e) => e.class.replace(val),
78793            Self::Dd(e) => e.class.replace(val),
78794            Self::Div(e) => e.class.replace(val),
78795            Self::Dl(e) => e.class.replace(val),
78796            Self::Dt(e) => e.class.replace(val),
78797            Self::Figcaption(e) => e.class.replace(val),
78798            Self::Figure(e) => e.class.replace(val),
78799            Self::Hr(e) => e.class.replace(val),
78800            Self::Li(e) => e.class.replace(val),
78801            Self::Menu(e) => e.class.replace(val),
78802            Self::Ol(e) => e.class.replace(val),
78803            Self::P(e) => e.class.replace(val),
78804            Self::Pre(e) => e.class.replace(val),
78805            Self::Ul(e) => e.class.replace(val),
78806            Self::A(e) => e.class.replace(val),
78807            Self::Abbr(e) => e.class.replace(val),
78808            Self::B(e) => e.class.replace(val),
78809            Self::Bdi(e) => e.class.replace(val),
78810            Self::Bdo(e) => e.class.replace(val),
78811            Self::Br(e) => e.class.replace(val),
78812            Self::Cite(e) => e.class.replace(val),
78813            Self::Code(e) => e.class.replace(val),
78814            Self::Data(e) => e.class.replace(val),
78815            Self::Dfn(e) => e.class.replace(val),
78816            Self::Em(e) => e.class.replace(val),
78817            Self::I(e) => e.class.replace(val),
78818            Self::Kbd(e) => e.class.replace(val),
78819            Self::Mark(e) => e.class.replace(val),
78820            Self::Q(e) => e.class.replace(val),
78821            Self::Rp(e) => e.class.replace(val),
78822            Self::Rt(e) => e.class.replace(val),
78823            Self::Ruby(e) => e.class.replace(val),
78824            Self::S(e) => e.class.replace(val),
78825            Self::Samp(e) => e.class.replace(val),
78826            Self::Small(e) => e.class.replace(val),
78827            Self::Span(e) => e.class.replace(val),
78828            Self::Strong(e) => e.class.replace(val),
78829            Self::Sub(e) => e.class.replace(val),
78830            Self::Sup(e) => e.class.replace(val),
78831            Self::Time(e) => e.class.replace(val),
78832            Self::U(e) => e.class.replace(val),
78833            Self::Var(e) => e.class.replace(val),
78834            Self::Wbr(e) => e.class.replace(val),
78835            Self::Area(e) => e.class.replace(val),
78836            Self::Audio(e) => e.class.replace(val),
78837            Self::Img(e) => e.class.replace(val),
78838            Self::Map(e) => e.class.replace(val),
78839            Self::Track(e) => e.class.replace(val),
78840            Self::Video(e) => e.class.replace(val),
78841            Self::Embed(e) => e.class.replace(val),
78842            Self::Iframe(e) => e.class.replace(val),
78843            Self::Object(e) => e.class.replace(val),
78844            Self::Picture(e) => e.class.replace(val),
78845            Self::Portal(e) => e.class.replace(val),
78846            Self::Source(e) => e.class.replace(val),
78847            Self::Canvas(e) => e.class.replace(val),
78848            Self::Noscript(e) => e.class.replace(val),
78849            Self::Script(e) => e.class.replace(val),
78850            Self::Del(e) => e.class.replace(val),
78851            Self::Ins(e) => e.class.replace(val),
78852            Self::Caption(e) => e.class.replace(val),
78853            Self::Col(e) => e.class.replace(val),
78854            Self::Colgroup(e) => e.class.replace(val),
78855            Self::Table(e) => e.class.replace(val),
78856            Self::Tbody(e) => e.class.replace(val),
78857            Self::Td(e) => e.class.replace(val),
78858            Self::Tfoot(e) => e.class.replace(val),
78859            Self::Th(e) => e.class.replace(val),
78860            Self::Thead(e) => e.class.replace(val),
78861            Self::Tr(e) => e.class.replace(val),
78862            Self::Button(e) => e.class.replace(val),
78863            Self::Datalist(e) => e.class.replace(val),
78864            Self::Fieldset(e) => e.class.replace(val),
78865            Self::Form(e) => e.class.replace(val),
78866            Self::Input(e) => e.class.replace(val),
78867            Self::Label(e) => e.class.replace(val),
78868            Self::Legend(e) => e.class.replace(val),
78869            Self::Meter(e) => e.class.replace(val),
78870            Self::Optgroup(e) => e.class.replace(val),
78871            Self::Option(e) => e.class.replace(val),
78872            Self::Output(e) => e.class.replace(val),
78873            Self::Progress(e) => e.class.replace(val),
78874            Self::Select(e) => e.class.replace(val),
78875            Self::Textarea(e) => e.class.replace(val),
78876            Self::Details(e) => e.class.replace(val),
78877            Self::Dialog(e) => e.class.replace(val),
78878            Self::Summary(e) => e.class.replace(val),
78879            Self::Slot(e) => e.class.replace(val),
78880            Self::Template(e) => e.class.replace(val),
78881            Self::Acronym(e) => e.class.replace(val),
78882            Self::Applet(e) => e.class.replace(val),
78883            Self::Bgsound(e) => e.class.replace(val),
78884            Self::Big(e) => e.class.replace(val),
78885            Self::Blink(e) => e.class.replace(val),
78886            Self::Center(e) => e.class.replace(val),
78887            Self::Dir(e) => e.class.replace(val),
78888            Self::Font(e) => e.class.replace(val),
78889            Self::Frame(e) => e.class.replace(val),
78890            Self::Frameset(e) => e.class.replace(val),
78891            Self::Image(e) => e.class.replace(val),
78892            Self::Keygen(e) => e.class.replace(val),
78893            Self::Marquee(e) => e.class.replace(val),
78894            Self::Menuitem(e) => e.class.replace(val),
78895            Self::Nobr(e) => e.class.replace(val),
78896            Self::Noembed(e) => e.class.replace(val),
78897            Self::Noframes(e) => e.class.replace(val),
78898            Self::Param(e) => e.class.replace(val),
78899            Self::Plaintext(e) => e.class.replace(val),
78900            Self::Rb(e) => e.class.replace(val),
78901            Self::Rtc(e) => e.class.replace(val),
78902            Self::Spacer(e) => e.class.replace(val),
78903            Self::Strike(e) => e.class.replace(val),
78904            Self::Tt(e) => e.class.replace(val),
78905            Self::Xmp(e) => e.class.replace(val),
78906            Self::H1(e) => e.class.replace(val),
78907            Self::H2(e) => e.class.replace(val),
78908            Self::H3(e) => e.class.replace(val),
78909            Self::H4(e) => e.class.replace(val),
78910            Self::H5(e) => e.class.replace(val),
78911            Self::H6(e) => e.class.replace(val),
78912            Self::Unknown(e) => e.class.replace(val),
78913        };
78914    }
78915
78916    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
78917    ///     <ul>
78918    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
78919    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
78920    ///     </ul>
78921    ///   
78922
78923    pub fn set_contenteditable(&mut self, val: AttributeValue<'life>) {
78924        match self {
78925            Self::Html(e) => e.contenteditable.replace(val),
78926            Self::Base(e) => e.contenteditable.replace(val),
78927            Self::Head(e) => e.contenteditable.replace(val),
78928            Self::Link(e) => e.contenteditable.replace(val),
78929            Self::Meta(e) => e.contenteditable.replace(val),
78930            Self::Style(e) => e.contenteditable.replace(val),
78931            Self::Title(e) => e.contenteditable.replace(val),
78932            Self::Body(e) => e.contenteditable.replace(val),
78933            Self::Address(e) => e.contenteditable.replace(val),
78934            Self::Article(e) => e.contenteditable.replace(val),
78935            Self::Aside(e) => e.contenteditable.replace(val),
78936            Self::Footer(e) => e.contenteditable.replace(val),
78937            Self::Header(e) => e.contenteditable.replace(val),
78938            Self::Hgroup(e) => e.contenteditable.replace(val),
78939            Self::Main(e) => e.contenteditable.replace(val),
78940            Self::Nav(e) => e.contenteditable.replace(val),
78941            Self::Section(e) => e.contenteditable.replace(val),
78942            Self::Blockquote(e) => e.contenteditable.replace(val),
78943            Self::Dd(e) => e.contenteditable.replace(val),
78944            Self::Div(e) => e.contenteditable.replace(val),
78945            Self::Dl(e) => e.contenteditable.replace(val),
78946            Self::Dt(e) => e.contenteditable.replace(val),
78947            Self::Figcaption(e) => e.contenteditable.replace(val),
78948            Self::Figure(e) => e.contenteditable.replace(val),
78949            Self::Hr(e) => e.contenteditable.replace(val),
78950            Self::Li(e) => e.contenteditable.replace(val),
78951            Self::Menu(e) => e.contenteditable.replace(val),
78952            Self::Ol(e) => e.contenteditable.replace(val),
78953            Self::P(e) => e.contenteditable.replace(val),
78954            Self::Pre(e) => e.contenteditable.replace(val),
78955            Self::Ul(e) => e.contenteditable.replace(val),
78956            Self::A(e) => e.contenteditable.replace(val),
78957            Self::Abbr(e) => e.contenteditable.replace(val),
78958            Self::B(e) => e.contenteditable.replace(val),
78959            Self::Bdi(e) => e.contenteditable.replace(val),
78960            Self::Bdo(e) => e.contenteditable.replace(val),
78961            Self::Br(e) => e.contenteditable.replace(val),
78962            Self::Cite(e) => e.contenteditable.replace(val),
78963            Self::Code(e) => e.contenteditable.replace(val),
78964            Self::Data(e) => e.contenteditable.replace(val),
78965            Self::Dfn(e) => e.contenteditable.replace(val),
78966            Self::Em(e) => e.contenteditable.replace(val),
78967            Self::I(e) => e.contenteditable.replace(val),
78968            Self::Kbd(e) => e.contenteditable.replace(val),
78969            Self::Mark(e) => e.contenteditable.replace(val),
78970            Self::Q(e) => e.contenteditable.replace(val),
78971            Self::Rp(e) => e.contenteditable.replace(val),
78972            Self::Rt(e) => e.contenteditable.replace(val),
78973            Self::Ruby(e) => e.contenteditable.replace(val),
78974            Self::S(e) => e.contenteditable.replace(val),
78975            Self::Samp(e) => e.contenteditable.replace(val),
78976            Self::Small(e) => e.contenteditable.replace(val),
78977            Self::Span(e) => e.contenteditable.replace(val),
78978            Self::Strong(e) => e.contenteditable.replace(val),
78979            Self::Sub(e) => e.contenteditable.replace(val),
78980            Self::Sup(e) => e.contenteditable.replace(val),
78981            Self::Time(e) => e.contenteditable.replace(val),
78982            Self::U(e) => e.contenteditable.replace(val),
78983            Self::Var(e) => e.contenteditable.replace(val),
78984            Self::Wbr(e) => e.contenteditable.replace(val),
78985            Self::Area(e) => e.contenteditable.replace(val),
78986            Self::Audio(e) => e.contenteditable.replace(val),
78987            Self::Img(e) => e.contenteditable.replace(val),
78988            Self::Map(e) => e.contenteditable.replace(val),
78989            Self::Track(e) => e.contenteditable.replace(val),
78990            Self::Video(e) => e.contenteditable.replace(val),
78991            Self::Embed(e) => e.contenteditable.replace(val),
78992            Self::Iframe(e) => e.contenteditable.replace(val),
78993            Self::Object(e) => e.contenteditable.replace(val),
78994            Self::Picture(e) => e.contenteditable.replace(val),
78995            Self::Portal(e) => e.contenteditable.replace(val),
78996            Self::Source(e) => e.contenteditable.replace(val),
78997            Self::Canvas(e) => e.contenteditable.replace(val),
78998            Self::Noscript(e) => e.contenteditable.replace(val),
78999            Self::Script(e) => e.contenteditable.replace(val),
79000            Self::Del(e) => e.contenteditable.replace(val),
79001            Self::Ins(e) => e.contenteditable.replace(val),
79002            Self::Caption(e) => e.contenteditable.replace(val),
79003            Self::Col(e) => e.contenteditable.replace(val),
79004            Self::Colgroup(e) => e.contenteditable.replace(val),
79005            Self::Table(e) => e.contenteditable.replace(val),
79006            Self::Tbody(e) => e.contenteditable.replace(val),
79007            Self::Td(e) => e.contenteditable.replace(val),
79008            Self::Tfoot(e) => e.contenteditable.replace(val),
79009            Self::Th(e) => e.contenteditable.replace(val),
79010            Self::Thead(e) => e.contenteditable.replace(val),
79011            Self::Tr(e) => e.contenteditable.replace(val),
79012            Self::Button(e) => e.contenteditable.replace(val),
79013            Self::Datalist(e) => e.contenteditable.replace(val),
79014            Self::Fieldset(e) => e.contenteditable.replace(val),
79015            Self::Form(e) => e.contenteditable.replace(val),
79016            Self::Input(e) => e.contenteditable.replace(val),
79017            Self::Label(e) => e.contenteditable.replace(val),
79018            Self::Legend(e) => e.contenteditable.replace(val),
79019            Self::Meter(e) => e.contenteditable.replace(val),
79020            Self::Optgroup(e) => e.contenteditable.replace(val),
79021            Self::Option(e) => e.contenteditable.replace(val),
79022            Self::Output(e) => e.contenteditable.replace(val),
79023            Self::Progress(e) => e.contenteditable.replace(val),
79024            Self::Select(e) => e.contenteditable.replace(val),
79025            Self::Textarea(e) => e.contenteditable.replace(val),
79026            Self::Details(e) => e.contenteditable.replace(val),
79027            Self::Dialog(e) => e.contenteditable.replace(val),
79028            Self::Summary(e) => e.contenteditable.replace(val),
79029            Self::Slot(e) => e.contenteditable.replace(val),
79030            Self::Template(e) => e.contenteditable.replace(val),
79031            Self::Acronym(e) => e.contenteditable.replace(val),
79032            Self::Applet(e) => e.contenteditable.replace(val),
79033            Self::Bgsound(e) => e.contenteditable.replace(val),
79034            Self::Big(e) => e.contenteditable.replace(val),
79035            Self::Blink(e) => e.contenteditable.replace(val),
79036            Self::Center(e) => e.contenteditable.replace(val),
79037            Self::Dir(e) => e.contenteditable.replace(val),
79038            Self::Font(e) => e.contenteditable.replace(val),
79039            Self::Frame(e) => e.contenteditable.replace(val),
79040            Self::Frameset(e) => e.contenteditable.replace(val),
79041            Self::Image(e) => e.contenteditable.replace(val),
79042            Self::Keygen(e) => e.contenteditable.replace(val),
79043            Self::Marquee(e) => e.contenteditable.replace(val),
79044            Self::Menuitem(e) => e.contenteditable.replace(val),
79045            Self::Nobr(e) => e.contenteditable.replace(val),
79046            Self::Noembed(e) => e.contenteditable.replace(val),
79047            Self::Noframes(e) => e.contenteditable.replace(val),
79048            Self::Param(e) => e.contenteditable.replace(val),
79049            Self::Plaintext(e) => e.contenteditable.replace(val),
79050            Self::Rb(e) => e.contenteditable.replace(val),
79051            Self::Rtc(e) => e.contenteditable.replace(val),
79052            Self::Spacer(e) => e.contenteditable.replace(val),
79053            Self::Strike(e) => e.contenteditable.replace(val),
79054            Self::Tt(e) => e.contenteditable.replace(val),
79055            Self::Xmp(e) => e.contenteditable.replace(val),
79056            Self::H1(e) => e.contenteditable.replace(val),
79057            Self::H2(e) => e.contenteditable.replace(val),
79058            Self::H3(e) => e.contenteditable.replace(val),
79059            Self::H4(e) => e.contenteditable.replace(val),
79060            Self::H5(e) => e.contenteditable.replace(val),
79061            Self::H6(e) => e.contenteditable.replace(val),
79062            Self::Unknown(e) => e.contenteditable.replace(val),
79063        };
79064    }
79065
79066    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
79067    ///   
79068
79069    pub fn set_contextmenu(&mut self, val: AttributeValue<'life>) {
79070        match self {
79071            Self::Html(e) => e.contextmenu.replace(val),
79072            Self::Base(e) => e.contextmenu.replace(val),
79073            Self::Head(e) => e.contextmenu.replace(val),
79074            Self::Link(e) => e.contextmenu.replace(val),
79075            Self::Meta(e) => e.contextmenu.replace(val),
79076            Self::Style(e) => e.contextmenu.replace(val),
79077            Self::Title(e) => e.contextmenu.replace(val),
79078            Self::Body(e) => e.contextmenu.replace(val),
79079            Self::Address(e) => e.contextmenu.replace(val),
79080            Self::Article(e) => e.contextmenu.replace(val),
79081            Self::Aside(e) => e.contextmenu.replace(val),
79082            Self::Footer(e) => e.contextmenu.replace(val),
79083            Self::Header(e) => e.contextmenu.replace(val),
79084            Self::Hgroup(e) => e.contextmenu.replace(val),
79085            Self::Main(e) => e.contextmenu.replace(val),
79086            Self::Nav(e) => e.contextmenu.replace(val),
79087            Self::Section(e) => e.contextmenu.replace(val),
79088            Self::Blockquote(e) => e.contextmenu.replace(val),
79089            Self::Dd(e) => e.contextmenu.replace(val),
79090            Self::Div(e) => e.contextmenu.replace(val),
79091            Self::Dl(e) => e.contextmenu.replace(val),
79092            Self::Dt(e) => e.contextmenu.replace(val),
79093            Self::Figcaption(e) => e.contextmenu.replace(val),
79094            Self::Figure(e) => e.contextmenu.replace(val),
79095            Self::Hr(e) => e.contextmenu.replace(val),
79096            Self::Li(e) => e.contextmenu.replace(val),
79097            Self::Menu(e) => e.contextmenu.replace(val),
79098            Self::Ol(e) => e.contextmenu.replace(val),
79099            Self::P(e) => e.contextmenu.replace(val),
79100            Self::Pre(e) => e.contextmenu.replace(val),
79101            Self::Ul(e) => e.contextmenu.replace(val),
79102            Self::A(e) => e.contextmenu.replace(val),
79103            Self::Abbr(e) => e.contextmenu.replace(val),
79104            Self::B(e) => e.contextmenu.replace(val),
79105            Self::Bdi(e) => e.contextmenu.replace(val),
79106            Self::Bdo(e) => e.contextmenu.replace(val),
79107            Self::Br(e) => e.contextmenu.replace(val),
79108            Self::Cite(e) => e.contextmenu.replace(val),
79109            Self::Code(e) => e.contextmenu.replace(val),
79110            Self::Data(e) => e.contextmenu.replace(val),
79111            Self::Dfn(e) => e.contextmenu.replace(val),
79112            Self::Em(e) => e.contextmenu.replace(val),
79113            Self::I(e) => e.contextmenu.replace(val),
79114            Self::Kbd(e) => e.contextmenu.replace(val),
79115            Self::Mark(e) => e.contextmenu.replace(val),
79116            Self::Q(e) => e.contextmenu.replace(val),
79117            Self::Rp(e) => e.contextmenu.replace(val),
79118            Self::Rt(e) => e.contextmenu.replace(val),
79119            Self::Ruby(e) => e.contextmenu.replace(val),
79120            Self::S(e) => e.contextmenu.replace(val),
79121            Self::Samp(e) => e.contextmenu.replace(val),
79122            Self::Small(e) => e.contextmenu.replace(val),
79123            Self::Span(e) => e.contextmenu.replace(val),
79124            Self::Strong(e) => e.contextmenu.replace(val),
79125            Self::Sub(e) => e.contextmenu.replace(val),
79126            Self::Sup(e) => e.contextmenu.replace(val),
79127            Self::Time(e) => e.contextmenu.replace(val),
79128            Self::U(e) => e.contextmenu.replace(val),
79129            Self::Var(e) => e.contextmenu.replace(val),
79130            Self::Wbr(e) => e.contextmenu.replace(val),
79131            Self::Area(e) => e.contextmenu.replace(val),
79132            Self::Audio(e) => e.contextmenu.replace(val),
79133            Self::Img(e) => e.contextmenu.replace(val),
79134            Self::Map(e) => e.contextmenu.replace(val),
79135            Self::Track(e) => e.contextmenu.replace(val),
79136            Self::Video(e) => e.contextmenu.replace(val),
79137            Self::Embed(e) => e.contextmenu.replace(val),
79138            Self::Iframe(e) => e.contextmenu.replace(val),
79139            Self::Object(e) => e.contextmenu.replace(val),
79140            Self::Picture(e) => e.contextmenu.replace(val),
79141            Self::Portal(e) => e.contextmenu.replace(val),
79142            Self::Source(e) => e.contextmenu.replace(val),
79143            Self::Canvas(e) => e.contextmenu.replace(val),
79144            Self::Noscript(e) => e.contextmenu.replace(val),
79145            Self::Script(e) => e.contextmenu.replace(val),
79146            Self::Del(e) => e.contextmenu.replace(val),
79147            Self::Ins(e) => e.contextmenu.replace(val),
79148            Self::Caption(e) => e.contextmenu.replace(val),
79149            Self::Col(e) => e.contextmenu.replace(val),
79150            Self::Colgroup(e) => e.contextmenu.replace(val),
79151            Self::Table(e) => e.contextmenu.replace(val),
79152            Self::Tbody(e) => e.contextmenu.replace(val),
79153            Self::Td(e) => e.contextmenu.replace(val),
79154            Self::Tfoot(e) => e.contextmenu.replace(val),
79155            Self::Th(e) => e.contextmenu.replace(val),
79156            Self::Thead(e) => e.contextmenu.replace(val),
79157            Self::Tr(e) => e.contextmenu.replace(val),
79158            Self::Button(e) => e.contextmenu.replace(val),
79159            Self::Datalist(e) => e.contextmenu.replace(val),
79160            Self::Fieldset(e) => e.contextmenu.replace(val),
79161            Self::Form(e) => e.contextmenu.replace(val),
79162            Self::Input(e) => e.contextmenu.replace(val),
79163            Self::Label(e) => e.contextmenu.replace(val),
79164            Self::Legend(e) => e.contextmenu.replace(val),
79165            Self::Meter(e) => e.contextmenu.replace(val),
79166            Self::Optgroup(e) => e.contextmenu.replace(val),
79167            Self::Option(e) => e.contextmenu.replace(val),
79168            Self::Output(e) => e.contextmenu.replace(val),
79169            Self::Progress(e) => e.contextmenu.replace(val),
79170            Self::Select(e) => e.contextmenu.replace(val),
79171            Self::Textarea(e) => e.contextmenu.replace(val),
79172            Self::Details(e) => e.contextmenu.replace(val),
79173            Self::Dialog(e) => e.contextmenu.replace(val),
79174            Self::Summary(e) => e.contextmenu.replace(val),
79175            Self::Slot(e) => e.contextmenu.replace(val),
79176            Self::Template(e) => e.contextmenu.replace(val),
79177            Self::Acronym(e) => e.contextmenu.replace(val),
79178            Self::Applet(e) => e.contextmenu.replace(val),
79179            Self::Bgsound(e) => e.contextmenu.replace(val),
79180            Self::Big(e) => e.contextmenu.replace(val),
79181            Self::Blink(e) => e.contextmenu.replace(val),
79182            Self::Center(e) => e.contextmenu.replace(val),
79183            Self::Dir(e) => e.contextmenu.replace(val),
79184            Self::Font(e) => e.contextmenu.replace(val),
79185            Self::Frame(e) => e.contextmenu.replace(val),
79186            Self::Frameset(e) => e.contextmenu.replace(val),
79187            Self::Image(e) => e.contextmenu.replace(val),
79188            Self::Keygen(e) => e.contextmenu.replace(val),
79189            Self::Marquee(e) => e.contextmenu.replace(val),
79190            Self::Menuitem(e) => e.contextmenu.replace(val),
79191            Self::Nobr(e) => e.contextmenu.replace(val),
79192            Self::Noembed(e) => e.contextmenu.replace(val),
79193            Self::Noframes(e) => e.contextmenu.replace(val),
79194            Self::Param(e) => e.contextmenu.replace(val),
79195            Self::Plaintext(e) => e.contextmenu.replace(val),
79196            Self::Rb(e) => e.contextmenu.replace(val),
79197            Self::Rtc(e) => e.contextmenu.replace(val),
79198            Self::Spacer(e) => e.contextmenu.replace(val),
79199            Self::Strike(e) => e.contextmenu.replace(val),
79200            Self::Tt(e) => e.contextmenu.replace(val),
79201            Self::Xmp(e) => e.contextmenu.replace(val),
79202            Self::H1(e) => e.contextmenu.replace(val),
79203            Self::H2(e) => e.contextmenu.replace(val),
79204            Self::H3(e) => e.contextmenu.replace(val),
79205            Self::H4(e) => e.contextmenu.replace(val),
79206            Self::H5(e) => e.contextmenu.replace(val),
79207            Self::H6(e) => e.contextmenu.replace(val),
79208            Self::Unknown(e) => e.contextmenu.replace(val),
79209        };
79210    }
79211
79212    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
79213    ///     <ul>
79214    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
79215    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
79216    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
79217    ///     </ul>
79218    ///   
79219
79220    pub fn set_dir(&mut self, val: AttributeValue<'life>) {
79221        match self {
79222            Self::Html(e) => e.dir.replace(val),
79223            Self::Base(e) => e.dir.replace(val),
79224            Self::Head(e) => e.dir.replace(val),
79225            Self::Link(e) => e.dir.replace(val),
79226            Self::Meta(e) => e.dir.replace(val),
79227            Self::Style(e) => e.dir.replace(val),
79228            Self::Title(e) => e.dir.replace(val),
79229            Self::Body(e) => e.dir.replace(val),
79230            Self::Address(e) => e.dir.replace(val),
79231            Self::Article(e) => e.dir.replace(val),
79232            Self::Aside(e) => e.dir.replace(val),
79233            Self::Footer(e) => e.dir.replace(val),
79234            Self::Header(e) => e.dir.replace(val),
79235            Self::Hgroup(e) => e.dir.replace(val),
79236            Self::Main(e) => e.dir.replace(val),
79237            Self::Nav(e) => e.dir.replace(val),
79238            Self::Section(e) => e.dir.replace(val),
79239            Self::Blockquote(e) => e.dir.replace(val),
79240            Self::Dd(e) => e.dir.replace(val),
79241            Self::Div(e) => e.dir.replace(val),
79242            Self::Dl(e) => e.dir.replace(val),
79243            Self::Dt(e) => e.dir.replace(val),
79244            Self::Figcaption(e) => e.dir.replace(val),
79245            Self::Figure(e) => e.dir.replace(val),
79246            Self::Hr(e) => e.dir.replace(val),
79247            Self::Li(e) => e.dir.replace(val),
79248            Self::Menu(e) => e.dir.replace(val),
79249            Self::Ol(e) => e.dir.replace(val),
79250            Self::P(e) => e.dir.replace(val),
79251            Self::Pre(e) => e.dir.replace(val),
79252            Self::Ul(e) => e.dir.replace(val),
79253            Self::A(e) => e.dir.replace(val),
79254            Self::Abbr(e) => e.dir.replace(val),
79255            Self::B(e) => e.dir.replace(val),
79256            Self::Bdi(e) => e.dir.replace(val),
79257            Self::Bdo(e) => e.dir.replace(val),
79258            Self::Br(e) => e.dir.replace(val),
79259            Self::Cite(e) => e.dir.replace(val),
79260            Self::Code(e) => e.dir.replace(val),
79261            Self::Data(e) => e.dir.replace(val),
79262            Self::Dfn(e) => e.dir.replace(val),
79263            Self::Em(e) => e.dir.replace(val),
79264            Self::I(e) => e.dir.replace(val),
79265            Self::Kbd(e) => e.dir.replace(val),
79266            Self::Mark(e) => e.dir.replace(val),
79267            Self::Q(e) => e.dir.replace(val),
79268            Self::Rp(e) => e.dir.replace(val),
79269            Self::Rt(e) => e.dir.replace(val),
79270            Self::Ruby(e) => e.dir.replace(val),
79271            Self::S(e) => e.dir.replace(val),
79272            Self::Samp(e) => e.dir.replace(val),
79273            Self::Small(e) => e.dir.replace(val),
79274            Self::Span(e) => e.dir.replace(val),
79275            Self::Strong(e) => e.dir.replace(val),
79276            Self::Sub(e) => e.dir.replace(val),
79277            Self::Sup(e) => e.dir.replace(val),
79278            Self::Time(e) => e.dir.replace(val),
79279            Self::U(e) => e.dir.replace(val),
79280            Self::Var(e) => e.dir.replace(val),
79281            Self::Wbr(e) => e.dir.replace(val),
79282            Self::Area(e) => e.dir.replace(val),
79283            Self::Audio(e) => e.dir.replace(val),
79284            Self::Img(e) => e.dir.replace(val),
79285            Self::Map(e) => e.dir.replace(val),
79286            Self::Track(e) => e.dir.replace(val),
79287            Self::Video(e) => e.dir.replace(val),
79288            Self::Embed(e) => e.dir.replace(val),
79289            Self::Iframe(e) => e.dir.replace(val),
79290            Self::Object(e) => e.dir.replace(val),
79291            Self::Picture(e) => e.dir.replace(val),
79292            Self::Portal(e) => e.dir.replace(val),
79293            Self::Source(e) => e.dir.replace(val),
79294            Self::Canvas(e) => e.dir.replace(val),
79295            Self::Noscript(e) => e.dir.replace(val),
79296            Self::Script(e) => e.dir.replace(val),
79297            Self::Del(e) => e.dir.replace(val),
79298            Self::Ins(e) => e.dir.replace(val),
79299            Self::Caption(e) => e.dir.replace(val),
79300            Self::Col(e) => e.dir.replace(val),
79301            Self::Colgroup(e) => e.dir.replace(val),
79302            Self::Table(e) => e.dir.replace(val),
79303            Self::Tbody(e) => e.dir.replace(val),
79304            Self::Td(e) => e.dir.replace(val),
79305            Self::Tfoot(e) => e.dir.replace(val),
79306            Self::Th(e) => e.dir.replace(val),
79307            Self::Thead(e) => e.dir.replace(val),
79308            Self::Tr(e) => e.dir.replace(val),
79309            Self::Button(e) => e.dir.replace(val),
79310            Self::Datalist(e) => e.dir.replace(val),
79311            Self::Fieldset(e) => e.dir.replace(val),
79312            Self::Form(e) => e.dir.replace(val),
79313            Self::Input(e) => e.dir.replace(val),
79314            Self::Label(e) => e.dir.replace(val),
79315            Self::Legend(e) => e.dir.replace(val),
79316            Self::Meter(e) => e.dir.replace(val),
79317            Self::Optgroup(e) => e.dir.replace(val),
79318            Self::Option(e) => e.dir.replace(val),
79319            Self::Output(e) => e.dir.replace(val),
79320            Self::Progress(e) => e.dir.replace(val),
79321            Self::Select(e) => e.dir.replace(val),
79322            Self::Textarea(e) => e.dir.replace(val),
79323            Self::Details(e) => e.dir.replace(val),
79324            Self::Dialog(e) => e.dir.replace(val),
79325            Self::Summary(e) => e.dir.replace(val),
79326            Self::Slot(e) => e.dir.replace(val),
79327            Self::Template(e) => e.dir.replace(val),
79328            Self::Acronym(e) => e.dir.replace(val),
79329            Self::Applet(e) => e.dir.replace(val),
79330            Self::Bgsound(e) => e.dir.replace(val),
79331            Self::Big(e) => e.dir.replace(val),
79332            Self::Blink(e) => e.dir.replace(val),
79333            Self::Center(e) => e.dir.replace(val),
79334            Self::Dir(e) => e.dir.replace(val),
79335            Self::Font(e) => e.dir.replace(val),
79336            Self::Frame(e) => e.dir.replace(val),
79337            Self::Frameset(e) => e.dir.replace(val),
79338            Self::Image(e) => e.dir.replace(val),
79339            Self::Keygen(e) => e.dir.replace(val),
79340            Self::Marquee(e) => e.dir.replace(val),
79341            Self::Menuitem(e) => e.dir.replace(val),
79342            Self::Nobr(e) => e.dir.replace(val),
79343            Self::Noembed(e) => e.dir.replace(val),
79344            Self::Noframes(e) => e.dir.replace(val),
79345            Self::Param(e) => e.dir.replace(val),
79346            Self::Plaintext(e) => e.dir.replace(val),
79347            Self::Rb(e) => e.dir.replace(val),
79348            Self::Rtc(e) => e.dir.replace(val),
79349            Self::Spacer(e) => e.dir.replace(val),
79350            Self::Strike(e) => e.dir.replace(val),
79351            Self::Tt(e) => e.dir.replace(val),
79352            Self::Xmp(e) => e.dir.replace(val),
79353            Self::H1(e) => e.dir.replace(val),
79354            Self::H2(e) => e.dir.replace(val),
79355            Self::H3(e) => e.dir.replace(val),
79356            Self::H4(e) => e.dir.replace(val),
79357            Self::H5(e) => e.dir.replace(val),
79358            Self::H6(e) => e.dir.replace(val),
79359            Self::Unknown(e) => e.dir.replace(val),
79360        };
79361    }
79362
79363    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
79364    ///     <ul>
79365    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
79366    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
79367    ///     </ul>
79368    ///   
79369
79370    pub fn set_draggable(&mut self, val: AttributeValue<'life>) {
79371        match self {
79372            Self::Html(e) => e.draggable.replace(val),
79373            Self::Base(e) => e.draggable.replace(val),
79374            Self::Head(e) => e.draggable.replace(val),
79375            Self::Link(e) => e.draggable.replace(val),
79376            Self::Meta(e) => e.draggable.replace(val),
79377            Self::Style(e) => e.draggable.replace(val),
79378            Self::Title(e) => e.draggable.replace(val),
79379            Self::Body(e) => e.draggable.replace(val),
79380            Self::Address(e) => e.draggable.replace(val),
79381            Self::Article(e) => e.draggable.replace(val),
79382            Self::Aside(e) => e.draggable.replace(val),
79383            Self::Footer(e) => e.draggable.replace(val),
79384            Self::Header(e) => e.draggable.replace(val),
79385            Self::Hgroup(e) => e.draggable.replace(val),
79386            Self::Main(e) => e.draggable.replace(val),
79387            Self::Nav(e) => e.draggable.replace(val),
79388            Self::Section(e) => e.draggable.replace(val),
79389            Self::Blockquote(e) => e.draggable.replace(val),
79390            Self::Dd(e) => e.draggable.replace(val),
79391            Self::Div(e) => e.draggable.replace(val),
79392            Self::Dl(e) => e.draggable.replace(val),
79393            Self::Dt(e) => e.draggable.replace(val),
79394            Self::Figcaption(e) => e.draggable.replace(val),
79395            Self::Figure(e) => e.draggable.replace(val),
79396            Self::Hr(e) => e.draggable.replace(val),
79397            Self::Li(e) => e.draggable.replace(val),
79398            Self::Menu(e) => e.draggable.replace(val),
79399            Self::Ol(e) => e.draggable.replace(val),
79400            Self::P(e) => e.draggable.replace(val),
79401            Self::Pre(e) => e.draggable.replace(val),
79402            Self::Ul(e) => e.draggable.replace(val),
79403            Self::A(e) => e.draggable.replace(val),
79404            Self::Abbr(e) => e.draggable.replace(val),
79405            Self::B(e) => e.draggable.replace(val),
79406            Self::Bdi(e) => e.draggable.replace(val),
79407            Self::Bdo(e) => e.draggable.replace(val),
79408            Self::Br(e) => e.draggable.replace(val),
79409            Self::Cite(e) => e.draggable.replace(val),
79410            Self::Code(e) => e.draggable.replace(val),
79411            Self::Data(e) => e.draggable.replace(val),
79412            Self::Dfn(e) => e.draggable.replace(val),
79413            Self::Em(e) => e.draggable.replace(val),
79414            Self::I(e) => e.draggable.replace(val),
79415            Self::Kbd(e) => e.draggable.replace(val),
79416            Self::Mark(e) => e.draggable.replace(val),
79417            Self::Q(e) => e.draggable.replace(val),
79418            Self::Rp(e) => e.draggable.replace(val),
79419            Self::Rt(e) => e.draggable.replace(val),
79420            Self::Ruby(e) => e.draggable.replace(val),
79421            Self::S(e) => e.draggable.replace(val),
79422            Self::Samp(e) => e.draggable.replace(val),
79423            Self::Small(e) => e.draggable.replace(val),
79424            Self::Span(e) => e.draggable.replace(val),
79425            Self::Strong(e) => e.draggable.replace(val),
79426            Self::Sub(e) => e.draggable.replace(val),
79427            Self::Sup(e) => e.draggable.replace(val),
79428            Self::Time(e) => e.draggable.replace(val),
79429            Self::U(e) => e.draggable.replace(val),
79430            Self::Var(e) => e.draggable.replace(val),
79431            Self::Wbr(e) => e.draggable.replace(val),
79432            Self::Area(e) => e.draggable.replace(val),
79433            Self::Audio(e) => e.draggable.replace(val),
79434            Self::Img(e) => e.draggable.replace(val),
79435            Self::Map(e) => e.draggable.replace(val),
79436            Self::Track(e) => e.draggable.replace(val),
79437            Self::Video(e) => e.draggable.replace(val),
79438            Self::Embed(e) => e.draggable.replace(val),
79439            Self::Iframe(e) => e.draggable.replace(val),
79440            Self::Object(e) => e.draggable.replace(val),
79441            Self::Picture(e) => e.draggable.replace(val),
79442            Self::Portal(e) => e.draggable.replace(val),
79443            Self::Source(e) => e.draggable.replace(val),
79444            Self::Canvas(e) => e.draggable.replace(val),
79445            Self::Noscript(e) => e.draggable.replace(val),
79446            Self::Script(e) => e.draggable.replace(val),
79447            Self::Del(e) => e.draggable.replace(val),
79448            Self::Ins(e) => e.draggable.replace(val),
79449            Self::Caption(e) => e.draggable.replace(val),
79450            Self::Col(e) => e.draggable.replace(val),
79451            Self::Colgroup(e) => e.draggable.replace(val),
79452            Self::Table(e) => e.draggable.replace(val),
79453            Self::Tbody(e) => e.draggable.replace(val),
79454            Self::Td(e) => e.draggable.replace(val),
79455            Self::Tfoot(e) => e.draggable.replace(val),
79456            Self::Th(e) => e.draggable.replace(val),
79457            Self::Thead(e) => e.draggable.replace(val),
79458            Self::Tr(e) => e.draggable.replace(val),
79459            Self::Button(e) => e.draggable.replace(val),
79460            Self::Datalist(e) => e.draggable.replace(val),
79461            Self::Fieldset(e) => e.draggable.replace(val),
79462            Self::Form(e) => e.draggable.replace(val),
79463            Self::Input(e) => e.draggable.replace(val),
79464            Self::Label(e) => e.draggable.replace(val),
79465            Self::Legend(e) => e.draggable.replace(val),
79466            Self::Meter(e) => e.draggable.replace(val),
79467            Self::Optgroup(e) => e.draggable.replace(val),
79468            Self::Option(e) => e.draggable.replace(val),
79469            Self::Output(e) => e.draggable.replace(val),
79470            Self::Progress(e) => e.draggable.replace(val),
79471            Self::Select(e) => e.draggable.replace(val),
79472            Self::Textarea(e) => e.draggable.replace(val),
79473            Self::Details(e) => e.draggable.replace(val),
79474            Self::Dialog(e) => e.draggable.replace(val),
79475            Self::Summary(e) => e.draggable.replace(val),
79476            Self::Slot(e) => e.draggable.replace(val),
79477            Self::Template(e) => e.draggable.replace(val),
79478            Self::Acronym(e) => e.draggable.replace(val),
79479            Self::Applet(e) => e.draggable.replace(val),
79480            Self::Bgsound(e) => e.draggable.replace(val),
79481            Self::Big(e) => e.draggable.replace(val),
79482            Self::Blink(e) => e.draggable.replace(val),
79483            Self::Center(e) => e.draggable.replace(val),
79484            Self::Dir(e) => e.draggable.replace(val),
79485            Self::Font(e) => e.draggable.replace(val),
79486            Self::Frame(e) => e.draggable.replace(val),
79487            Self::Frameset(e) => e.draggable.replace(val),
79488            Self::Image(e) => e.draggable.replace(val),
79489            Self::Keygen(e) => e.draggable.replace(val),
79490            Self::Marquee(e) => e.draggable.replace(val),
79491            Self::Menuitem(e) => e.draggable.replace(val),
79492            Self::Nobr(e) => e.draggable.replace(val),
79493            Self::Noembed(e) => e.draggable.replace(val),
79494            Self::Noframes(e) => e.draggable.replace(val),
79495            Self::Param(e) => e.draggable.replace(val),
79496            Self::Plaintext(e) => e.draggable.replace(val),
79497            Self::Rb(e) => e.draggable.replace(val),
79498            Self::Rtc(e) => e.draggable.replace(val),
79499            Self::Spacer(e) => e.draggable.replace(val),
79500            Self::Strike(e) => e.draggable.replace(val),
79501            Self::Tt(e) => e.draggable.replace(val),
79502            Self::Xmp(e) => e.draggable.replace(val),
79503            Self::H1(e) => e.draggable.replace(val),
79504            Self::H2(e) => e.draggable.replace(val),
79505            Self::H3(e) => e.draggable.replace(val),
79506            Self::H4(e) => e.draggable.replace(val),
79507            Self::H5(e) => e.draggable.replace(val),
79508            Self::H6(e) => e.draggable.replace(val),
79509            Self::Unknown(e) => e.draggable.replace(val),
79510        };
79511    }
79512
79513    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
79514    ///   
79515
79516    pub fn set_enterkeyhint(&mut self, val: AttributeValue<'life>) {
79517        match self {
79518            Self::Html(e) => e.enterkeyhint.replace(val),
79519            Self::Base(e) => e.enterkeyhint.replace(val),
79520            Self::Head(e) => e.enterkeyhint.replace(val),
79521            Self::Link(e) => e.enterkeyhint.replace(val),
79522            Self::Meta(e) => e.enterkeyhint.replace(val),
79523            Self::Style(e) => e.enterkeyhint.replace(val),
79524            Self::Title(e) => e.enterkeyhint.replace(val),
79525            Self::Body(e) => e.enterkeyhint.replace(val),
79526            Self::Address(e) => e.enterkeyhint.replace(val),
79527            Self::Article(e) => e.enterkeyhint.replace(val),
79528            Self::Aside(e) => e.enterkeyhint.replace(val),
79529            Self::Footer(e) => e.enterkeyhint.replace(val),
79530            Self::Header(e) => e.enterkeyhint.replace(val),
79531            Self::Hgroup(e) => e.enterkeyhint.replace(val),
79532            Self::Main(e) => e.enterkeyhint.replace(val),
79533            Self::Nav(e) => e.enterkeyhint.replace(val),
79534            Self::Section(e) => e.enterkeyhint.replace(val),
79535            Self::Blockquote(e) => e.enterkeyhint.replace(val),
79536            Self::Dd(e) => e.enterkeyhint.replace(val),
79537            Self::Div(e) => e.enterkeyhint.replace(val),
79538            Self::Dl(e) => e.enterkeyhint.replace(val),
79539            Self::Dt(e) => e.enterkeyhint.replace(val),
79540            Self::Figcaption(e) => e.enterkeyhint.replace(val),
79541            Self::Figure(e) => e.enterkeyhint.replace(val),
79542            Self::Hr(e) => e.enterkeyhint.replace(val),
79543            Self::Li(e) => e.enterkeyhint.replace(val),
79544            Self::Menu(e) => e.enterkeyhint.replace(val),
79545            Self::Ol(e) => e.enterkeyhint.replace(val),
79546            Self::P(e) => e.enterkeyhint.replace(val),
79547            Self::Pre(e) => e.enterkeyhint.replace(val),
79548            Self::Ul(e) => e.enterkeyhint.replace(val),
79549            Self::A(e) => e.enterkeyhint.replace(val),
79550            Self::Abbr(e) => e.enterkeyhint.replace(val),
79551            Self::B(e) => e.enterkeyhint.replace(val),
79552            Self::Bdi(e) => e.enterkeyhint.replace(val),
79553            Self::Bdo(e) => e.enterkeyhint.replace(val),
79554            Self::Br(e) => e.enterkeyhint.replace(val),
79555            Self::Cite(e) => e.enterkeyhint.replace(val),
79556            Self::Code(e) => e.enterkeyhint.replace(val),
79557            Self::Data(e) => e.enterkeyhint.replace(val),
79558            Self::Dfn(e) => e.enterkeyhint.replace(val),
79559            Self::Em(e) => e.enterkeyhint.replace(val),
79560            Self::I(e) => e.enterkeyhint.replace(val),
79561            Self::Kbd(e) => e.enterkeyhint.replace(val),
79562            Self::Mark(e) => e.enterkeyhint.replace(val),
79563            Self::Q(e) => e.enterkeyhint.replace(val),
79564            Self::Rp(e) => e.enterkeyhint.replace(val),
79565            Self::Rt(e) => e.enterkeyhint.replace(val),
79566            Self::Ruby(e) => e.enterkeyhint.replace(val),
79567            Self::S(e) => e.enterkeyhint.replace(val),
79568            Self::Samp(e) => e.enterkeyhint.replace(val),
79569            Self::Small(e) => e.enterkeyhint.replace(val),
79570            Self::Span(e) => e.enterkeyhint.replace(val),
79571            Self::Strong(e) => e.enterkeyhint.replace(val),
79572            Self::Sub(e) => e.enterkeyhint.replace(val),
79573            Self::Sup(e) => e.enterkeyhint.replace(val),
79574            Self::Time(e) => e.enterkeyhint.replace(val),
79575            Self::U(e) => e.enterkeyhint.replace(val),
79576            Self::Var(e) => e.enterkeyhint.replace(val),
79577            Self::Wbr(e) => e.enterkeyhint.replace(val),
79578            Self::Area(e) => e.enterkeyhint.replace(val),
79579            Self::Audio(e) => e.enterkeyhint.replace(val),
79580            Self::Img(e) => e.enterkeyhint.replace(val),
79581            Self::Map(e) => e.enterkeyhint.replace(val),
79582            Self::Track(e) => e.enterkeyhint.replace(val),
79583            Self::Video(e) => e.enterkeyhint.replace(val),
79584            Self::Embed(e) => e.enterkeyhint.replace(val),
79585            Self::Iframe(e) => e.enterkeyhint.replace(val),
79586            Self::Object(e) => e.enterkeyhint.replace(val),
79587            Self::Picture(e) => e.enterkeyhint.replace(val),
79588            Self::Portal(e) => e.enterkeyhint.replace(val),
79589            Self::Source(e) => e.enterkeyhint.replace(val),
79590            Self::Canvas(e) => e.enterkeyhint.replace(val),
79591            Self::Noscript(e) => e.enterkeyhint.replace(val),
79592            Self::Script(e) => e.enterkeyhint.replace(val),
79593            Self::Del(e) => e.enterkeyhint.replace(val),
79594            Self::Ins(e) => e.enterkeyhint.replace(val),
79595            Self::Caption(e) => e.enterkeyhint.replace(val),
79596            Self::Col(e) => e.enterkeyhint.replace(val),
79597            Self::Colgroup(e) => e.enterkeyhint.replace(val),
79598            Self::Table(e) => e.enterkeyhint.replace(val),
79599            Self::Tbody(e) => e.enterkeyhint.replace(val),
79600            Self::Td(e) => e.enterkeyhint.replace(val),
79601            Self::Tfoot(e) => e.enterkeyhint.replace(val),
79602            Self::Th(e) => e.enterkeyhint.replace(val),
79603            Self::Thead(e) => e.enterkeyhint.replace(val),
79604            Self::Tr(e) => e.enterkeyhint.replace(val),
79605            Self::Button(e) => e.enterkeyhint.replace(val),
79606            Self::Datalist(e) => e.enterkeyhint.replace(val),
79607            Self::Fieldset(e) => e.enterkeyhint.replace(val),
79608            Self::Form(e) => e.enterkeyhint.replace(val),
79609            Self::Input(e) => e.enterkeyhint.replace(val),
79610            Self::Label(e) => e.enterkeyhint.replace(val),
79611            Self::Legend(e) => e.enterkeyhint.replace(val),
79612            Self::Meter(e) => e.enterkeyhint.replace(val),
79613            Self::Optgroup(e) => e.enterkeyhint.replace(val),
79614            Self::Option(e) => e.enterkeyhint.replace(val),
79615            Self::Output(e) => e.enterkeyhint.replace(val),
79616            Self::Progress(e) => e.enterkeyhint.replace(val),
79617            Self::Select(e) => e.enterkeyhint.replace(val),
79618            Self::Textarea(e) => e.enterkeyhint.replace(val),
79619            Self::Details(e) => e.enterkeyhint.replace(val),
79620            Self::Dialog(e) => e.enterkeyhint.replace(val),
79621            Self::Summary(e) => e.enterkeyhint.replace(val),
79622            Self::Slot(e) => e.enterkeyhint.replace(val),
79623            Self::Template(e) => e.enterkeyhint.replace(val),
79624            Self::Acronym(e) => e.enterkeyhint.replace(val),
79625            Self::Applet(e) => e.enterkeyhint.replace(val),
79626            Self::Bgsound(e) => e.enterkeyhint.replace(val),
79627            Self::Big(e) => e.enterkeyhint.replace(val),
79628            Self::Blink(e) => e.enterkeyhint.replace(val),
79629            Self::Center(e) => e.enterkeyhint.replace(val),
79630            Self::Dir(e) => e.enterkeyhint.replace(val),
79631            Self::Font(e) => e.enterkeyhint.replace(val),
79632            Self::Frame(e) => e.enterkeyhint.replace(val),
79633            Self::Frameset(e) => e.enterkeyhint.replace(val),
79634            Self::Image(e) => e.enterkeyhint.replace(val),
79635            Self::Keygen(e) => e.enterkeyhint.replace(val),
79636            Self::Marquee(e) => e.enterkeyhint.replace(val),
79637            Self::Menuitem(e) => e.enterkeyhint.replace(val),
79638            Self::Nobr(e) => e.enterkeyhint.replace(val),
79639            Self::Noembed(e) => e.enterkeyhint.replace(val),
79640            Self::Noframes(e) => e.enterkeyhint.replace(val),
79641            Self::Param(e) => e.enterkeyhint.replace(val),
79642            Self::Plaintext(e) => e.enterkeyhint.replace(val),
79643            Self::Rb(e) => e.enterkeyhint.replace(val),
79644            Self::Rtc(e) => e.enterkeyhint.replace(val),
79645            Self::Spacer(e) => e.enterkeyhint.replace(val),
79646            Self::Strike(e) => e.enterkeyhint.replace(val),
79647            Self::Tt(e) => e.enterkeyhint.replace(val),
79648            Self::Xmp(e) => e.enterkeyhint.replace(val),
79649            Self::H1(e) => e.enterkeyhint.replace(val),
79650            Self::H2(e) => e.enterkeyhint.replace(val),
79651            Self::H3(e) => e.enterkeyhint.replace(val),
79652            Self::H4(e) => e.enterkeyhint.replace(val),
79653            Self::H5(e) => e.enterkeyhint.replace(val),
79654            Self::H6(e) => e.enterkeyhint.replace(val),
79655            Self::Unknown(e) => e.enterkeyhint.replace(val),
79656        };
79657    }
79658
79659    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
79660    ///   
79661
79662    pub fn set_exportparts(&mut self, val: AttributeValue<'life>) {
79663        match self {
79664            Self::Html(e) => e.exportparts.replace(val),
79665            Self::Base(e) => e.exportparts.replace(val),
79666            Self::Head(e) => e.exportparts.replace(val),
79667            Self::Link(e) => e.exportparts.replace(val),
79668            Self::Meta(e) => e.exportparts.replace(val),
79669            Self::Style(e) => e.exportparts.replace(val),
79670            Self::Title(e) => e.exportparts.replace(val),
79671            Self::Body(e) => e.exportparts.replace(val),
79672            Self::Address(e) => e.exportparts.replace(val),
79673            Self::Article(e) => e.exportparts.replace(val),
79674            Self::Aside(e) => e.exportparts.replace(val),
79675            Self::Footer(e) => e.exportparts.replace(val),
79676            Self::Header(e) => e.exportparts.replace(val),
79677            Self::Hgroup(e) => e.exportparts.replace(val),
79678            Self::Main(e) => e.exportparts.replace(val),
79679            Self::Nav(e) => e.exportparts.replace(val),
79680            Self::Section(e) => e.exportparts.replace(val),
79681            Self::Blockquote(e) => e.exportparts.replace(val),
79682            Self::Dd(e) => e.exportparts.replace(val),
79683            Self::Div(e) => e.exportparts.replace(val),
79684            Self::Dl(e) => e.exportparts.replace(val),
79685            Self::Dt(e) => e.exportparts.replace(val),
79686            Self::Figcaption(e) => e.exportparts.replace(val),
79687            Self::Figure(e) => e.exportparts.replace(val),
79688            Self::Hr(e) => e.exportparts.replace(val),
79689            Self::Li(e) => e.exportparts.replace(val),
79690            Self::Menu(e) => e.exportparts.replace(val),
79691            Self::Ol(e) => e.exportparts.replace(val),
79692            Self::P(e) => e.exportparts.replace(val),
79693            Self::Pre(e) => e.exportparts.replace(val),
79694            Self::Ul(e) => e.exportparts.replace(val),
79695            Self::A(e) => e.exportparts.replace(val),
79696            Self::Abbr(e) => e.exportparts.replace(val),
79697            Self::B(e) => e.exportparts.replace(val),
79698            Self::Bdi(e) => e.exportparts.replace(val),
79699            Self::Bdo(e) => e.exportparts.replace(val),
79700            Self::Br(e) => e.exportparts.replace(val),
79701            Self::Cite(e) => e.exportparts.replace(val),
79702            Self::Code(e) => e.exportparts.replace(val),
79703            Self::Data(e) => e.exportparts.replace(val),
79704            Self::Dfn(e) => e.exportparts.replace(val),
79705            Self::Em(e) => e.exportparts.replace(val),
79706            Self::I(e) => e.exportparts.replace(val),
79707            Self::Kbd(e) => e.exportparts.replace(val),
79708            Self::Mark(e) => e.exportparts.replace(val),
79709            Self::Q(e) => e.exportparts.replace(val),
79710            Self::Rp(e) => e.exportparts.replace(val),
79711            Self::Rt(e) => e.exportparts.replace(val),
79712            Self::Ruby(e) => e.exportparts.replace(val),
79713            Self::S(e) => e.exportparts.replace(val),
79714            Self::Samp(e) => e.exportparts.replace(val),
79715            Self::Small(e) => e.exportparts.replace(val),
79716            Self::Span(e) => e.exportparts.replace(val),
79717            Self::Strong(e) => e.exportparts.replace(val),
79718            Self::Sub(e) => e.exportparts.replace(val),
79719            Self::Sup(e) => e.exportparts.replace(val),
79720            Self::Time(e) => e.exportparts.replace(val),
79721            Self::U(e) => e.exportparts.replace(val),
79722            Self::Var(e) => e.exportparts.replace(val),
79723            Self::Wbr(e) => e.exportparts.replace(val),
79724            Self::Area(e) => e.exportparts.replace(val),
79725            Self::Audio(e) => e.exportparts.replace(val),
79726            Self::Img(e) => e.exportparts.replace(val),
79727            Self::Map(e) => e.exportparts.replace(val),
79728            Self::Track(e) => e.exportparts.replace(val),
79729            Self::Video(e) => e.exportparts.replace(val),
79730            Self::Embed(e) => e.exportparts.replace(val),
79731            Self::Iframe(e) => e.exportparts.replace(val),
79732            Self::Object(e) => e.exportparts.replace(val),
79733            Self::Picture(e) => e.exportparts.replace(val),
79734            Self::Portal(e) => e.exportparts.replace(val),
79735            Self::Source(e) => e.exportparts.replace(val),
79736            Self::Canvas(e) => e.exportparts.replace(val),
79737            Self::Noscript(e) => e.exportparts.replace(val),
79738            Self::Script(e) => e.exportparts.replace(val),
79739            Self::Del(e) => e.exportparts.replace(val),
79740            Self::Ins(e) => e.exportparts.replace(val),
79741            Self::Caption(e) => e.exportparts.replace(val),
79742            Self::Col(e) => e.exportparts.replace(val),
79743            Self::Colgroup(e) => e.exportparts.replace(val),
79744            Self::Table(e) => e.exportparts.replace(val),
79745            Self::Tbody(e) => e.exportparts.replace(val),
79746            Self::Td(e) => e.exportparts.replace(val),
79747            Self::Tfoot(e) => e.exportparts.replace(val),
79748            Self::Th(e) => e.exportparts.replace(val),
79749            Self::Thead(e) => e.exportparts.replace(val),
79750            Self::Tr(e) => e.exportparts.replace(val),
79751            Self::Button(e) => e.exportparts.replace(val),
79752            Self::Datalist(e) => e.exportparts.replace(val),
79753            Self::Fieldset(e) => e.exportparts.replace(val),
79754            Self::Form(e) => e.exportparts.replace(val),
79755            Self::Input(e) => e.exportparts.replace(val),
79756            Self::Label(e) => e.exportparts.replace(val),
79757            Self::Legend(e) => e.exportparts.replace(val),
79758            Self::Meter(e) => e.exportparts.replace(val),
79759            Self::Optgroup(e) => e.exportparts.replace(val),
79760            Self::Option(e) => e.exportparts.replace(val),
79761            Self::Output(e) => e.exportparts.replace(val),
79762            Self::Progress(e) => e.exportparts.replace(val),
79763            Self::Select(e) => e.exportparts.replace(val),
79764            Self::Textarea(e) => e.exportparts.replace(val),
79765            Self::Details(e) => e.exportparts.replace(val),
79766            Self::Dialog(e) => e.exportparts.replace(val),
79767            Self::Summary(e) => e.exportparts.replace(val),
79768            Self::Slot(e) => e.exportparts.replace(val),
79769            Self::Template(e) => e.exportparts.replace(val),
79770            Self::Acronym(e) => e.exportparts.replace(val),
79771            Self::Applet(e) => e.exportparts.replace(val),
79772            Self::Bgsound(e) => e.exportparts.replace(val),
79773            Self::Big(e) => e.exportparts.replace(val),
79774            Self::Blink(e) => e.exportparts.replace(val),
79775            Self::Center(e) => e.exportparts.replace(val),
79776            Self::Dir(e) => e.exportparts.replace(val),
79777            Self::Font(e) => e.exportparts.replace(val),
79778            Self::Frame(e) => e.exportparts.replace(val),
79779            Self::Frameset(e) => e.exportparts.replace(val),
79780            Self::Image(e) => e.exportparts.replace(val),
79781            Self::Keygen(e) => e.exportparts.replace(val),
79782            Self::Marquee(e) => e.exportparts.replace(val),
79783            Self::Menuitem(e) => e.exportparts.replace(val),
79784            Self::Nobr(e) => e.exportparts.replace(val),
79785            Self::Noembed(e) => e.exportparts.replace(val),
79786            Self::Noframes(e) => e.exportparts.replace(val),
79787            Self::Param(e) => e.exportparts.replace(val),
79788            Self::Plaintext(e) => e.exportparts.replace(val),
79789            Self::Rb(e) => e.exportparts.replace(val),
79790            Self::Rtc(e) => e.exportparts.replace(val),
79791            Self::Spacer(e) => e.exportparts.replace(val),
79792            Self::Strike(e) => e.exportparts.replace(val),
79793            Self::Tt(e) => e.exportparts.replace(val),
79794            Self::Xmp(e) => e.exportparts.replace(val),
79795            Self::H1(e) => e.exportparts.replace(val),
79796            Self::H2(e) => e.exportparts.replace(val),
79797            Self::H3(e) => e.exportparts.replace(val),
79798            Self::H4(e) => e.exportparts.replace(val),
79799            Self::H5(e) => e.exportparts.replace(val),
79800            Self::H6(e) => e.exportparts.replace(val),
79801            Self::Unknown(e) => e.exportparts.replace(val),
79802        };
79803    }
79804
79805    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
79806    ///   
79807
79808    pub fn set_hidden(&mut self, val: AttributeValue<'life>) {
79809        match self {
79810            Self::Html(e) => e.hidden.replace(val),
79811            Self::Base(e) => e.hidden.replace(val),
79812            Self::Head(e) => e.hidden.replace(val),
79813            Self::Link(e) => e.hidden.replace(val),
79814            Self::Meta(e) => e.hidden.replace(val),
79815            Self::Style(e) => e.hidden.replace(val),
79816            Self::Title(e) => e.hidden.replace(val),
79817            Self::Body(e) => e.hidden.replace(val),
79818            Self::Address(e) => e.hidden.replace(val),
79819            Self::Article(e) => e.hidden.replace(val),
79820            Self::Aside(e) => e.hidden.replace(val),
79821            Self::Footer(e) => e.hidden.replace(val),
79822            Self::Header(e) => e.hidden.replace(val),
79823            Self::Hgroup(e) => e.hidden.replace(val),
79824            Self::Main(e) => e.hidden.replace(val),
79825            Self::Nav(e) => e.hidden.replace(val),
79826            Self::Section(e) => e.hidden.replace(val),
79827            Self::Blockquote(e) => e.hidden.replace(val),
79828            Self::Dd(e) => e.hidden.replace(val),
79829            Self::Div(e) => e.hidden.replace(val),
79830            Self::Dl(e) => e.hidden.replace(val),
79831            Self::Dt(e) => e.hidden.replace(val),
79832            Self::Figcaption(e) => e.hidden.replace(val),
79833            Self::Figure(e) => e.hidden.replace(val),
79834            Self::Hr(e) => e.hidden.replace(val),
79835            Self::Li(e) => e.hidden.replace(val),
79836            Self::Menu(e) => e.hidden.replace(val),
79837            Self::Ol(e) => e.hidden.replace(val),
79838            Self::P(e) => e.hidden.replace(val),
79839            Self::Pre(e) => e.hidden.replace(val),
79840            Self::Ul(e) => e.hidden.replace(val),
79841            Self::A(e) => e.hidden.replace(val),
79842            Self::Abbr(e) => e.hidden.replace(val),
79843            Self::B(e) => e.hidden.replace(val),
79844            Self::Bdi(e) => e.hidden.replace(val),
79845            Self::Bdo(e) => e.hidden.replace(val),
79846            Self::Br(e) => e.hidden.replace(val),
79847            Self::Cite(e) => e.hidden.replace(val),
79848            Self::Code(e) => e.hidden.replace(val),
79849            Self::Data(e) => e.hidden.replace(val),
79850            Self::Dfn(e) => e.hidden.replace(val),
79851            Self::Em(e) => e.hidden.replace(val),
79852            Self::I(e) => e.hidden.replace(val),
79853            Self::Kbd(e) => e.hidden.replace(val),
79854            Self::Mark(e) => e.hidden.replace(val),
79855            Self::Q(e) => e.hidden.replace(val),
79856            Self::Rp(e) => e.hidden.replace(val),
79857            Self::Rt(e) => e.hidden.replace(val),
79858            Self::Ruby(e) => e.hidden.replace(val),
79859            Self::S(e) => e.hidden.replace(val),
79860            Self::Samp(e) => e.hidden.replace(val),
79861            Self::Small(e) => e.hidden.replace(val),
79862            Self::Span(e) => e.hidden.replace(val),
79863            Self::Strong(e) => e.hidden.replace(val),
79864            Self::Sub(e) => e.hidden.replace(val),
79865            Self::Sup(e) => e.hidden.replace(val),
79866            Self::Time(e) => e.hidden.replace(val),
79867            Self::U(e) => e.hidden.replace(val),
79868            Self::Var(e) => e.hidden.replace(val),
79869            Self::Wbr(e) => e.hidden.replace(val),
79870            Self::Area(e) => e.hidden.replace(val),
79871            Self::Audio(e) => e.hidden.replace(val),
79872            Self::Img(e) => e.hidden.replace(val),
79873            Self::Map(e) => e.hidden.replace(val),
79874            Self::Track(e) => e.hidden.replace(val),
79875            Self::Video(e) => e.hidden.replace(val),
79876            Self::Embed(e) => e.hidden.replace(val),
79877            Self::Iframe(e) => e.hidden.replace(val),
79878            Self::Object(e) => e.hidden.replace(val),
79879            Self::Picture(e) => e.hidden.replace(val),
79880            Self::Portal(e) => e.hidden.replace(val),
79881            Self::Source(e) => e.hidden.replace(val),
79882            Self::Canvas(e) => e.hidden.replace(val),
79883            Self::Noscript(e) => e.hidden.replace(val),
79884            Self::Script(e) => e.hidden.replace(val),
79885            Self::Del(e) => e.hidden.replace(val),
79886            Self::Ins(e) => e.hidden.replace(val),
79887            Self::Caption(e) => e.hidden.replace(val),
79888            Self::Col(e) => e.hidden.replace(val),
79889            Self::Colgroup(e) => e.hidden.replace(val),
79890            Self::Table(e) => e.hidden.replace(val),
79891            Self::Tbody(e) => e.hidden.replace(val),
79892            Self::Td(e) => e.hidden.replace(val),
79893            Self::Tfoot(e) => e.hidden.replace(val),
79894            Self::Th(e) => e.hidden.replace(val),
79895            Self::Thead(e) => e.hidden.replace(val),
79896            Self::Tr(e) => e.hidden.replace(val),
79897            Self::Button(e) => e.hidden.replace(val),
79898            Self::Datalist(e) => e.hidden.replace(val),
79899            Self::Fieldset(e) => e.hidden.replace(val),
79900            Self::Form(e) => e.hidden.replace(val),
79901            Self::Input(e) => e.hidden.replace(val),
79902            Self::Label(e) => e.hidden.replace(val),
79903            Self::Legend(e) => e.hidden.replace(val),
79904            Self::Meter(e) => e.hidden.replace(val),
79905            Self::Optgroup(e) => e.hidden.replace(val),
79906            Self::Option(e) => e.hidden.replace(val),
79907            Self::Output(e) => e.hidden.replace(val),
79908            Self::Progress(e) => e.hidden.replace(val),
79909            Self::Select(e) => e.hidden.replace(val),
79910            Self::Textarea(e) => e.hidden.replace(val),
79911            Self::Details(e) => e.hidden.replace(val),
79912            Self::Dialog(e) => e.hidden.replace(val),
79913            Self::Summary(e) => e.hidden.replace(val),
79914            Self::Slot(e) => e.hidden.replace(val),
79915            Self::Template(e) => e.hidden.replace(val),
79916            Self::Acronym(e) => e.hidden.replace(val),
79917            Self::Applet(e) => e.hidden.replace(val),
79918            Self::Bgsound(e) => e.hidden.replace(val),
79919            Self::Big(e) => e.hidden.replace(val),
79920            Self::Blink(e) => e.hidden.replace(val),
79921            Self::Center(e) => e.hidden.replace(val),
79922            Self::Dir(e) => e.hidden.replace(val),
79923            Self::Font(e) => e.hidden.replace(val),
79924            Self::Frame(e) => e.hidden.replace(val),
79925            Self::Frameset(e) => e.hidden.replace(val),
79926            Self::Image(e) => e.hidden.replace(val),
79927            Self::Keygen(e) => e.hidden.replace(val),
79928            Self::Marquee(e) => e.hidden.replace(val),
79929            Self::Menuitem(e) => e.hidden.replace(val),
79930            Self::Nobr(e) => e.hidden.replace(val),
79931            Self::Noembed(e) => e.hidden.replace(val),
79932            Self::Noframes(e) => e.hidden.replace(val),
79933            Self::Param(e) => e.hidden.replace(val),
79934            Self::Plaintext(e) => e.hidden.replace(val),
79935            Self::Rb(e) => e.hidden.replace(val),
79936            Self::Rtc(e) => e.hidden.replace(val),
79937            Self::Spacer(e) => e.hidden.replace(val),
79938            Self::Strike(e) => e.hidden.replace(val),
79939            Self::Tt(e) => e.hidden.replace(val),
79940            Self::Xmp(e) => e.hidden.replace(val),
79941            Self::H1(e) => e.hidden.replace(val),
79942            Self::H2(e) => e.hidden.replace(val),
79943            Self::H3(e) => e.hidden.replace(val),
79944            Self::H4(e) => e.hidden.replace(val),
79945            Self::H5(e) => e.hidden.replace(val),
79946            Self::H6(e) => e.hidden.replace(val),
79947            Self::Unknown(e) => e.hidden.replace(val),
79948        };
79949    }
79950
79951    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
79952    ///   
79953
79954    pub fn set_id(&mut self, val: AttributeValue<'life>) {
79955        match self {
79956            Self::Html(e) => e.id.replace(val),
79957            Self::Base(e) => e.id.replace(val),
79958            Self::Head(e) => e.id.replace(val),
79959            Self::Link(e) => e.id.replace(val),
79960            Self::Meta(e) => e.id.replace(val),
79961            Self::Style(e) => e.id.replace(val),
79962            Self::Title(e) => e.id.replace(val),
79963            Self::Body(e) => e.id.replace(val),
79964            Self::Address(e) => e.id.replace(val),
79965            Self::Article(e) => e.id.replace(val),
79966            Self::Aside(e) => e.id.replace(val),
79967            Self::Footer(e) => e.id.replace(val),
79968            Self::Header(e) => e.id.replace(val),
79969            Self::Hgroup(e) => e.id.replace(val),
79970            Self::Main(e) => e.id.replace(val),
79971            Self::Nav(e) => e.id.replace(val),
79972            Self::Section(e) => e.id.replace(val),
79973            Self::Blockquote(e) => e.id.replace(val),
79974            Self::Dd(e) => e.id.replace(val),
79975            Self::Div(e) => e.id.replace(val),
79976            Self::Dl(e) => e.id.replace(val),
79977            Self::Dt(e) => e.id.replace(val),
79978            Self::Figcaption(e) => e.id.replace(val),
79979            Self::Figure(e) => e.id.replace(val),
79980            Self::Hr(e) => e.id.replace(val),
79981            Self::Li(e) => e.id.replace(val),
79982            Self::Menu(e) => e.id.replace(val),
79983            Self::Ol(e) => e.id.replace(val),
79984            Self::P(e) => e.id.replace(val),
79985            Self::Pre(e) => e.id.replace(val),
79986            Self::Ul(e) => e.id.replace(val),
79987            Self::A(e) => e.id.replace(val),
79988            Self::Abbr(e) => e.id.replace(val),
79989            Self::B(e) => e.id.replace(val),
79990            Self::Bdi(e) => e.id.replace(val),
79991            Self::Bdo(e) => e.id.replace(val),
79992            Self::Br(e) => e.id.replace(val),
79993            Self::Cite(e) => e.id.replace(val),
79994            Self::Code(e) => e.id.replace(val),
79995            Self::Data(e) => e.id.replace(val),
79996            Self::Dfn(e) => e.id.replace(val),
79997            Self::Em(e) => e.id.replace(val),
79998            Self::I(e) => e.id.replace(val),
79999            Self::Kbd(e) => e.id.replace(val),
80000            Self::Mark(e) => e.id.replace(val),
80001            Self::Q(e) => e.id.replace(val),
80002            Self::Rp(e) => e.id.replace(val),
80003            Self::Rt(e) => e.id.replace(val),
80004            Self::Ruby(e) => e.id.replace(val),
80005            Self::S(e) => e.id.replace(val),
80006            Self::Samp(e) => e.id.replace(val),
80007            Self::Small(e) => e.id.replace(val),
80008            Self::Span(e) => e.id.replace(val),
80009            Self::Strong(e) => e.id.replace(val),
80010            Self::Sub(e) => e.id.replace(val),
80011            Self::Sup(e) => e.id.replace(val),
80012            Self::Time(e) => e.id.replace(val),
80013            Self::U(e) => e.id.replace(val),
80014            Self::Var(e) => e.id.replace(val),
80015            Self::Wbr(e) => e.id.replace(val),
80016            Self::Area(e) => e.id.replace(val),
80017            Self::Audio(e) => e.id.replace(val),
80018            Self::Img(e) => e.id.replace(val),
80019            Self::Map(e) => e.id.replace(val),
80020            Self::Track(e) => e.id.replace(val),
80021            Self::Video(e) => e.id.replace(val),
80022            Self::Embed(e) => e.id.replace(val),
80023            Self::Iframe(e) => e.id.replace(val),
80024            Self::Object(e) => e.id.replace(val),
80025            Self::Picture(e) => e.id.replace(val),
80026            Self::Portal(e) => e.id.replace(val),
80027            Self::Source(e) => e.id.replace(val),
80028            Self::Canvas(e) => e.id.replace(val),
80029            Self::Noscript(e) => e.id.replace(val),
80030            Self::Script(e) => e.id.replace(val),
80031            Self::Del(e) => e.id.replace(val),
80032            Self::Ins(e) => e.id.replace(val),
80033            Self::Caption(e) => e.id.replace(val),
80034            Self::Col(e) => e.id.replace(val),
80035            Self::Colgroup(e) => e.id.replace(val),
80036            Self::Table(e) => e.id.replace(val),
80037            Self::Tbody(e) => e.id.replace(val),
80038            Self::Td(e) => e.id.replace(val),
80039            Self::Tfoot(e) => e.id.replace(val),
80040            Self::Th(e) => e.id.replace(val),
80041            Self::Thead(e) => e.id.replace(val),
80042            Self::Tr(e) => e.id.replace(val),
80043            Self::Button(e) => e.id.replace(val),
80044            Self::Datalist(e) => e.id.replace(val),
80045            Self::Fieldset(e) => e.id.replace(val),
80046            Self::Form(e) => e.id.replace(val),
80047            Self::Input(e) => e.id.replace(val),
80048            Self::Label(e) => e.id.replace(val),
80049            Self::Legend(e) => e.id.replace(val),
80050            Self::Meter(e) => e.id.replace(val),
80051            Self::Optgroup(e) => e.id.replace(val),
80052            Self::Option(e) => e.id.replace(val),
80053            Self::Output(e) => e.id.replace(val),
80054            Self::Progress(e) => e.id.replace(val),
80055            Self::Select(e) => e.id.replace(val),
80056            Self::Textarea(e) => e.id.replace(val),
80057            Self::Details(e) => e.id.replace(val),
80058            Self::Dialog(e) => e.id.replace(val),
80059            Self::Summary(e) => e.id.replace(val),
80060            Self::Slot(e) => e.id.replace(val),
80061            Self::Template(e) => e.id.replace(val),
80062            Self::Acronym(e) => e.id.replace(val),
80063            Self::Applet(e) => e.id.replace(val),
80064            Self::Bgsound(e) => e.id.replace(val),
80065            Self::Big(e) => e.id.replace(val),
80066            Self::Blink(e) => e.id.replace(val),
80067            Self::Center(e) => e.id.replace(val),
80068            Self::Dir(e) => e.id.replace(val),
80069            Self::Font(e) => e.id.replace(val),
80070            Self::Frame(e) => e.id.replace(val),
80071            Self::Frameset(e) => e.id.replace(val),
80072            Self::Image(e) => e.id.replace(val),
80073            Self::Keygen(e) => e.id.replace(val),
80074            Self::Marquee(e) => e.id.replace(val),
80075            Self::Menuitem(e) => e.id.replace(val),
80076            Self::Nobr(e) => e.id.replace(val),
80077            Self::Noembed(e) => e.id.replace(val),
80078            Self::Noframes(e) => e.id.replace(val),
80079            Self::Param(e) => e.id.replace(val),
80080            Self::Plaintext(e) => e.id.replace(val),
80081            Self::Rb(e) => e.id.replace(val),
80082            Self::Rtc(e) => e.id.replace(val),
80083            Self::Spacer(e) => e.id.replace(val),
80084            Self::Strike(e) => e.id.replace(val),
80085            Self::Tt(e) => e.id.replace(val),
80086            Self::Xmp(e) => e.id.replace(val),
80087            Self::H1(e) => e.id.replace(val),
80088            Self::H2(e) => e.id.replace(val),
80089            Self::H3(e) => e.id.replace(val),
80090            Self::H4(e) => e.id.replace(val),
80091            Self::H5(e) => e.id.replace(val),
80092            Self::H6(e) => e.id.replace(val),
80093            Self::Unknown(e) => e.id.replace(val),
80094        };
80095    }
80096
80097    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
80098    ///   
80099
80100    pub fn set_inert(&mut self, val: AttributeValue<'life>) {
80101        match self {
80102            Self::Html(e) => e.inert.replace(val),
80103            Self::Base(e) => e.inert.replace(val),
80104            Self::Head(e) => e.inert.replace(val),
80105            Self::Link(e) => e.inert.replace(val),
80106            Self::Meta(e) => e.inert.replace(val),
80107            Self::Style(e) => e.inert.replace(val),
80108            Self::Title(e) => e.inert.replace(val),
80109            Self::Body(e) => e.inert.replace(val),
80110            Self::Address(e) => e.inert.replace(val),
80111            Self::Article(e) => e.inert.replace(val),
80112            Self::Aside(e) => e.inert.replace(val),
80113            Self::Footer(e) => e.inert.replace(val),
80114            Self::Header(e) => e.inert.replace(val),
80115            Self::Hgroup(e) => e.inert.replace(val),
80116            Self::Main(e) => e.inert.replace(val),
80117            Self::Nav(e) => e.inert.replace(val),
80118            Self::Section(e) => e.inert.replace(val),
80119            Self::Blockquote(e) => e.inert.replace(val),
80120            Self::Dd(e) => e.inert.replace(val),
80121            Self::Div(e) => e.inert.replace(val),
80122            Self::Dl(e) => e.inert.replace(val),
80123            Self::Dt(e) => e.inert.replace(val),
80124            Self::Figcaption(e) => e.inert.replace(val),
80125            Self::Figure(e) => e.inert.replace(val),
80126            Self::Hr(e) => e.inert.replace(val),
80127            Self::Li(e) => e.inert.replace(val),
80128            Self::Menu(e) => e.inert.replace(val),
80129            Self::Ol(e) => e.inert.replace(val),
80130            Self::P(e) => e.inert.replace(val),
80131            Self::Pre(e) => e.inert.replace(val),
80132            Self::Ul(e) => e.inert.replace(val),
80133            Self::A(e) => e.inert.replace(val),
80134            Self::Abbr(e) => e.inert.replace(val),
80135            Self::B(e) => e.inert.replace(val),
80136            Self::Bdi(e) => e.inert.replace(val),
80137            Self::Bdo(e) => e.inert.replace(val),
80138            Self::Br(e) => e.inert.replace(val),
80139            Self::Cite(e) => e.inert.replace(val),
80140            Self::Code(e) => e.inert.replace(val),
80141            Self::Data(e) => e.inert.replace(val),
80142            Self::Dfn(e) => e.inert.replace(val),
80143            Self::Em(e) => e.inert.replace(val),
80144            Self::I(e) => e.inert.replace(val),
80145            Self::Kbd(e) => e.inert.replace(val),
80146            Self::Mark(e) => e.inert.replace(val),
80147            Self::Q(e) => e.inert.replace(val),
80148            Self::Rp(e) => e.inert.replace(val),
80149            Self::Rt(e) => e.inert.replace(val),
80150            Self::Ruby(e) => e.inert.replace(val),
80151            Self::S(e) => e.inert.replace(val),
80152            Self::Samp(e) => e.inert.replace(val),
80153            Self::Small(e) => e.inert.replace(val),
80154            Self::Span(e) => e.inert.replace(val),
80155            Self::Strong(e) => e.inert.replace(val),
80156            Self::Sub(e) => e.inert.replace(val),
80157            Self::Sup(e) => e.inert.replace(val),
80158            Self::Time(e) => e.inert.replace(val),
80159            Self::U(e) => e.inert.replace(val),
80160            Self::Var(e) => e.inert.replace(val),
80161            Self::Wbr(e) => e.inert.replace(val),
80162            Self::Area(e) => e.inert.replace(val),
80163            Self::Audio(e) => e.inert.replace(val),
80164            Self::Img(e) => e.inert.replace(val),
80165            Self::Map(e) => e.inert.replace(val),
80166            Self::Track(e) => e.inert.replace(val),
80167            Self::Video(e) => e.inert.replace(val),
80168            Self::Embed(e) => e.inert.replace(val),
80169            Self::Iframe(e) => e.inert.replace(val),
80170            Self::Object(e) => e.inert.replace(val),
80171            Self::Picture(e) => e.inert.replace(val),
80172            Self::Portal(e) => e.inert.replace(val),
80173            Self::Source(e) => e.inert.replace(val),
80174            Self::Canvas(e) => e.inert.replace(val),
80175            Self::Noscript(e) => e.inert.replace(val),
80176            Self::Script(e) => e.inert.replace(val),
80177            Self::Del(e) => e.inert.replace(val),
80178            Self::Ins(e) => e.inert.replace(val),
80179            Self::Caption(e) => e.inert.replace(val),
80180            Self::Col(e) => e.inert.replace(val),
80181            Self::Colgroup(e) => e.inert.replace(val),
80182            Self::Table(e) => e.inert.replace(val),
80183            Self::Tbody(e) => e.inert.replace(val),
80184            Self::Td(e) => e.inert.replace(val),
80185            Self::Tfoot(e) => e.inert.replace(val),
80186            Self::Th(e) => e.inert.replace(val),
80187            Self::Thead(e) => e.inert.replace(val),
80188            Self::Tr(e) => e.inert.replace(val),
80189            Self::Button(e) => e.inert.replace(val),
80190            Self::Datalist(e) => e.inert.replace(val),
80191            Self::Fieldset(e) => e.inert.replace(val),
80192            Self::Form(e) => e.inert.replace(val),
80193            Self::Input(e) => e.inert.replace(val),
80194            Self::Label(e) => e.inert.replace(val),
80195            Self::Legend(e) => e.inert.replace(val),
80196            Self::Meter(e) => e.inert.replace(val),
80197            Self::Optgroup(e) => e.inert.replace(val),
80198            Self::Option(e) => e.inert.replace(val),
80199            Self::Output(e) => e.inert.replace(val),
80200            Self::Progress(e) => e.inert.replace(val),
80201            Self::Select(e) => e.inert.replace(val),
80202            Self::Textarea(e) => e.inert.replace(val),
80203            Self::Details(e) => e.inert.replace(val),
80204            Self::Dialog(e) => e.inert.replace(val),
80205            Self::Summary(e) => e.inert.replace(val),
80206            Self::Slot(e) => e.inert.replace(val),
80207            Self::Template(e) => e.inert.replace(val),
80208            Self::Acronym(e) => e.inert.replace(val),
80209            Self::Applet(e) => e.inert.replace(val),
80210            Self::Bgsound(e) => e.inert.replace(val),
80211            Self::Big(e) => e.inert.replace(val),
80212            Self::Blink(e) => e.inert.replace(val),
80213            Self::Center(e) => e.inert.replace(val),
80214            Self::Dir(e) => e.inert.replace(val),
80215            Self::Font(e) => e.inert.replace(val),
80216            Self::Frame(e) => e.inert.replace(val),
80217            Self::Frameset(e) => e.inert.replace(val),
80218            Self::Image(e) => e.inert.replace(val),
80219            Self::Keygen(e) => e.inert.replace(val),
80220            Self::Marquee(e) => e.inert.replace(val),
80221            Self::Menuitem(e) => e.inert.replace(val),
80222            Self::Nobr(e) => e.inert.replace(val),
80223            Self::Noembed(e) => e.inert.replace(val),
80224            Self::Noframes(e) => e.inert.replace(val),
80225            Self::Param(e) => e.inert.replace(val),
80226            Self::Plaintext(e) => e.inert.replace(val),
80227            Self::Rb(e) => e.inert.replace(val),
80228            Self::Rtc(e) => e.inert.replace(val),
80229            Self::Spacer(e) => e.inert.replace(val),
80230            Self::Strike(e) => e.inert.replace(val),
80231            Self::Tt(e) => e.inert.replace(val),
80232            Self::Xmp(e) => e.inert.replace(val),
80233            Self::H1(e) => e.inert.replace(val),
80234            Self::H2(e) => e.inert.replace(val),
80235            Self::H3(e) => e.inert.replace(val),
80236            Self::H4(e) => e.inert.replace(val),
80237            Self::H5(e) => e.inert.replace(val),
80238            Self::H6(e) => e.inert.replace(val),
80239            Self::Unknown(e) => e.inert.replace(val),
80240        };
80241    }
80242
80243    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
80244    ///   
80245
80246    pub fn set_inputmode(&mut self, val: AttributeValue<'life>) {
80247        match self {
80248            Self::Html(e) => e.inputmode.replace(val),
80249            Self::Base(e) => e.inputmode.replace(val),
80250            Self::Head(e) => e.inputmode.replace(val),
80251            Self::Link(e) => e.inputmode.replace(val),
80252            Self::Meta(e) => e.inputmode.replace(val),
80253            Self::Style(e) => e.inputmode.replace(val),
80254            Self::Title(e) => e.inputmode.replace(val),
80255            Self::Body(e) => e.inputmode.replace(val),
80256            Self::Address(e) => e.inputmode.replace(val),
80257            Self::Article(e) => e.inputmode.replace(val),
80258            Self::Aside(e) => e.inputmode.replace(val),
80259            Self::Footer(e) => e.inputmode.replace(val),
80260            Self::Header(e) => e.inputmode.replace(val),
80261            Self::Hgroup(e) => e.inputmode.replace(val),
80262            Self::Main(e) => e.inputmode.replace(val),
80263            Self::Nav(e) => e.inputmode.replace(val),
80264            Self::Section(e) => e.inputmode.replace(val),
80265            Self::Blockquote(e) => e.inputmode.replace(val),
80266            Self::Dd(e) => e.inputmode.replace(val),
80267            Self::Div(e) => e.inputmode.replace(val),
80268            Self::Dl(e) => e.inputmode.replace(val),
80269            Self::Dt(e) => e.inputmode.replace(val),
80270            Self::Figcaption(e) => e.inputmode.replace(val),
80271            Self::Figure(e) => e.inputmode.replace(val),
80272            Self::Hr(e) => e.inputmode.replace(val),
80273            Self::Li(e) => e.inputmode.replace(val),
80274            Self::Menu(e) => e.inputmode.replace(val),
80275            Self::Ol(e) => e.inputmode.replace(val),
80276            Self::P(e) => e.inputmode.replace(val),
80277            Self::Pre(e) => e.inputmode.replace(val),
80278            Self::Ul(e) => e.inputmode.replace(val),
80279            Self::A(e) => e.inputmode.replace(val),
80280            Self::Abbr(e) => e.inputmode.replace(val),
80281            Self::B(e) => e.inputmode.replace(val),
80282            Self::Bdi(e) => e.inputmode.replace(val),
80283            Self::Bdo(e) => e.inputmode.replace(val),
80284            Self::Br(e) => e.inputmode.replace(val),
80285            Self::Cite(e) => e.inputmode.replace(val),
80286            Self::Code(e) => e.inputmode.replace(val),
80287            Self::Data(e) => e.inputmode.replace(val),
80288            Self::Dfn(e) => e.inputmode.replace(val),
80289            Self::Em(e) => e.inputmode.replace(val),
80290            Self::I(e) => e.inputmode.replace(val),
80291            Self::Kbd(e) => e.inputmode.replace(val),
80292            Self::Mark(e) => e.inputmode.replace(val),
80293            Self::Q(e) => e.inputmode.replace(val),
80294            Self::Rp(e) => e.inputmode.replace(val),
80295            Self::Rt(e) => e.inputmode.replace(val),
80296            Self::Ruby(e) => e.inputmode.replace(val),
80297            Self::S(e) => e.inputmode.replace(val),
80298            Self::Samp(e) => e.inputmode.replace(val),
80299            Self::Small(e) => e.inputmode.replace(val),
80300            Self::Span(e) => e.inputmode.replace(val),
80301            Self::Strong(e) => e.inputmode.replace(val),
80302            Self::Sub(e) => e.inputmode.replace(val),
80303            Self::Sup(e) => e.inputmode.replace(val),
80304            Self::Time(e) => e.inputmode.replace(val),
80305            Self::U(e) => e.inputmode.replace(val),
80306            Self::Var(e) => e.inputmode.replace(val),
80307            Self::Wbr(e) => e.inputmode.replace(val),
80308            Self::Area(e) => e.inputmode.replace(val),
80309            Self::Audio(e) => e.inputmode.replace(val),
80310            Self::Img(e) => e.inputmode.replace(val),
80311            Self::Map(e) => e.inputmode.replace(val),
80312            Self::Track(e) => e.inputmode.replace(val),
80313            Self::Video(e) => e.inputmode.replace(val),
80314            Self::Embed(e) => e.inputmode.replace(val),
80315            Self::Iframe(e) => e.inputmode.replace(val),
80316            Self::Object(e) => e.inputmode.replace(val),
80317            Self::Picture(e) => e.inputmode.replace(val),
80318            Self::Portal(e) => e.inputmode.replace(val),
80319            Self::Source(e) => e.inputmode.replace(val),
80320            Self::Canvas(e) => e.inputmode.replace(val),
80321            Self::Noscript(e) => e.inputmode.replace(val),
80322            Self::Script(e) => e.inputmode.replace(val),
80323            Self::Del(e) => e.inputmode.replace(val),
80324            Self::Ins(e) => e.inputmode.replace(val),
80325            Self::Caption(e) => e.inputmode.replace(val),
80326            Self::Col(e) => e.inputmode.replace(val),
80327            Self::Colgroup(e) => e.inputmode.replace(val),
80328            Self::Table(e) => e.inputmode.replace(val),
80329            Self::Tbody(e) => e.inputmode.replace(val),
80330            Self::Td(e) => e.inputmode.replace(val),
80331            Self::Tfoot(e) => e.inputmode.replace(val),
80332            Self::Th(e) => e.inputmode.replace(val),
80333            Self::Thead(e) => e.inputmode.replace(val),
80334            Self::Tr(e) => e.inputmode.replace(val),
80335            Self::Button(e) => e.inputmode.replace(val),
80336            Self::Datalist(e) => e.inputmode.replace(val),
80337            Self::Fieldset(e) => e.inputmode.replace(val),
80338            Self::Form(e) => e.inputmode.replace(val),
80339            Self::Input(e) => e.inputmode.replace(val),
80340            Self::Label(e) => e.inputmode.replace(val),
80341            Self::Legend(e) => e.inputmode.replace(val),
80342            Self::Meter(e) => e.inputmode.replace(val),
80343            Self::Optgroup(e) => e.inputmode.replace(val),
80344            Self::Option(e) => e.inputmode.replace(val),
80345            Self::Output(e) => e.inputmode.replace(val),
80346            Self::Progress(e) => e.inputmode.replace(val),
80347            Self::Select(e) => e.inputmode.replace(val),
80348            Self::Textarea(e) => e.inputmode.replace(val),
80349            Self::Details(e) => e.inputmode.replace(val),
80350            Self::Dialog(e) => e.inputmode.replace(val),
80351            Self::Summary(e) => e.inputmode.replace(val),
80352            Self::Slot(e) => e.inputmode.replace(val),
80353            Self::Template(e) => e.inputmode.replace(val),
80354            Self::Acronym(e) => e.inputmode.replace(val),
80355            Self::Applet(e) => e.inputmode.replace(val),
80356            Self::Bgsound(e) => e.inputmode.replace(val),
80357            Self::Big(e) => e.inputmode.replace(val),
80358            Self::Blink(e) => e.inputmode.replace(val),
80359            Self::Center(e) => e.inputmode.replace(val),
80360            Self::Dir(e) => e.inputmode.replace(val),
80361            Self::Font(e) => e.inputmode.replace(val),
80362            Self::Frame(e) => e.inputmode.replace(val),
80363            Self::Frameset(e) => e.inputmode.replace(val),
80364            Self::Image(e) => e.inputmode.replace(val),
80365            Self::Keygen(e) => e.inputmode.replace(val),
80366            Self::Marquee(e) => e.inputmode.replace(val),
80367            Self::Menuitem(e) => e.inputmode.replace(val),
80368            Self::Nobr(e) => e.inputmode.replace(val),
80369            Self::Noembed(e) => e.inputmode.replace(val),
80370            Self::Noframes(e) => e.inputmode.replace(val),
80371            Self::Param(e) => e.inputmode.replace(val),
80372            Self::Plaintext(e) => e.inputmode.replace(val),
80373            Self::Rb(e) => e.inputmode.replace(val),
80374            Self::Rtc(e) => e.inputmode.replace(val),
80375            Self::Spacer(e) => e.inputmode.replace(val),
80376            Self::Strike(e) => e.inputmode.replace(val),
80377            Self::Tt(e) => e.inputmode.replace(val),
80378            Self::Xmp(e) => e.inputmode.replace(val),
80379            Self::H1(e) => e.inputmode.replace(val),
80380            Self::H2(e) => e.inputmode.replace(val),
80381            Self::H3(e) => e.inputmode.replace(val),
80382            Self::H4(e) => e.inputmode.replace(val),
80383            Self::H5(e) => e.inputmode.replace(val),
80384            Self::H6(e) => e.inputmode.replace(val),
80385            Self::Unknown(e) => e.inputmode.replace(val),
80386        };
80387    }
80388
80389    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
80390    ///   
80391
80392    pub fn set_is(&mut self, val: AttributeValue<'life>) {
80393        match self {
80394            Self::Html(e) => e.is.replace(val),
80395            Self::Base(e) => e.is.replace(val),
80396            Self::Head(e) => e.is.replace(val),
80397            Self::Link(e) => e.is.replace(val),
80398            Self::Meta(e) => e.is.replace(val),
80399            Self::Style(e) => e.is.replace(val),
80400            Self::Title(e) => e.is.replace(val),
80401            Self::Body(e) => e.is.replace(val),
80402            Self::Address(e) => e.is.replace(val),
80403            Self::Article(e) => e.is.replace(val),
80404            Self::Aside(e) => e.is.replace(val),
80405            Self::Footer(e) => e.is.replace(val),
80406            Self::Header(e) => e.is.replace(val),
80407            Self::Hgroup(e) => e.is.replace(val),
80408            Self::Main(e) => e.is.replace(val),
80409            Self::Nav(e) => e.is.replace(val),
80410            Self::Section(e) => e.is.replace(val),
80411            Self::Blockquote(e) => e.is.replace(val),
80412            Self::Dd(e) => e.is.replace(val),
80413            Self::Div(e) => e.is.replace(val),
80414            Self::Dl(e) => e.is.replace(val),
80415            Self::Dt(e) => e.is.replace(val),
80416            Self::Figcaption(e) => e.is.replace(val),
80417            Self::Figure(e) => e.is.replace(val),
80418            Self::Hr(e) => e.is.replace(val),
80419            Self::Li(e) => e.is.replace(val),
80420            Self::Menu(e) => e.is.replace(val),
80421            Self::Ol(e) => e.is.replace(val),
80422            Self::P(e) => e.is.replace(val),
80423            Self::Pre(e) => e.is.replace(val),
80424            Self::Ul(e) => e.is.replace(val),
80425            Self::A(e) => e.is.replace(val),
80426            Self::Abbr(e) => e.is.replace(val),
80427            Self::B(e) => e.is.replace(val),
80428            Self::Bdi(e) => e.is.replace(val),
80429            Self::Bdo(e) => e.is.replace(val),
80430            Self::Br(e) => e.is.replace(val),
80431            Self::Cite(e) => e.is.replace(val),
80432            Self::Code(e) => e.is.replace(val),
80433            Self::Data(e) => e.is.replace(val),
80434            Self::Dfn(e) => e.is.replace(val),
80435            Self::Em(e) => e.is.replace(val),
80436            Self::I(e) => e.is.replace(val),
80437            Self::Kbd(e) => e.is.replace(val),
80438            Self::Mark(e) => e.is.replace(val),
80439            Self::Q(e) => e.is.replace(val),
80440            Self::Rp(e) => e.is.replace(val),
80441            Self::Rt(e) => e.is.replace(val),
80442            Self::Ruby(e) => e.is.replace(val),
80443            Self::S(e) => e.is.replace(val),
80444            Self::Samp(e) => e.is.replace(val),
80445            Self::Small(e) => e.is.replace(val),
80446            Self::Span(e) => e.is.replace(val),
80447            Self::Strong(e) => e.is.replace(val),
80448            Self::Sub(e) => e.is.replace(val),
80449            Self::Sup(e) => e.is.replace(val),
80450            Self::Time(e) => e.is.replace(val),
80451            Self::U(e) => e.is.replace(val),
80452            Self::Var(e) => e.is.replace(val),
80453            Self::Wbr(e) => e.is.replace(val),
80454            Self::Area(e) => e.is.replace(val),
80455            Self::Audio(e) => e.is.replace(val),
80456            Self::Img(e) => e.is.replace(val),
80457            Self::Map(e) => e.is.replace(val),
80458            Self::Track(e) => e.is.replace(val),
80459            Self::Video(e) => e.is.replace(val),
80460            Self::Embed(e) => e.is.replace(val),
80461            Self::Iframe(e) => e.is.replace(val),
80462            Self::Object(e) => e.is.replace(val),
80463            Self::Picture(e) => e.is.replace(val),
80464            Self::Portal(e) => e.is.replace(val),
80465            Self::Source(e) => e.is.replace(val),
80466            Self::Canvas(e) => e.is.replace(val),
80467            Self::Noscript(e) => e.is.replace(val),
80468            Self::Script(e) => e.is.replace(val),
80469            Self::Del(e) => e.is.replace(val),
80470            Self::Ins(e) => e.is.replace(val),
80471            Self::Caption(e) => e.is.replace(val),
80472            Self::Col(e) => e.is.replace(val),
80473            Self::Colgroup(e) => e.is.replace(val),
80474            Self::Table(e) => e.is.replace(val),
80475            Self::Tbody(e) => e.is.replace(val),
80476            Self::Td(e) => e.is.replace(val),
80477            Self::Tfoot(e) => e.is.replace(val),
80478            Self::Th(e) => e.is.replace(val),
80479            Self::Thead(e) => e.is.replace(val),
80480            Self::Tr(e) => e.is.replace(val),
80481            Self::Button(e) => e.is.replace(val),
80482            Self::Datalist(e) => e.is.replace(val),
80483            Self::Fieldset(e) => e.is.replace(val),
80484            Self::Form(e) => e.is.replace(val),
80485            Self::Input(e) => e.is.replace(val),
80486            Self::Label(e) => e.is.replace(val),
80487            Self::Legend(e) => e.is.replace(val),
80488            Self::Meter(e) => e.is.replace(val),
80489            Self::Optgroup(e) => e.is.replace(val),
80490            Self::Option(e) => e.is.replace(val),
80491            Self::Output(e) => e.is.replace(val),
80492            Self::Progress(e) => e.is.replace(val),
80493            Self::Select(e) => e.is.replace(val),
80494            Self::Textarea(e) => e.is.replace(val),
80495            Self::Details(e) => e.is.replace(val),
80496            Self::Dialog(e) => e.is.replace(val),
80497            Self::Summary(e) => e.is.replace(val),
80498            Self::Slot(e) => e.is.replace(val),
80499            Self::Template(e) => e.is.replace(val),
80500            Self::Acronym(e) => e.is.replace(val),
80501            Self::Applet(e) => e.is.replace(val),
80502            Self::Bgsound(e) => e.is.replace(val),
80503            Self::Big(e) => e.is.replace(val),
80504            Self::Blink(e) => e.is.replace(val),
80505            Self::Center(e) => e.is.replace(val),
80506            Self::Dir(e) => e.is.replace(val),
80507            Self::Font(e) => e.is.replace(val),
80508            Self::Frame(e) => e.is.replace(val),
80509            Self::Frameset(e) => e.is.replace(val),
80510            Self::Image(e) => e.is.replace(val),
80511            Self::Keygen(e) => e.is.replace(val),
80512            Self::Marquee(e) => e.is.replace(val),
80513            Self::Menuitem(e) => e.is.replace(val),
80514            Self::Nobr(e) => e.is.replace(val),
80515            Self::Noembed(e) => e.is.replace(val),
80516            Self::Noframes(e) => e.is.replace(val),
80517            Self::Param(e) => e.is.replace(val),
80518            Self::Plaintext(e) => e.is.replace(val),
80519            Self::Rb(e) => e.is.replace(val),
80520            Self::Rtc(e) => e.is.replace(val),
80521            Self::Spacer(e) => e.is.replace(val),
80522            Self::Strike(e) => e.is.replace(val),
80523            Self::Tt(e) => e.is.replace(val),
80524            Self::Xmp(e) => e.is.replace(val),
80525            Self::H1(e) => e.is.replace(val),
80526            Self::H2(e) => e.is.replace(val),
80527            Self::H3(e) => e.is.replace(val),
80528            Self::H4(e) => e.is.replace(val),
80529            Self::H5(e) => e.is.replace(val),
80530            Self::H6(e) => e.is.replace(val),
80531            Self::Unknown(e) => e.is.replace(val),
80532        };
80533    }
80534
80535    ///     <p>The unique, global identifier of an item.</p>
80536    ///   
80537
80538    pub fn set_itemid(&mut self, val: AttributeValue<'life>) {
80539        match self {
80540            Self::Html(e) => e.itemid.replace(val),
80541            Self::Base(e) => e.itemid.replace(val),
80542            Self::Head(e) => e.itemid.replace(val),
80543            Self::Link(e) => e.itemid.replace(val),
80544            Self::Meta(e) => e.itemid.replace(val),
80545            Self::Style(e) => e.itemid.replace(val),
80546            Self::Title(e) => e.itemid.replace(val),
80547            Self::Body(e) => e.itemid.replace(val),
80548            Self::Address(e) => e.itemid.replace(val),
80549            Self::Article(e) => e.itemid.replace(val),
80550            Self::Aside(e) => e.itemid.replace(val),
80551            Self::Footer(e) => e.itemid.replace(val),
80552            Self::Header(e) => e.itemid.replace(val),
80553            Self::Hgroup(e) => e.itemid.replace(val),
80554            Self::Main(e) => e.itemid.replace(val),
80555            Self::Nav(e) => e.itemid.replace(val),
80556            Self::Section(e) => e.itemid.replace(val),
80557            Self::Blockquote(e) => e.itemid.replace(val),
80558            Self::Dd(e) => e.itemid.replace(val),
80559            Self::Div(e) => e.itemid.replace(val),
80560            Self::Dl(e) => e.itemid.replace(val),
80561            Self::Dt(e) => e.itemid.replace(val),
80562            Self::Figcaption(e) => e.itemid.replace(val),
80563            Self::Figure(e) => e.itemid.replace(val),
80564            Self::Hr(e) => e.itemid.replace(val),
80565            Self::Li(e) => e.itemid.replace(val),
80566            Self::Menu(e) => e.itemid.replace(val),
80567            Self::Ol(e) => e.itemid.replace(val),
80568            Self::P(e) => e.itemid.replace(val),
80569            Self::Pre(e) => e.itemid.replace(val),
80570            Self::Ul(e) => e.itemid.replace(val),
80571            Self::A(e) => e.itemid.replace(val),
80572            Self::Abbr(e) => e.itemid.replace(val),
80573            Self::B(e) => e.itemid.replace(val),
80574            Self::Bdi(e) => e.itemid.replace(val),
80575            Self::Bdo(e) => e.itemid.replace(val),
80576            Self::Br(e) => e.itemid.replace(val),
80577            Self::Cite(e) => e.itemid.replace(val),
80578            Self::Code(e) => e.itemid.replace(val),
80579            Self::Data(e) => e.itemid.replace(val),
80580            Self::Dfn(e) => e.itemid.replace(val),
80581            Self::Em(e) => e.itemid.replace(val),
80582            Self::I(e) => e.itemid.replace(val),
80583            Self::Kbd(e) => e.itemid.replace(val),
80584            Self::Mark(e) => e.itemid.replace(val),
80585            Self::Q(e) => e.itemid.replace(val),
80586            Self::Rp(e) => e.itemid.replace(val),
80587            Self::Rt(e) => e.itemid.replace(val),
80588            Self::Ruby(e) => e.itemid.replace(val),
80589            Self::S(e) => e.itemid.replace(val),
80590            Self::Samp(e) => e.itemid.replace(val),
80591            Self::Small(e) => e.itemid.replace(val),
80592            Self::Span(e) => e.itemid.replace(val),
80593            Self::Strong(e) => e.itemid.replace(val),
80594            Self::Sub(e) => e.itemid.replace(val),
80595            Self::Sup(e) => e.itemid.replace(val),
80596            Self::Time(e) => e.itemid.replace(val),
80597            Self::U(e) => e.itemid.replace(val),
80598            Self::Var(e) => e.itemid.replace(val),
80599            Self::Wbr(e) => e.itemid.replace(val),
80600            Self::Area(e) => e.itemid.replace(val),
80601            Self::Audio(e) => e.itemid.replace(val),
80602            Self::Img(e) => e.itemid.replace(val),
80603            Self::Map(e) => e.itemid.replace(val),
80604            Self::Track(e) => e.itemid.replace(val),
80605            Self::Video(e) => e.itemid.replace(val),
80606            Self::Embed(e) => e.itemid.replace(val),
80607            Self::Iframe(e) => e.itemid.replace(val),
80608            Self::Object(e) => e.itemid.replace(val),
80609            Self::Picture(e) => e.itemid.replace(val),
80610            Self::Portal(e) => e.itemid.replace(val),
80611            Self::Source(e) => e.itemid.replace(val),
80612            Self::Canvas(e) => e.itemid.replace(val),
80613            Self::Noscript(e) => e.itemid.replace(val),
80614            Self::Script(e) => e.itemid.replace(val),
80615            Self::Del(e) => e.itemid.replace(val),
80616            Self::Ins(e) => e.itemid.replace(val),
80617            Self::Caption(e) => e.itemid.replace(val),
80618            Self::Col(e) => e.itemid.replace(val),
80619            Self::Colgroup(e) => e.itemid.replace(val),
80620            Self::Table(e) => e.itemid.replace(val),
80621            Self::Tbody(e) => e.itemid.replace(val),
80622            Self::Td(e) => e.itemid.replace(val),
80623            Self::Tfoot(e) => e.itemid.replace(val),
80624            Self::Th(e) => e.itemid.replace(val),
80625            Self::Thead(e) => e.itemid.replace(val),
80626            Self::Tr(e) => e.itemid.replace(val),
80627            Self::Button(e) => e.itemid.replace(val),
80628            Self::Datalist(e) => e.itemid.replace(val),
80629            Self::Fieldset(e) => e.itemid.replace(val),
80630            Self::Form(e) => e.itemid.replace(val),
80631            Self::Input(e) => e.itemid.replace(val),
80632            Self::Label(e) => e.itemid.replace(val),
80633            Self::Legend(e) => e.itemid.replace(val),
80634            Self::Meter(e) => e.itemid.replace(val),
80635            Self::Optgroup(e) => e.itemid.replace(val),
80636            Self::Option(e) => e.itemid.replace(val),
80637            Self::Output(e) => e.itemid.replace(val),
80638            Self::Progress(e) => e.itemid.replace(val),
80639            Self::Select(e) => e.itemid.replace(val),
80640            Self::Textarea(e) => e.itemid.replace(val),
80641            Self::Details(e) => e.itemid.replace(val),
80642            Self::Dialog(e) => e.itemid.replace(val),
80643            Self::Summary(e) => e.itemid.replace(val),
80644            Self::Slot(e) => e.itemid.replace(val),
80645            Self::Template(e) => e.itemid.replace(val),
80646            Self::Acronym(e) => e.itemid.replace(val),
80647            Self::Applet(e) => e.itemid.replace(val),
80648            Self::Bgsound(e) => e.itemid.replace(val),
80649            Self::Big(e) => e.itemid.replace(val),
80650            Self::Blink(e) => e.itemid.replace(val),
80651            Self::Center(e) => e.itemid.replace(val),
80652            Self::Dir(e) => e.itemid.replace(val),
80653            Self::Font(e) => e.itemid.replace(val),
80654            Self::Frame(e) => e.itemid.replace(val),
80655            Self::Frameset(e) => e.itemid.replace(val),
80656            Self::Image(e) => e.itemid.replace(val),
80657            Self::Keygen(e) => e.itemid.replace(val),
80658            Self::Marquee(e) => e.itemid.replace(val),
80659            Self::Menuitem(e) => e.itemid.replace(val),
80660            Self::Nobr(e) => e.itemid.replace(val),
80661            Self::Noembed(e) => e.itemid.replace(val),
80662            Self::Noframes(e) => e.itemid.replace(val),
80663            Self::Param(e) => e.itemid.replace(val),
80664            Self::Plaintext(e) => e.itemid.replace(val),
80665            Self::Rb(e) => e.itemid.replace(val),
80666            Self::Rtc(e) => e.itemid.replace(val),
80667            Self::Spacer(e) => e.itemid.replace(val),
80668            Self::Strike(e) => e.itemid.replace(val),
80669            Self::Tt(e) => e.itemid.replace(val),
80670            Self::Xmp(e) => e.itemid.replace(val),
80671            Self::H1(e) => e.itemid.replace(val),
80672            Self::H2(e) => e.itemid.replace(val),
80673            Self::H3(e) => e.itemid.replace(val),
80674            Self::H4(e) => e.itemid.replace(val),
80675            Self::H5(e) => e.itemid.replace(val),
80676            Self::H6(e) => e.itemid.replace(val),
80677            Self::Unknown(e) => e.itemid.replace(val),
80678        };
80679    }
80680
80681    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
80682    ///   
80683
80684    pub fn set_itemprop(&mut self, val: AttributeValue<'life>) {
80685        match self {
80686            Self::Html(e) => e.itemprop.replace(val),
80687            Self::Base(e) => e.itemprop.replace(val),
80688            Self::Head(e) => e.itemprop.replace(val),
80689            Self::Link(e) => e.itemprop.replace(val),
80690            Self::Meta(e) => e.itemprop.replace(val),
80691            Self::Style(e) => e.itemprop.replace(val),
80692            Self::Title(e) => e.itemprop.replace(val),
80693            Self::Body(e) => e.itemprop.replace(val),
80694            Self::Address(e) => e.itemprop.replace(val),
80695            Self::Article(e) => e.itemprop.replace(val),
80696            Self::Aside(e) => e.itemprop.replace(val),
80697            Self::Footer(e) => e.itemprop.replace(val),
80698            Self::Header(e) => e.itemprop.replace(val),
80699            Self::Hgroup(e) => e.itemprop.replace(val),
80700            Self::Main(e) => e.itemprop.replace(val),
80701            Self::Nav(e) => e.itemprop.replace(val),
80702            Self::Section(e) => e.itemprop.replace(val),
80703            Self::Blockquote(e) => e.itemprop.replace(val),
80704            Self::Dd(e) => e.itemprop.replace(val),
80705            Self::Div(e) => e.itemprop.replace(val),
80706            Self::Dl(e) => e.itemprop.replace(val),
80707            Self::Dt(e) => e.itemprop.replace(val),
80708            Self::Figcaption(e) => e.itemprop.replace(val),
80709            Self::Figure(e) => e.itemprop.replace(val),
80710            Self::Hr(e) => e.itemprop.replace(val),
80711            Self::Li(e) => e.itemprop.replace(val),
80712            Self::Menu(e) => e.itemprop.replace(val),
80713            Self::Ol(e) => e.itemprop.replace(val),
80714            Self::P(e) => e.itemprop.replace(val),
80715            Self::Pre(e) => e.itemprop.replace(val),
80716            Self::Ul(e) => e.itemprop.replace(val),
80717            Self::A(e) => e.itemprop.replace(val),
80718            Self::Abbr(e) => e.itemprop.replace(val),
80719            Self::B(e) => e.itemprop.replace(val),
80720            Self::Bdi(e) => e.itemprop.replace(val),
80721            Self::Bdo(e) => e.itemprop.replace(val),
80722            Self::Br(e) => e.itemprop.replace(val),
80723            Self::Cite(e) => e.itemprop.replace(val),
80724            Self::Code(e) => e.itemprop.replace(val),
80725            Self::Data(e) => e.itemprop.replace(val),
80726            Self::Dfn(e) => e.itemprop.replace(val),
80727            Self::Em(e) => e.itemprop.replace(val),
80728            Self::I(e) => e.itemprop.replace(val),
80729            Self::Kbd(e) => e.itemprop.replace(val),
80730            Self::Mark(e) => e.itemprop.replace(val),
80731            Self::Q(e) => e.itemprop.replace(val),
80732            Self::Rp(e) => e.itemprop.replace(val),
80733            Self::Rt(e) => e.itemprop.replace(val),
80734            Self::Ruby(e) => e.itemprop.replace(val),
80735            Self::S(e) => e.itemprop.replace(val),
80736            Self::Samp(e) => e.itemprop.replace(val),
80737            Self::Small(e) => e.itemprop.replace(val),
80738            Self::Span(e) => e.itemprop.replace(val),
80739            Self::Strong(e) => e.itemprop.replace(val),
80740            Self::Sub(e) => e.itemprop.replace(val),
80741            Self::Sup(e) => e.itemprop.replace(val),
80742            Self::Time(e) => e.itemprop.replace(val),
80743            Self::U(e) => e.itemprop.replace(val),
80744            Self::Var(e) => e.itemprop.replace(val),
80745            Self::Wbr(e) => e.itemprop.replace(val),
80746            Self::Area(e) => e.itemprop.replace(val),
80747            Self::Audio(e) => e.itemprop.replace(val),
80748            Self::Img(e) => e.itemprop.replace(val),
80749            Self::Map(e) => e.itemprop.replace(val),
80750            Self::Track(e) => e.itemprop.replace(val),
80751            Self::Video(e) => e.itemprop.replace(val),
80752            Self::Embed(e) => e.itemprop.replace(val),
80753            Self::Iframe(e) => e.itemprop.replace(val),
80754            Self::Object(e) => e.itemprop.replace(val),
80755            Self::Picture(e) => e.itemprop.replace(val),
80756            Self::Portal(e) => e.itemprop.replace(val),
80757            Self::Source(e) => e.itemprop.replace(val),
80758            Self::Canvas(e) => e.itemprop.replace(val),
80759            Self::Noscript(e) => e.itemprop.replace(val),
80760            Self::Script(e) => e.itemprop.replace(val),
80761            Self::Del(e) => e.itemprop.replace(val),
80762            Self::Ins(e) => e.itemprop.replace(val),
80763            Self::Caption(e) => e.itemprop.replace(val),
80764            Self::Col(e) => e.itemprop.replace(val),
80765            Self::Colgroup(e) => e.itemprop.replace(val),
80766            Self::Table(e) => e.itemprop.replace(val),
80767            Self::Tbody(e) => e.itemprop.replace(val),
80768            Self::Td(e) => e.itemprop.replace(val),
80769            Self::Tfoot(e) => e.itemprop.replace(val),
80770            Self::Th(e) => e.itemprop.replace(val),
80771            Self::Thead(e) => e.itemprop.replace(val),
80772            Self::Tr(e) => e.itemprop.replace(val),
80773            Self::Button(e) => e.itemprop.replace(val),
80774            Self::Datalist(e) => e.itemprop.replace(val),
80775            Self::Fieldset(e) => e.itemprop.replace(val),
80776            Self::Form(e) => e.itemprop.replace(val),
80777            Self::Input(e) => e.itemprop.replace(val),
80778            Self::Label(e) => e.itemprop.replace(val),
80779            Self::Legend(e) => e.itemprop.replace(val),
80780            Self::Meter(e) => e.itemprop.replace(val),
80781            Self::Optgroup(e) => e.itemprop.replace(val),
80782            Self::Option(e) => e.itemprop.replace(val),
80783            Self::Output(e) => e.itemprop.replace(val),
80784            Self::Progress(e) => e.itemprop.replace(val),
80785            Self::Select(e) => e.itemprop.replace(val),
80786            Self::Textarea(e) => e.itemprop.replace(val),
80787            Self::Details(e) => e.itemprop.replace(val),
80788            Self::Dialog(e) => e.itemprop.replace(val),
80789            Self::Summary(e) => e.itemprop.replace(val),
80790            Self::Slot(e) => e.itemprop.replace(val),
80791            Self::Template(e) => e.itemprop.replace(val),
80792            Self::Acronym(e) => e.itemprop.replace(val),
80793            Self::Applet(e) => e.itemprop.replace(val),
80794            Self::Bgsound(e) => e.itemprop.replace(val),
80795            Self::Big(e) => e.itemprop.replace(val),
80796            Self::Blink(e) => e.itemprop.replace(val),
80797            Self::Center(e) => e.itemprop.replace(val),
80798            Self::Dir(e) => e.itemprop.replace(val),
80799            Self::Font(e) => e.itemprop.replace(val),
80800            Self::Frame(e) => e.itemprop.replace(val),
80801            Self::Frameset(e) => e.itemprop.replace(val),
80802            Self::Image(e) => e.itemprop.replace(val),
80803            Self::Keygen(e) => e.itemprop.replace(val),
80804            Self::Marquee(e) => e.itemprop.replace(val),
80805            Self::Menuitem(e) => e.itemprop.replace(val),
80806            Self::Nobr(e) => e.itemprop.replace(val),
80807            Self::Noembed(e) => e.itemprop.replace(val),
80808            Self::Noframes(e) => e.itemprop.replace(val),
80809            Self::Param(e) => e.itemprop.replace(val),
80810            Self::Plaintext(e) => e.itemprop.replace(val),
80811            Self::Rb(e) => e.itemprop.replace(val),
80812            Self::Rtc(e) => e.itemprop.replace(val),
80813            Self::Spacer(e) => e.itemprop.replace(val),
80814            Self::Strike(e) => e.itemprop.replace(val),
80815            Self::Tt(e) => e.itemprop.replace(val),
80816            Self::Xmp(e) => e.itemprop.replace(val),
80817            Self::H1(e) => e.itemprop.replace(val),
80818            Self::H2(e) => e.itemprop.replace(val),
80819            Self::H3(e) => e.itemprop.replace(val),
80820            Self::H4(e) => e.itemprop.replace(val),
80821            Self::H5(e) => e.itemprop.replace(val),
80822            Self::H6(e) => e.itemprop.replace(val),
80823            Self::Unknown(e) => e.itemprop.replace(val),
80824        };
80825    }
80826
80827    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
80828    ///   
80829
80830    pub fn set_itemref(&mut self, val: AttributeValue<'life>) {
80831        match self {
80832            Self::Html(e) => e.itemref.replace(val),
80833            Self::Base(e) => e.itemref.replace(val),
80834            Self::Head(e) => e.itemref.replace(val),
80835            Self::Link(e) => e.itemref.replace(val),
80836            Self::Meta(e) => e.itemref.replace(val),
80837            Self::Style(e) => e.itemref.replace(val),
80838            Self::Title(e) => e.itemref.replace(val),
80839            Self::Body(e) => e.itemref.replace(val),
80840            Self::Address(e) => e.itemref.replace(val),
80841            Self::Article(e) => e.itemref.replace(val),
80842            Self::Aside(e) => e.itemref.replace(val),
80843            Self::Footer(e) => e.itemref.replace(val),
80844            Self::Header(e) => e.itemref.replace(val),
80845            Self::Hgroup(e) => e.itemref.replace(val),
80846            Self::Main(e) => e.itemref.replace(val),
80847            Self::Nav(e) => e.itemref.replace(val),
80848            Self::Section(e) => e.itemref.replace(val),
80849            Self::Blockquote(e) => e.itemref.replace(val),
80850            Self::Dd(e) => e.itemref.replace(val),
80851            Self::Div(e) => e.itemref.replace(val),
80852            Self::Dl(e) => e.itemref.replace(val),
80853            Self::Dt(e) => e.itemref.replace(val),
80854            Self::Figcaption(e) => e.itemref.replace(val),
80855            Self::Figure(e) => e.itemref.replace(val),
80856            Self::Hr(e) => e.itemref.replace(val),
80857            Self::Li(e) => e.itemref.replace(val),
80858            Self::Menu(e) => e.itemref.replace(val),
80859            Self::Ol(e) => e.itemref.replace(val),
80860            Self::P(e) => e.itemref.replace(val),
80861            Self::Pre(e) => e.itemref.replace(val),
80862            Self::Ul(e) => e.itemref.replace(val),
80863            Self::A(e) => e.itemref.replace(val),
80864            Self::Abbr(e) => e.itemref.replace(val),
80865            Self::B(e) => e.itemref.replace(val),
80866            Self::Bdi(e) => e.itemref.replace(val),
80867            Self::Bdo(e) => e.itemref.replace(val),
80868            Self::Br(e) => e.itemref.replace(val),
80869            Self::Cite(e) => e.itemref.replace(val),
80870            Self::Code(e) => e.itemref.replace(val),
80871            Self::Data(e) => e.itemref.replace(val),
80872            Self::Dfn(e) => e.itemref.replace(val),
80873            Self::Em(e) => e.itemref.replace(val),
80874            Self::I(e) => e.itemref.replace(val),
80875            Self::Kbd(e) => e.itemref.replace(val),
80876            Self::Mark(e) => e.itemref.replace(val),
80877            Self::Q(e) => e.itemref.replace(val),
80878            Self::Rp(e) => e.itemref.replace(val),
80879            Self::Rt(e) => e.itemref.replace(val),
80880            Self::Ruby(e) => e.itemref.replace(val),
80881            Self::S(e) => e.itemref.replace(val),
80882            Self::Samp(e) => e.itemref.replace(val),
80883            Self::Small(e) => e.itemref.replace(val),
80884            Self::Span(e) => e.itemref.replace(val),
80885            Self::Strong(e) => e.itemref.replace(val),
80886            Self::Sub(e) => e.itemref.replace(val),
80887            Self::Sup(e) => e.itemref.replace(val),
80888            Self::Time(e) => e.itemref.replace(val),
80889            Self::U(e) => e.itemref.replace(val),
80890            Self::Var(e) => e.itemref.replace(val),
80891            Self::Wbr(e) => e.itemref.replace(val),
80892            Self::Area(e) => e.itemref.replace(val),
80893            Self::Audio(e) => e.itemref.replace(val),
80894            Self::Img(e) => e.itemref.replace(val),
80895            Self::Map(e) => e.itemref.replace(val),
80896            Self::Track(e) => e.itemref.replace(val),
80897            Self::Video(e) => e.itemref.replace(val),
80898            Self::Embed(e) => e.itemref.replace(val),
80899            Self::Iframe(e) => e.itemref.replace(val),
80900            Self::Object(e) => e.itemref.replace(val),
80901            Self::Picture(e) => e.itemref.replace(val),
80902            Self::Portal(e) => e.itemref.replace(val),
80903            Self::Source(e) => e.itemref.replace(val),
80904            Self::Canvas(e) => e.itemref.replace(val),
80905            Self::Noscript(e) => e.itemref.replace(val),
80906            Self::Script(e) => e.itemref.replace(val),
80907            Self::Del(e) => e.itemref.replace(val),
80908            Self::Ins(e) => e.itemref.replace(val),
80909            Self::Caption(e) => e.itemref.replace(val),
80910            Self::Col(e) => e.itemref.replace(val),
80911            Self::Colgroup(e) => e.itemref.replace(val),
80912            Self::Table(e) => e.itemref.replace(val),
80913            Self::Tbody(e) => e.itemref.replace(val),
80914            Self::Td(e) => e.itemref.replace(val),
80915            Self::Tfoot(e) => e.itemref.replace(val),
80916            Self::Th(e) => e.itemref.replace(val),
80917            Self::Thead(e) => e.itemref.replace(val),
80918            Self::Tr(e) => e.itemref.replace(val),
80919            Self::Button(e) => e.itemref.replace(val),
80920            Self::Datalist(e) => e.itemref.replace(val),
80921            Self::Fieldset(e) => e.itemref.replace(val),
80922            Self::Form(e) => e.itemref.replace(val),
80923            Self::Input(e) => e.itemref.replace(val),
80924            Self::Label(e) => e.itemref.replace(val),
80925            Self::Legend(e) => e.itemref.replace(val),
80926            Self::Meter(e) => e.itemref.replace(val),
80927            Self::Optgroup(e) => e.itemref.replace(val),
80928            Self::Option(e) => e.itemref.replace(val),
80929            Self::Output(e) => e.itemref.replace(val),
80930            Self::Progress(e) => e.itemref.replace(val),
80931            Self::Select(e) => e.itemref.replace(val),
80932            Self::Textarea(e) => e.itemref.replace(val),
80933            Self::Details(e) => e.itemref.replace(val),
80934            Self::Dialog(e) => e.itemref.replace(val),
80935            Self::Summary(e) => e.itemref.replace(val),
80936            Self::Slot(e) => e.itemref.replace(val),
80937            Self::Template(e) => e.itemref.replace(val),
80938            Self::Acronym(e) => e.itemref.replace(val),
80939            Self::Applet(e) => e.itemref.replace(val),
80940            Self::Bgsound(e) => e.itemref.replace(val),
80941            Self::Big(e) => e.itemref.replace(val),
80942            Self::Blink(e) => e.itemref.replace(val),
80943            Self::Center(e) => e.itemref.replace(val),
80944            Self::Dir(e) => e.itemref.replace(val),
80945            Self::Font(e) => e.itemref.replace(val),
80946            Self::Frame(e) => e.itemref.replace(val),
80947            Self::Frameset(e) => e.itemref.replace(val),
80948            Self::Image(e) => e.itemref.replace(val),
80949            Self::Keygen(e) => e.itemref.replace(val),
80950            Self::Marquee(e) => e.itemref.replace(val),
80951            Self::Menuitem(e) => e.itemref.replace(val),
80952            Self::Nobr(e) => e.itemref.replace(val),
80953            Self::Noembed(e) => e.itemref.replace(val),
80954            Self::Noframes(e) => e.itemref.replace(val),
80955            Self::Param(e) => e.itemref.replace(val),
80956            Self::Plaintext(e) => e.itemref.replace(val),
80957            Self::Rb(e) => e.itemref.replace(val),
80958            Self::Rtc(e) => e.itemref.replace(val),
80959            Self::Spacer(e) => e.itemref.replace(val),
80960            Self::Strike(e) => e.itemref.replace(val),
80961            Self::Tt(e) => e.itemref.replace(val),
80962            Self::Xmp(e) => e.itemref.replace(val),
80963            Self::H1(e) => e.itemref.replace(val),
80964            Self::H2(e) => e.itemref.replace(val),
80965            Self::H3(e) => e.itemref.replace(val),
80966            Self::H4(e) => e.itemref.replace(val),
80967            Self::H5(e) => e.itemref.replace(val),
80968            Self::H6(e) => e.itemref.replace(val),
80969            Self::Unknown(e) => e.itemref.replace(val),
80970        };
80971    }
80972
80973    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a href="https://schema.org/" class="external" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
80974    ///   
80975
80976    pub fn set_itemscope(&mut self, val: AttributeValue<'life>) {
80977        match self {
80978            Self::Html(e) => e.itemscope.replace(val),
80979            Self::Base(e) => e.itemscope.replace(val),
80980            Self::Head(e) => e.itemscope.replace(val),
80981            Self::Link(e) => e.itemscope.replace(val),
80982            Self::Meta(e) => e.itemscope.replace(val),
80983            Self::Style(e) => e.itemscope.replace(val),
80984            Self::Title(e) => e.itemscope.replace(val),
80985            Self::Body(e) => e.itemscope.replace(val),
80986            Self::Address(e) => e.itemscope.replace(val),
80987            Self::Article(e) => e.itemscope.replace(val),
80988            Self::Aside(e) => e.itemscope.replace(val),
80989            Self::Footer(e) => e.itemscope.replace(val),
80990            Self::Header(e) => e.itemscope.replace(val),
80991            Self::Hgroup(e) => e.itemscope.replace(val),
80992            Self::Main(e) => e.itemscope.replace(val),
80993            Self::Nav(e) => e.itemscope.replace(val),
80994            Self::Section(e) => e.itemscope.replace(val),
80995            Self::Blockquote(e) => e.itemscope.replace(val),
80996            Self::Dd(e) => e.itemscope.replace(val),
80997            Self::Div(e) => e.itemscope.replace(val),
80998            Self::Dl(e) => e.itemscope.replace(val),
80999            Self::Dt(e) => e.itemscope.replace(val),
81000            Self::Figcaption(e) => e.itemscope.replace(val),
81001            Self::Figure(e) => e.itemscope.replace(val),
81002            Self::Hr(e) => e.itemscope.replace(val),
81003            Self::Li(e) => e.itemscope.replace(val),
81004            Self::Menu(e) => e.itemscope.replace(val),
81005            Self::Ol(e) => e.itemscope.replace(val),
81006            Self::P(e) => e.itemscope.replace(val),
81007            Self::Pre(e) => e.itemscope.replace(val),
81008            Self::Ul(e) => e.itemscope.replace(val),
81009            Self::A(e) => e.itemscope.replace(val),
81010            Self::Abbr(e) => e.itemscope.replace(val),
81011            Self::B(e) => e.itemscope.replace(val),
81012            Self::Bdi(e) => e.itemscope.replace(val),
81013            Self::Bdo(e) => e.itemscope.replace(val),
81014            Self::Br(e) => e.itemscope.replace(val),
81015            Self::Cite(e) => e.itemscope.replace(val),
81016            Self::Code(e) => e.itemscope.replace(val),
81017            Self::Data(e) => e.itemscope.replace(val),
81018            Self::Dfn(e) => e.itemscope.replace(val),
81019            Self::Em(e) => e.itemscope.replace(val),
81020            Self::I(e) => e.itemscope.replace(val),
81021            Self::Kbd(e) => e.itemscope.replace(val),
81022            Self::Mark(e) => e.itemscope.replace(val),
81023            Self::Q(e) => e.itemscope.replace(val),
81024            Self::Rp(e) => e.itemscope.replace(val),
81025            Self::Rt(e) => e.itemscope.replace(val),
81026            Self::Ruby(e) => e.itemscope.replace(val),
81027            Self::S(e) => e.itemscope.replace(val),
81028            Self::Samp(e) => e.itemscope.replace(val),
81029            Self::Small(e) => e.itemscope.replace(val),
81030            Self::Span(e) => e.itemscope.replace(val),
81031            Self::Strong(e) => e.itemscope.replace(val),
81032            Self::Sub(e) => e.itemscope.replace(val),
81033            Self::Sup(e) => e.itemscope.replace(val),
81034            Self::Time(e) => e.itemscope.replace(val),
81035            Self::U(e) => e.itemscope.replace(val),
81036            Self::Var(e) => e.itemscope.replace(val),
81037            Self::Wbr(e) => e.itemscope.replace(val),
81038            Self::Area(e) => e.itemscope.replace(val),
81039            Self::Audio(e) => e.itemscope.replace(val),
81040            Self::Img(e) => e.itemscope.replace(val),
81041            Self::Map(e) => e.itemscope.replace(val),
81042            Self::Track(e) => e.itemscope.replace(val),
81043            Self::Video(e) => e.itemscope.replace(val),
81044            Self::Embed(e) => e.itemscope.replace(val),
81045            Self::Iframe(e) => e.itemscope.replace(val),
81046            Self::Object(e) => e.itemscope.replace(val),
81047            Self::Picture(e) => e.itemscope.replace(val),
81048            Self::Portal(e) => e.itemscope.replace(val),
81049            Self::Source(e) => e.itemscope.replace(val),
81050            Self::Canvas(e) => e.itemscope.replace(val),
81051            Self::Noscript(e) => e.itemscope.replace(val),
81052            Self::Script(e) => e.itemscope.replace(val),
81053            Self::Del(e) => e.itemscope.replace(val),
81054            Self::Ins(e) => e.itemscope.replace(val),
81055            Self::Caption(e) => e.itemscope.replace(val),
81056            Self::Col(e) => e.itemscope.replace(val),
81057            Self::Colgroup(e) => e.itemscope.replace(val),
81058            Self::Table(e) => e.itemscope.replace(val),
81059            Self::Tbody(e) => e.itemscope.replace(val),
81060            Self::Td(e) => e.itemscope.replace(val),
81061            Self::Tfoot(e) => e.itemscope.replace(val),
81062            Self::Th(e) => e.itemscope.replace(val),
81063            Self::Thead(e) => e.itemscope.replace(val),
81064            Self::Tr(e) => e.itemscope.replace(val),
81065            Self::Button(e) => e.itemscope.replace(val),
81066            Self::Datalist(e) => e.itemscope.replace(val),
81067            Self::Fieldset(e) => e.itemscope.replace(val),
81068            Self::Form(e) => e.itemscope.replace(val),
81069            Self::Input(e) => e.itemscope.replace(val),
81070            Self::Label(e) => e.itemscope.replace(val),
81071            Self::Legend(e) => e.itemscope.replace(val),
81072            Self::Meter(e) => e.itemscope.replace(val),
81073            Self::Optgroup(e) => e.itemscope.replace(val),
81074            Self::Option(e) => e.itemscope.replace(val),
81075            Self::Output(e) => e.itemscope.replace(val),
81076            Self::Progress(e) => e.itemscope.replace(val),
81077            Self::Select(e) => e.itemscope.replace(val),
81078            Self::Textarea(e) => e.itemscope.replace(val),
81079            Self::Details(e) => e.itemscope.replace(val),
81080            Self::Dialog(e) => e.itemscope.replace(val),
81081            Self::Summary(e) => e.itemscope.replace(val),
81082            Self::Slot(e) => e.itemscope.replace(val),
81083            Self::Template(e) => e.itemscope.replace(val),
81084            Self::Acronym(e) => e.itemscope.replace(val),
81085            Self::Applet(e) => e.itemscope.replace(val),
81086            Self::Bgsound(e) => e.itemscope.replace(val),
81087            Self::Big(e) => e.itemscope.replace(val),
81088            Self::Blink(e) => e.itemscope.replace(val),
81089            Self::Center(e) => e.itemscope.replace(val),
81090            Self::Dir(e) => e.itemscope.replace(val),
81091            Self::Font(e) => e.itemscope.replace(val),
81092            Self::Frame(e) => e.itemscope.replace(val),
81093            Self::Frameset(e) => e.itemscope.replace(val),
81094            Self::Image(e) => e.itemscope.replace(val),
81095            Self::Keygen(e) => e.itemscope.replace(val),
81096            Self::Marquee(e) => e.itemscope.replace(val),
81097            Self::Menuitem(e) => e.itemscope.replace(val),
81098            Self::Nobr(e) => e.itemscope.replace(val),
81099            Self::Noembed(e) => e.itemscope.replace(val),
81100            Self::Noframes(e) => e.itemscope.replace(val),
81101            Self::Param(e) => e.itemscope.replace(val),
81102            Self::Plaintext(e) => e.itemscope.replace(val),
81103            Self::Rb(e) => e.itemscope.replace(val),
81104            Self::Rtc(e) => e.itemscope.replace(val),
81105            Self::Spacer(e) => e.itemscope.replace(val),
81106            Self::Strike(e) => e.itemscope.replace(val),
81107            Self::Tt(e) => e.itemscope.replace(val),
81108            Self::Xmp(e) => e.itemscope.replace(val),
81109            Self::H1(e) => e.itemscope.replace(val),
81110            Self::H2(e) => e.itemscope.replace(val),
81111            Self::H3(e) => e.itemscope.replace(val),
81112            Self::H4(e) => e.itemscope.replace(val),
81113            Self::H5(e) => e.itemscope.replace(val),
81114            Self::H6(e) => e.itemscope.replace(val),
81115            Self::Unknown(e) => e.itemscope.replace(val),
81116        };
81117    }
81118
81119    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
81120    ///   
81121
81122    pub fn set_itemtype(&mut self, val: AttributeValue<'life>) {
81123        match self {
81124            Self::Html(e) => e.itemtype.replace(val),
81125            Self::Base(e) => e.itemtype.replace(val),
81126            Self::Head(e) => e.itemtype.replace(val),
81127            Self::Link(e) => e.itemtype.replace(val),
81128            Self::Meta(e) => e.itemtype.replace(val),
81129            Self::Style(e) => e.itemtype.replace(val),
81130            Self::Title(e) => e.itemtype.replace(val),
81131            Self::Body(e) => e.itemtype.replace(val),
81132            Self::Address(e) => e.itemtype.replace(val),
81133            Self::Article(e) => e.itemtype.replace(val),
81134            Self::Aside(e) => e.itemtype.replace(val),
81135            Self::Footer(e) => e.itemtype.replace(val),
81136            Self::Header(e) => e.itemtype.replace(val),
81137            Self::Hgroup(e) => e.itemtype.replace(val),
81138            Self::Main(e) => e.itemtype.replace(val),
81139            Self::Nav(e) => e.itemtype.replace(val),
81140            Self::Section(e) => e.itemtype.replace(val),
81141            Self::Blockquote(e) => e.itemtype.replace(val),
81142            Self::Dd(e) => e.itemtype.replace(val),
81143            Self::Div(e) => e.itemtype.replace(val),
81144            Self::Dl(e) => e.itemtype.replace(val),
81145            Self::Dt(e) => e.itemtype.replace(val),
81146            Self::Figcaption(e) => e.itemtype.replace(val),
81147            Self::Figure(e) => e.itemtype.replace(val),
81148            Self::Hr(e) => e.itemtype.replace(val),
81149            Self::Li(e) => e.itemtype.replace(val),
81150            Self::Menu(e) => e.itemtype.replace(val),
81151            Self::Ol(e) => e.itemtype.replace(val),
81152            Self::P(e) => e.itemtype.replace(val),
81153            Self::Pre(e) => e.itemtype.replace(val),
81154            Self::Ul(e) => e.itemtype.replace(val),
81155            Self::A(e) => e.itemtype.replace(val),
81156            Self::Abbr(e) => e.itemtype.replace(val),
81157            Self::B(e) => e.itemtype.replace(val),
81158            Self::Bdi(e) => e.itemtype.replace(val),
81159            Self::Bdo(e) => e.itemtype.replace(val),
81160            Self::Br(e) => e.itemtype.replace(val),
81161            Self::Cite(e) => e.itemtype.replace(val),
81162            Self::Code(e) => e.itemtype.replace(val),
81163            Self::Data(e) => e.itemtype.replace(val),
81164            Self::Dfn(e) => e.itemtype.replace(val),
81165            Self::Em(e) => e.itemtype.replace(val),
81166            Self::I(e) => e.itemtype.replace(val),
81167            Self::Kbd(e) => e.itemtype.replace(val),
81168            Self::Mark(e) => e.itemtype.replace(val),
81169            Self::Q(e) => e.itemtype.replace(val),
81170            Self::Rp(e) => e.itemtype.replace(val),
81171            Self::Rt(e) => e.itemtype.replace(val),
81172            Self::Ruby(e) => e.itemtype.replace(val),
81173            Self::S(e) => e.itemtype.replace(val),
81174            Self::Samp(e) => e.itemtype.replace(val),
81175            Self::Small(e) => e.itemtype.replace(val),
81176            Self::Span(e) => e.itemtype.replace(val),
81177            Self::Strong(e) => e.itemtype.replace(val),
81178            Self::Sub(e) => e.itemtype.replace(val),
81179            Self::Sup(e) => e.itemtype.replace(val),
81180            Self::Time(e) => e.itemtype.replace(val),
81181            Self::U(e) => e.itemtype.replace(val),
81182            Self::Var(e) => e.itemtype.replace(val),
81183            Self::Wbr(e) => e.itemtype.replace(val),
81184            Self::Area(e) => e.itemtype.replace(val),
81185            Self::Audio(e) => e.itemtype.replace(val),
81186            Self::Img(e) => e.itemtype.replace(val),
81187            Self::Map(e) => e.itemtype.replace(val),
81188            Self::Track(e) => e.itemtype.replace(val),
81189            Self::Video(e) => e.itemtype.replace(val),
81190            Self::Embed(e) => e.itemtype.replace(val),
81191            Self::Iframe(e) => e.itemtype.replace(val),
81192            Self::Object(e) => e.itemtype.replace(val),
81193            Self::Picture(e) => e.itemtype.replace(val),
81194            Self::Portal(e) => e.itemtype.replace(val),
81195            Self::Source(e) => e.itemtype.replace(val),
81196            Self::Canvas(e) => e.itemtype.replace(val),
81197            Self::Noscript(e) => e.itemtype.replace(val),
81198            Self::Script(e) => e.itemtype.replace(val),
81199            Self::Del(e) => e.itemtype.replace(val),
81200            Self::Ins(e) => e.itemtype.replace(val),
81201            Self::Caption(e) => e.itemtype.replace(val),
81202            Self::Col(e) => e.itemtype.replace(val),
81203            Self::Colgroup(e) => e.itemtype.replace(val),
81204            Self::Table(e) => e.itemtype.replace(val),
81205            Self::Tbody(e) => e.itemtype.replace(val),
81206            Self::Td(e) => e.itemtype.replace(val),
81207            Self::Tfoot(e) => e.itemtype.replace(val),
81208            Self::Th(e) => e.itemtype.replace(val),
81209            Self::Thead(e) => e.itemtype.replace(val),
81210            Self::Tr(e) => e.itemtype.replace(val),
81211            Self::Button(e) => e.itemtype.replace(val),
81212            Self::Datalist(e) => e.itemtype.replace(val),
81213            Self::Fieldset(e) => e.itemtype.replace(val),
81214            Self::Form(e) => e.itemtype.replace(val),
81215            Self::Input(e) => e.itemtype.replace(val),
81216            Self::Label(e) => e.itemtype.replace(val),
81217            Self::Legend(e) => e.itemtype.replace(val),
81218            Self::Meter(e) => e.itemtype.replace(val),
81219            Self::Optgroup(e) => e.itemtype.replace(val),
81220            Self::Option(e) => e.itemtype.replace(val),
81221            Self::Output(e) => e.itemtype.replace(val),
81222            Self::Progress(e) => e.itemtype.replace(val),
81223            Self::Select(e) => e.itemtype.replace(val),
81224            Self::Textarea(e) => e.itemtype.replace(val),
81225            Self::Details(e) => e.itemtype.replace(val),
81226            Self::Dialog(e) => e.itemtype.replace(val),
81227            Self::Summary(e) => e.itemtype.replace(val),
81228            Self::Slot(e) => e.itemtype.replace(val),
81229            Self::Template(e) => e.itemtype.replace(val),
81230            Self::Acronym(e) => e.itemtype.replace(val),
81231            Self::Applet(e) => e.itemtype.replace(val),
81232            Self::Bgsound(e) => e.itemtype.replace(val),
81233            Self::Big(e) => e.itemtype.replace(val),
81234            Self::Blink(e) => e.itemtype.replace(val),
81235            Self::Center(e) => e.itemtype.replace(val),
81236            Self::Dir(e) => e.itemtype.replace(val),
81237            Self::Font(e) => e.itemtype.replace(val),
81238            Self::Frame(e) => e.itemtype.replace(val),
81239            Self::Frameset(e) => e.itemtype.replace(val),
81240            Self::Image(e) => e.itemtype.replace(val),
81241            Self::Keygen(e) => e.itemtype.replace(val),
81242            Self::Marquee(e) => e.itemtype.replace(val),
81243            Self::Menuitem(e) => e.itemtype.replace(val),
81244            Self::Nobr(e) => e.itemtype.replace(val),
81245            Self::Noembed(e) => e.itemtype.replace(val),
81246            Self::Noframes(e) => e.itemtype.replace(val),
81247            Self::Param(e) => e.itemtype.replace(val),
81248            Self::Plaintext(e) => e.itemtype.replace(val),
81249            Self::Rb(e) => e.itemtype.replace(val),
81250            Self::Rtc(e) => e.itemtype.replace(val),
81251            Self::Spacer(e) => e.itemtype.replace(val),
81252            Self::Strike(e) => e.itemtype.replace(val),
81253            Self::Tt(e) => e.itemtype.replace(val),
81254            Self::Xmp(e) => e.itemtype.replace(val),
81255            Self::H1(e) => e.itemtype.replace(val),
81256            Self::H2(e) => e.itemtype.replace(val),
81257            Self::H3(e) => e.itemtype.replace(val),
81258            Self::H4(e) => e.itemtype.replace(val),
81259            Self::H5(e) => e.itemtype.replace(val),
81260            Self::H6(e) => e.itemtype.replace(val),
81261            Self::Unknown(e) => e.itemtype.replace(val),
81262        };
81263    }
81264
81265    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" class="external" href="https://datatracker.ietf.org/doc/html/rfc5646">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
81266    ///   
81267
81268    pub fn set_lang(&mut self, val: AttributeValue<'life>) {
81269        match self {
81270            Self::Html(e) => e.lang.replace(val),
81271            Self::Base(e) => e.lang.replace(val),
81272            Self::Head(e) => e.lang.replace(val),
81273            Self::Link(e) => e.lang.replace(val),
81274            Self::Meta(e) => e.lang.replace(val),
81275            Self::Style(e) => e.lang.replace(val),
81276            Self::Title(e) => e.lang.replace(val),
81277            Self::Body(e) => e.lang.replace(val),
81278            Self::Address(e) => e.lang.replace(val),
81279            Self::Article(e) => e.lang.replace(val),
81280            Self::Aside(e) => e.lang.replace(val),
81281            Self::Footer(e) => e.lang.replace(val),
81282            Self::Header(e) => e.lang.replace(val),
81283            Self::Hgroup(e) => e.lang.replace(val),
81284            Self::Main(e) => e.lang.replace(val),
81285            Self::Nav(e) => e.lang.replace(val),
81286            Self::Section(e) => e.lang.replace(val),
81287            Self::Blockquote(e) => e.lang.replace(val),
81288            Self::Dd(e) => e.lang.replace(val),
81289            Self::Div(e) => e.lang.replace(val),
81290            Self::Dl(e) => e.lang.replace(val),
81291            Self::Dt(e) => e.lang.replace(val),
81292            Self::Figcaption(e) => e.lang.replace(val),
81293            Self::Figure(e) => e.lang.replace(val),
81294            Self::Hr(e) => e.lang.replace(val),
81295            Self::Li(e) => e.lang.replace(val),
81296            Self::Menu(e) => e.lang.replace(val),
81297            Self::Ol(e) => e.lang.replace(val),
81298            Self::P(e) => e.lang.replace(val),
81299            Self::Pre(e) => e.lang.replace(val),
81300            Self::Ul(e) => e.lang.replace(val),
81301            Self::A(e) => e.lang.replace(val),
81302            Self::Abbr(e) => e.lang.replace(val),
81303            Self::B(e) => e.lang.replace(val),
81304            Self::Bdi(e) => e.lang.replace(val),
81305            Self::Bdo(e) => e.lang.replace(val),
81306            Self::Br(e) => e.lang.replace(val),
81307            Self::Cite(e) => e.lang.replace(val),
81308            Self::Code(e) => e.lang.replace(val),
81309            Self::Data(e) => e.lang.replace(val),
81310            Self::Dfn(e) => e.lang.replace(val),
81311            Self::Em(e) => e.lang.replace(val),
81312            Self::I(e) => e.lang.replace(val),
81313            Self::Kbd(e) => e.lang.replace(val),
81314            Self::Mark(e) => e.lang.replace(val),
81315            Self::Q(e) => e.lang.replace(val),
81316            Self::Rp(e) => e.lang.replace(val),
81317            Self::Rt(e) => e.lang.replace(val),
81318            Self::Ruby(e) => e.lang.replace(val),
81319            Self::S(e) => e.lang.replace(val),
81320            Self::Samp(e) => e.lang.replace(val),
81321            Self::Small(e) => e.lang.replace(val),
81322            Self::Span(e) => e.lang.replace(val),
81323            Self::Strong(e) => e.lang.replace(val),
81324            Self::Sub(e) => e.lang.replace(val),
81325            Self::Sup(e) => e.lang.replace(val),
81326            Self::Time(e) => e.lang.replace(val),
81327            Self::U(e) => e.lang.replace(val),
81328            Self::Var(e) => e.lang.replace(val),
81329            Self::Wbr(e) => e.lang.replace(val),
81330            Self::Area(e) => e.lang.replace(val),
81331            Self::Audio(e) => e.lang.replace(val),
81332            Self::Img(e) => e.lang.replace(val),
81333            Self::Map(e) => e.lang.replace(val),
81334            Self::Track(e) => e.lang.replace(val),
81335            Self::Video(e) => e.lang.replace(val),
81336            Self::Embed(e) => e.lang.replace(val),
81337            Self::Iframe(e) => e.lang.replace(val),
81338            Self::Object(e) => e.lang.replace(val),
81339            Self::Picture(e) => e.lang.replace(val),
81340            Self::Portal(e) => e.lang.replace(val),
81341            Self::Source(e) => e.lang.replace(val),
81342            Self::Canvas(e) => e.lang.replace(val),
81343            Self::Noscript(e) => e.lang.replace(val),
81344            Self::Script(e) => e.lang.replace(val),
81345            Self::Del(e) => e.lang.replace(val),
81346            Self::Ins(e) => e.lang.replace(val),
81347            Self::Caption(e) => e.lang.replace(val),
81348            Self::Col(e) => e.lang.replace(val),
81349            Self::Colgroup(e) => e.lang.replace(val),
81350            Self::Table(e) => e.lang.replace(val),
81351            Self::Tbody(e) => e.lang.replace(val),
81352            Self::Td(e) => e.lang.replace(val),
81353            Self::Tfoot(e) => e.lang.replace(val),
81354            Self::Th(e) => e.lang.replace(val),
81355            Self::Thead(e) => e.lang.replace(val),
81356            Self::Tr(e) => e.lang.replace(val),
81357            Self::Button(e) => e.lang.replace(val),
81358            Self::Datalist(e) => e.lang.replace(val),
81359            Self::Fieldset(e) => e.lang.replace(val),
81360            Self::Form(e) => e.lang.replace(val),
81361            Self::Input(e) => e.lang.replace(val),
81362            Self::Label(e) => e.lang.replace(val),
81363            Self::Legend(e) => e.lang.replace(val),
81364            Self::Meter(e) => e.lang.replace(val),
81365            Self::Optgroup(e) => e.lang.replace(val),
81366            Self::Option(e) => e.lang.replace(val),
81367            Self::Output(e) => e.lang.replace(val),
81368            Self::Progress(e) => e.lang.replace(val),
81369            Self::Select(e) => e.lang.replace(val),
81370            Self::Textarea(e) => e.lang.replace(val),
81371            Self::Details(e) => e.lang.replace(val),
81372            Self::Dialog(e) => e.lang.replace(val),
81373            Self::Summary(e) => e.lang.replace(val),
81374            Self::Slot(e) => e.lang.replace(val),
81375            Self::Template(e) => e.lang.replace(val),
81376            Self::Acronym(e) => e.lang.replace(val),
81377            Self::Applet(e) => e.lang.replace(val),
81378            Self::Bgsound(e) => e.lang.replace(val),
81379            Self::Big(e) => e.lang.replace(val),
81380            Self::Blink(e) => e.lang.replace(val),
81381            Self::Center(e) => e.lang.replace(val),
81382            Self::Dir(e) => e.lang.replace(val),
81383            Self::Font(e) => e.lang.replace(val),
81384            Self::Frame(e) => e.lang.replace(val),
81385            Self::Frameset(e) => e.lang.replace(val),
81386            Self::Image(e) => e.lang.replace(val),
81387            Self::Keygen(e) => e.lang.replace(val),
81388            Self::Marquee(e) => e.lang.replace(val),
81389            Self::Menuitem(e) => e.lang.replace(val),
81390            Self::Nobr(e) => e.lang.replace(val),
81391            Self::Noembed(e) => e.lang.replace(val),
81392            Self::Noframes(e) => e.lang.replace(val),
81393            Self::Param(e) => e.lang.replace(val),
81394            Self::Plaintext(e) => e.lang.replace(val),
81395            Self::Rb(e) => e.lang.replace(val),
81396            Self::Rtc(e) => e.lang.replace(val),
81397            Self::Spacer(e) => e.lang.replace(val),
81398            Self::Strike(e) => e.lang.replace(val),
81399            Self::Tt(e) => e.lang.replace(val),
81400            Self::Xmp(e) => e.lang.replace(val),
81401            Self::H1(e) => e.lang.replace(val),
81402            Self::H2(e) => e.lang.replace(val),
81403            Self::H3(e) => e.lang.replace(val),
81404            Self::H4(e) => e.lang.replace(val),
81405            Self::H5(e) => e.lang.replace(val),
81406            Self::H6(e) => e.lang.replace(val),
81407            Self::Unknown(e) => e.lang.replace(val),
81408        };
81409    }
81410
81411    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
81412    ///   
81413
81414    pub fn set_nonce(&mut self, val: AttributeValue<'life>) {
81415        match self {
81416            Self::Html(e) => e.nonce.replace(val),
81417            Self::Base(e) => e.nonce.replace(val),
81418            Self::Head(e) => e.nonce.replace(val),
81419            Self::Link(e) => e.nonce.replace(val),
81420            Self::Meta(e) => e.nonce.replace(val),
81421            Self::Style(e) => e.nonce.replace(val),
81422            Self::Title(e) => e.nonce.replace(val),
81423            Self::Body(e) => e.nonce.replace(val),
81424            Self::Address(e) => e.nonce.replace(val),
81425            Self::Article(e) => e.nonce.replace(val),
81426            Self::Aside(e) => e.nonce.replace(val),
81427            Self::Footer(e) => e.nonce.replace(val),
81428            Self::Header(e) => e.nonce.replace(val),
81429            Self::Hgroup(e) => e.nonce.replace(val),
81430            Self::Main(e) => e.nonce.replace(val),
81431            Self::Nav(e) => e.nonce.replace(val),
81432            Self::Section(e) => e.nonce.replace(val),
81433            Self::Blockquote(e) => e.nonce.replace(val),
81434            Self::Dd(e) => e.nonce.replace(val),
81435            Self::Div(e) => e.nonce.replace(val),
81436            Self::Dl(e) => e.nonce.replace(val),
81437            Self::Dt(e) => e.nonce.replace(val),
81438            Self::Figcaption(e) => e.nonce.replace(val),
81439            Self::Figure(e) => e.nonce.replace(val),
81440            Self::Hr(e) => e.nonce.replace(val),
81441            Self::Li(e) => e.nonce.replace(val),
81442            Self::Menu(e) => e.nonce.replace(val),
81443            Self::Ol(e) => e.nonce.replace(val),
81444            Self::P(e) => e.nonce.replace(val),
81445            Self::Pre(e) => e.nonce.replace(val),
81446            Self::Ul(e) => e.nonce.replace(val),
81447            Self::A(e) => e.nonce.replace(val),
81448            Self::Abbr(e) => e.nonce.replace(val),
81449            Self::B(e) => e.nonce.replace(val),
81450            Self::Bdi(e) => e.nonce.replace(val),
81451            Self::Bdo(e) => e.nonce.replace(val),
81452            Self::Br(e) => e.nonce.replace(val),
81453            Self::Cite(e) => e.nonce.replace(val),
81454            Self::Code(e) => e.nonce.replace(val),
81455            Self::Data(e) => e.nonce.replace(val),
81456            Self::Dfn(e) => e.nonce.replace(val),
81457            Self::Em(e) => e.nonce.replace(val),
81458            Self::I(e) => e.nonce.replace(val),
81459            Self::Kbd(e) => e.nonce.replace(val),
81460            Self::Mark(e) => e.nonce.replace(val),
81461            Self::Q(e) => e.nonce.replace(val),
81462            Self::Rp(e) => e.nonce.replace(val),
81463            Self::Rt(e) => e.nonce.replace(val),
81464            Self::Ruby(e) => e.nonce.replace(val),
81465            Self::S(e) => e.nonce.replace(val),
81466            Self::Samp(e) => e.nonce.replace(val),
81467            Self::Small(e) => e.nonce.replace(val),
81468            Self::Span(e) => e.nonce.replace(val),
81469            Self::Strong(e) => e.nonce.replace(val),
81470            Self::Sub(e) => e.nonce.replace(val),
81471            Self::Sup(e) => e.nonce.replace(val),
81472            Self::Time(e) => e.nonce.replace(val),
81473            Self::U(e) => e.nonce.replace(val),
81474            Self::Var(e) => e.nonce.replace(val),
81475            Self::Wbr(e) => e.nonce.replace(val),
81476            Self::Area(e) => e.nonce.replace(val),
81477            Self::Audio(e) => e.nonce.replace(val),
81478            Self::Img(e) => e.nonce.replace(val),
81479            Self::Map(e) => e.nonce.replace(val),
81480            Self::Track(e) => e.nonce.replace(val),
81481            Self::Video(e) => e.nonce.replace(val),
81482            Self::Embed(e) => e.nonce.replace(val),
81483            Self::Iframe(e) => e.nonce.replace(val),
81484            Self::Object(e) => e.nonce.replace(val),
81485            Self::Picture(e) => e.nonce.replace(val),
81486            Self::Portal(e) => e.nonce.replace(val),
81487            Self::Source(e) => e.nonce.replace(val),
81488            Self::Canvas(e) => e.nonce.replace(val),
81489            Self::Noscript(e) => e.nonce.replace(val),
81490            Self::Script(e) => e.nonce.replace(val),
81491            Self::Del(e) => e.nonce.replace(val),
81492            Self::Ins(e) => e.nonce.replace(val),
81493            Self::Caption(e) => e.nonce.replace(val),
81494            Self::Col(e) => e.nonce.replace(val),
81495            Self::Colgroup(e) => e.nonce.replace(val),
81496            Self::Table(e) => e.nonce.replace(val),
81497            Self::Tbody(e) => e.nonce.replace(val),
81498            Self::Td(e) => e.nonce.replace(val),
81499            Self::Tfoot(e) => e.nonce.replace(val),
81500            Self::Th(e) => e.nonce.replace(val),
81501            Self::Thead(e) => e.nonce.replace(val),
81502            Self::Tr(e) => e.nonce.replace(val),
81503            Self::Button(e) => e.nonce.replace(val),
81504            Self::Datalist(e) => e.nonce.replace(val),
81505            Self::Fieldset(e) => e.nonce.replace(val),
81506            Self::Form(e) => e.nonce.replace(val),
81507            Self::Input(e) => e.nonce.replace(val),
81508            Self::Label(e) => e.nonce.replace(val),
81509            Self::Legend(e) => e.nonce.replace(val),
81510            Self::Meter(e) => e.nonce.replace(val),
81511            Self::Optgroup(e) => e.nonce.replace(val),
81512            Self::Option(e) => e.nonce.replace(val),
81513            Self::Output(e) => e.nonce.replace(val),
81514            Self::Progress(e) => e.nonce.replace(val),
81515            Self::Select(e) => e.nonce.replace(val),
81516            Self::Textarea(e) => e.nonce.replace(val),
81517            Self::Details(e) => e.nonce.replace(val),
81518            Self::Dialog(e) => e.nonce.replace(val),
81519            Self::Summary(e) => e.nonce.replace(val),
81520            Self::Slot(e) => e.nonce.replace(val),
81521            Self::Template(e) => e.nonce.replace(val),
81522            Self::Acronym(e) => e.nonce.replace(val),
81523            Self::Applet(e) => e.nonce.replace(val),
81524            Self::Bgsound(e) => e.nonce.replace(val),
81525            Self::Big(e) => e.nonce.replace(val),
81526            Self::Blink(e) => e.nonce.replace(val),
81527            Self::Center(e) => e.nonce.replace(val),
81528            Self::Dir(e) => e.nonce.replace(val),
81529            Self::Font(e) => e.nonce.replace(val),
81530            Self::Frame(e) => e.nonce.replace(val),
81531            Self::Frameset(e) => e.nonce.replace(val),
81532            Self::Image(e) => e.nonce.replace(val),
81533            Self::Keygen(e) => e.nonce.replace(val),
81534            Self::Marquee(e) => e.nonce.replace(val),
81535            Self::Menuitem(e) => e.nonce.replace(val),
81536            Self::Nobr(e) => e.nonce.replace(val),
81537            Self::Noembed(e) => e.nonce.replace(val),
81538            Self::Noframes(e) => e.nonce.replace(val),
81539            Self::Param(e) => e.nonce.replace(val),
81540            Self::Plaintext(e) => e.nonce.replace(val),
81541            Self::Rb(e) => e.nonce.replace(val),
81542            Self::Rtc(e) => e.nonce.replace(val),
81543            Self::Spacer(e) => e.nonce.replace(val),
81544            Self::Strike(e) => e.nonce.replace(val),
81545            Self::Tt(e) => e.nonce.replace(val),
81546            Self::Xmp(e) => e.nonce.replace(val),
81547            Self::H1(e) => e.nonce.replace(val),
81548            Self::H2(e) => e.nonce.replace(val),
81549            Self::H3(e) => e.nonce.replace(val),
81550            Self::H4(e) => e.nonce.replace(val),
81551            Self::H5(e) => e.nonce.replace(val),
81552            Self::H6(e) => e.nonce.replace(val),
81553            Self::Unknown(e) => e.nonce.replace(val),
81554        };
81555    }
81556
81557    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
81558    ///   
81559
81560    pub fn set_part(&mut self, val: AttributeValue<'life>) {
81561        match self {
81562            Self::Html(e) => e.part.replace(val),
81563            Self::Base(e) => e.part.replace(val),
81564            Self::Head(e) => e.part.replace(val),
81565            Self::Link(e) => e.part.replace(val),
81566            Self::Meta(e) => e.part.replace(val),
81567            Self::Style(e) => e.part.replace(val),
81568            Self::Title(e) => e.part.replace(val),
81569            Self::Body(e) => e.part.replace(val),
81570            Self::Address(e) => e.part.replace(val),
81571            Self::Article(e) => e.part.replace(val),
81572            Self::Aside(e) => e.part.replace(val),
81573            Self::Footer(e) => e.part.replace(val),
81574            Self::Header(e) => e.part.replace(val),
81575            Self::Hgroup(e) => e.part.replace(val),
81576            Self::Main(e) => e.part.replace(val),
81577            Self::Nav(e) => e.part.replace(val),
81578            Self::Section(e) => e.part.replace(val),
81579            Self::Blockquote(e) => e.part.replace(val),
81580            Self::Dd(e) => e.part.replace(val),
81581            Self::Div(e) => e.part.replace(val),
81582            Self::Dl(e) => e.part.replace(val),
81583            Self::Dt(e) => e.part.replace(val),
81584            Self::Figcaption(e) => e.part.replace(val),
81585            Self::Figure(e) => e.part.replace(val),
81586            Self::Hr(e) => e.part.replace(val),
81587            Self::Li(e) => e.part.replace(val),
81588            Self::Menu(e) => e.part.replace(val),
81589            Self::Ol(e) => e.part.replace(val),
81590            Self::P(e) => e.part.replace(val),
81591            Self::Pre(e) => e.part.replace(val),
81592            Self::Ul(e) => e.part.replace(val),
81593            Self::A(e) => e.part.replace(val),
81594            Self::Abbr(e) => e.part.replace(val),
81595            Self::B(e) => e.part.replace(val),
81596            Self::Bdi(e) => e.part.replace(val),
81597            Self::Bdo(e) => e.part.replace(val),
81598            Self::Br(e) => e.part.replace(val),
81599            Self::Cite(e) => e.part.replace(val),
81600            Self::Code(e) => e.part.replace(val),
81601            Self::Data(e) => e.part.replace(val),
81602            Self::Dfn(e) => e.part.replace(val),
81603            Self::Em(e) => e.part.replace(val),
81604            Self::I(e) => e.part.replace(val),
81605            Self::Kbd(e) => e.part.replace(val),
81606            Self::Mark(e) => e.part.replace(val),
81607            Self::Q(e) => e.part.replace(val),
81608            Self::Rp(e) => e.part.replace(val),
81609            Self::Rt(e) => e.part.replace(val),
81610            Self::Ruby(e) => e.part.replace(val),
81611            Self::S(e) => e.part.replace(val),
81612            Self::Samp(e) => e.part.replace(val),
81613            Self::Small(e) => e.part.replace(val),
81614            Self::Span(e) => e.part.replace(val),
81615            Self::Strong(e) => e.part.replace(val),
81616            Self::Sub(e) => e.part.replace(val),
81617            Self::Sup(e) => e.part.replace(val),
81618            Self::Time(e) => e.part.replace(val),
81619            Self::U(e) => e.part.replace(val),
81620            Self::Var(e) => e.part.replace(val),
81621            Self::Wbr(e) => e.part.replace(val),
81622            Self::Area(e) => e.part.replace(val),
81623            Self::Audio(e) => e.part.replace(val),
81624            Self::Img(e) => e.part.replace(val),
81625            Self::Map(e) => e.part.replace(val),
81626            Self::Track(e) => e.part.replace(val),
81627            Self::Video(e) => e.part.replace(val),
81628            Self::Embed(e) => e.part.replace(val),
81629            Self::Iframe(e) => e.part.replace(val),
81630            Self::Object(e) => e.part.replace(val),
81631            Self::Picture(e) => e.part.replace(val),
81632            Self::Portal(e) => e.part.replace(val),
81633            Self::Source(e) => e.part.replace(val),
81634            Self::Canvas(e) => e.part.replace(val),
81635            Self::Noscript(e) => e.part.replace(val),
81636            Self::Script(e) => e.part.replace(val),
81637            Self::Del(e) => e.part.replace(val),
81638            Self::Ins(e) => e.part.replace(val),
81639            Self::Caption(e) => e.part.replace(val),
81640            Self::Col(e) => e.part.replace(val),
81641            Self::Colgroup(e) => e.part.replace(val),
81642            Self::Table(e) => e.part.replace(val),
81643            Self::Tbody(e) => e.part.replace(val),
81644            Self::Td(e) => e.part.replace(val),
81645            Self::Tfoot(e) => e.part.replace(val),
81646            Self::Th(e) => e.part.replace(val),
81647            Self::Thead(e) => e.part.replace(val),
81648            Self::Tr(e) => e.part.replace(val),
81649            Self::Button(e) => e.part.replace(val),
81650            Self::Datalist(e) => e.part.replace(val),
81651            Self::Fieldset(e) => e.part.replace(val),
81652            Self::Form(e) => e.part.replace(val),
81653            Self::Input(e) => e.part.replace(val),
81654            Self::Label(e) => e.part.replace(val),
81655            Self::Legend(e) => e.part.replace(val),
81656            Self::Meter(e) => e.part.replace(val),
81657            Self::Optgroup(e) => e.part.replace(val),
81658            Self::Option(e) => e.part.replace(val),
81659            Self::Output(e) => e.part.replace(val),
81660            Self::Progress(e) => e.part.replace(val),
81661            Self::Select(e) => e.part.replace(val),
81662            Self::Textarea(e) => e.part.replace(val),
81663            Self::Details(e) => e.part.replace(val),
81664            Self::Dialog(e) => e.part.replace(val),
81665            Self::Summary(e) => e.part.replace(val),
81666            Self::Slot(e) => e.part.replace(val),
81667            Self::Template(e) => e.part.replace(val),
81668            Self::Acronym(e) => e.part.replace(val),
81669            Self::Applet(e) => e.part.replace(val),
81670            Self::Bgsound(e) => e.part.replace(val),
81671            Self::Big(e) => e.part.replace(val),
81672            Self::Blink(e) => e.part.replace(val),
81673            Self::Center(e) => e.part.replace(val),
81674            Self::Dir(e) => e.part.replace(val),
81675            Self::Font(e) => e.part.replace(val),
81676            Self::Frame(e) => e.part.replace(val),
81677            Self::Frameset(e) => e.part.replace(val),
81678            Self::Image(e) => e.part.replace(val),
81679            Self::Keygen(e) => e.part.replace(val),
81680            Self::Marquee(e) => e.part.replace(val),
81681            Self::Menuitem(e) => e.part.replace(val),
81682            Self::Nobr(e) => e.part.replace(val),
81683            Self::Noembed(e) => e.part.replace(val),
81684            Self::Noframes(e) => e.part.replace(val),
81685            Self::Param(e) => e.part.replace(val),
81686            Self::Plaintext(e) => e.part.replace(val),
81687            Self::Rb(e) => e.part.replace(val),
81688            Self::Rtc(e) => e.part.replace(val),
81689            Self::Spacer(e) => e.part.replace(val),
81690            Self::Strike(e) => e.part.replace(val),
81691            Self::Tt(e) => e.part.replace(val),
81692            Self::Xmp(e) => e.part.replace(val),
81693            Self::H1(e) => e.part.replace(val),
81694            Self::H2(e) => e.part.replace(val),
81695            Self::H3(e) => e.part.replace(val),
81696            Self::H4(e) => e.part.replace(val),
81697            Self::H5(e) => e.part.replace(val),
81698            Self::H6(e) => e.part.replace(val),
81699            Self::Unknown(e) => e.part.replace(val),
81700        };
81701    }
81702
81703    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
81704    ///   
81705
81706    pub fn set_popover(&mut self, val: AttributeValue<'life>) {
81707        match self {
81708            Self::Html(e) => e.popover.replace(val),
81709            Self::Base(e) => e.popover.replace(val),
81710            Self::Head(e) => e.popover.replace(val),
81711            Self::Link(e) => e.popover.replace(val),
81712            Self::Meta(e) => e.popover.replace(val),
81713            Self::Style(e) => e.popover.replace(val),
81714            Self::Title(e) => e.popover.replace(val),
81715            Self::Body(e) => e.popover.replace(val),
81716            Self::Address(e) => e.popover.replace(val),
81717            Self::Article(e) => e.popover.replace(val),
81718            Self::Aside(e) => e.popover.replace(val),
81719            Self::Footer(e) => e.popover.replace(val),
81720            Self::Header(e) => e.popover.replace(val),
81721            Self::Hgroup(e) => e.popover.replace(val),
81722            Self::Main(e) => e.popover.replace(val),
81723            Self::Nav(e) => e.popover.replace(val),
81724            Self::Section(e) => e.popover.replace(val),
81725            Self::Blockquote(e) => e.popover.replace(val),
81726            Self::Dd(e) => e.popover.replace(val),
81727            Self::Div(e) => e.popover.replace(val),
81728            Self::Dl(e) => e.popover.replace(val),
81729            Self::Dt(e) => e.popover.replace(val),
81730            Self::Figcaption(e) => e.popover.replace(val),
81731            Self::Figure(e) => e.popover.replace(val),
81732            Self::Hr(e) => e.popover.replace(val),
81733            Self::Li(e) => e.popover.replace(val),
81734            Self::Menu(e) => e.popover.replace(val),
81735            Self::Ol(e) => e.popover.replace(val),
81736            Self::P(e) => e.popover.replace(val),
81737            Self::Pre(e) => e.popover.replace(val),
81738            Self::Ul(e) => e.popover.replace(val),
81739            Self::A(e) => e.popover.replace(val),
81740            Self::Abbr(e) => e.popover.replace(val),
81741            Self::B(e) => e.popover.replace(val),
81742            Self::Bdi(e) => e.popover.replace(val),
81743            Self::Bdo(e) => e.popover.replace(val),
81744            Self::Br(e) => e.popover.replace(val),
81745            Self::Cite(e) => e.popover.replace(val),
81746            Self::Code(e) => e.popover.replace(val),
81747            Self::Data(e) => e.popover.replace(val),
81748            Self::Dfn(e) => e.popover.replace(val),
81749            Self::Em(e) => e.popover.replace(val),
81750            Self::I(e) => e.popover.replace(val),
81751            Self::Kbd(e) => e.popover.replace(val),
81752            Self::Mark(e) => e.popover.replace(val),
81753            Self::Q(e) => e.popover.replace(val),
81754            Self::Rp(e) => e.popover.replace(val),
81755            Self::Rt(e) => e.popover.replace(val),
81756            Self::Ruby(e) => e.popover.replace(val),
81757            Self::S(e) => e.popover.replace(val),
81758            Self::Samp(e) => e.popover.replace(val),
81759            Self::Small(e) => e.popover.replace(val),
81760            Self::Span(e) => e.popover.replace(val),
81761            Self::Strong(e) => e.popover.replace(val),
81762            Self::Sub(e) => e.popover.replace(val),
81763            Self::Sup(e) => e.popover.replace(val),
81764            Self::Time(e) => e.popover.replace(val),
81765            Self::U(e) => e.popover.replace(val),
81766            Self::Var(e) => e.popover.replace(val),
81767            Self::Wbr(e) => e.popover.replace(val),
81768            Self::Area(e) => e.popover.replace(val),
81769            Self::Audio(e) => e.popover.replace(val),
81770            Self::Img(e) => e.popover.replace(val),
81771            Self::Map(e) => e.popover.replace(val),
81772            Self::Track(e) => e.popover.replace(val),
81773            Self::Video(e) => e.popover.replace(val),
81774            Self::Embed(e) => e.popover.replace(val),
81775            Self::Iframe(e) => e.popover.replace(val),
81776            Self::Object(e) => e.popover.replace(val),
81777            Self::Picture(e) => e.popover.replace(val),
81778            Self::Portal(e) => e.popover.replace(val),
81779            Self::Source(e) => e.popover.replace(val),
81780            Self::Canvas(e) => e.popover.replace(val),
81781            Self::Noscript(e) => e.popover.replace(val),
81782            Self::Script(e) => e.popover.replace(val),
81783            Self::Del(e) => e.popover.replace(val),
81784            Self::Ins(e) => e.popover.replace(val),
81785            Self::Caption(e) => e.popover.replace(val),
81786            Self::Col(e) => e.popover.replace(val),
81787            Self::Colgroup(e) => e.popover.replace(val),
81788            Self::Table(e) => e.popover.replace(val),
81789            Self::Tbody(e) => e.popover.replace(val),
81790            Self::Td(e) => e.popover.replace(val),
81791            Self::Tfoot(e) => e.popover.replace(val),
81792            Self::Th(e) => e.popover.replace(val),
81793            Self::Thead(e) => e.popover.replace(val),
81794            Self::Tr(e) => e.popover.replace(val),
81795            Self::Button(e) => e.popover.replace(val),
81796            Self::Datalist(e) => e.popover.replace(val),
81797            Self::Fieldset(e) => e.popover.replace(val),
81798            Self::Form(e) => e.popover.replace(val),
81799            Self::Input(e) => e.popover.replace(val),
81800            Self::Label(e) => e.popover.replace(val),
81801            Self::Legend(e) => e.popover.replace(val),
81802            Self::Meter(e) => e.popover.replace(val),
81803            Self::Optgroup(e) => e.popover.replace(val),
81804            Self::Option(e) => e.popover.replace(val),
81805            Self::Output(e) => e.popover.replace(val),
81806            Self::Progress(e) => e.popover.replace(val),
81807            Self::Select(e) => e.popover.replace(val),
81808            Self::Textarea(e) => e.popover.replace(val),
81809            Self::Details(e) => e.popover.replace(val),
81810            Self::Dialog(e) => e.popover.replace(val),
81811            Self::Summary(e) => e.popover.replace(val),
81812            Self::Slot(e) => e.popover.replace(val),
81813            Self::Template(e) => e.popover.replace(val),
81814            Self::Acronym(e) => e.popover.replace(val),
81815            Self::Applet(e) => e.popover.replace(val),
81816            Self::Bgsound(e) => e.popover.replace(val),
81817            Self::Big(e) => e.popover.replace(val),
81818            Self::Blink(e) => e.popover.replace(val),
81819            Self::Center(e) => e.popover.replace(val),
81820            Self::Dir(e) => e.popover.replace(val),
81821            Self::Font(e) => e.popover.replace(val),
81822            Self::Frame(e) => e.popover.replace(val),
81823            Self::Frameset(e) => e.popover.replace(val),
81824            Self::Image(e) => e.popover.replace(val),
81825            Self::Keygen(e) => e.popover.replace(val),
81826            Self::Marquee(e) => e.popover.replace(val),
81827            Self::Menuitem(e) => e.popover.replace(val),
81828            Self::Nobr(e) => e.popover.replace(val),
81829            Self::Noembed(e) => e.popover.replace(val),
81830            Self::Noframes(e) => e.popover.replace(val),
81831            Self::Param(e) => e.popover.replace(val),
81832            Self::Plaintext(e) => e.popover.replace(val),
81833            Self::Rb(e) => e.popover.replace(val),
81834            Self::Rtc(e) => e.popover.replace(val),
81835            Self::Spacer(e) => e.popover.replace(val),
81836            Self::Strike(e) => e.popover.replace(val),
81837            Self::Tt(e) => e.popover.replace(val),
81838            Self::Xmp(e) => e.popover.replace(val),
81839            Self::H1(e) => e.popover.replace(val),
81840            Self::H2(e) => e.popover.replace(val),
81841            Self::H3(e) => e.popover.replace(val),
81842            Self::H4(e) => e.popover.replace(val),
81843            Self::H5(e) => e.popover.replace(val),
81844            Self::H6(e) => e.popover.replace(val),
81845            Self::Unknown(e) => e.popover.replace(val),
81846        };
81847    }
81848
81849    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
81850    ///   
81851
81852    pub fn set_role(&mut self, val: AttributeValue<'life>) {
81853        match self {
81854            Self::Html(e) => e.role.replace(val),
81855            Self::Base(e) => e.role.replace(val),
81856            Self::Head(e) => e.role.replace(val),
81857            Self::Link(e) => e.role.replace(val),
81858            Self::Meta(e) => e.role.replace(val),
81859            Self::Style(e) => e.role.replace(val),
81860            Self::Title(e) => e.role.replace(val),
81861            Self::Body(e) => e.role.replace(val),
81862            Self::Address(e) => e.role.replace(val),
81863            Self::Article(e) => e.role.replace(val),
81864            Self::Aside(e) => e.role.replace(val),
81865            Self::Footer(e) => e.role.replace(val),
81866            Self::Header(e) => e.role.replace(val),
81867            Self::Hgroup(e) => e.role.replace(val),
81868            Self::Main(e) => e.role.replace(val),
81869            Self::Nav(e) => e.role.replace(val),
81870            Self::Section(e) => e.role.replace(val),
81871            Self::Blockquote(e) => e.role.replace(val),
81872            Self::Dd(e) => e.role.replace(val),
81873            Self::Div(e) => e.role.replace(val),
81874            Self::Dl(e) => e.role.replace(val),
81875            Self::Dt(e) => e.role.replace(val),
81876            Self::Figcaption(e) => e.role.replace(val),
81877            Self::Figure(e) => e.role.replace(val),
81878            Self::Hr(e) => e.role.replace(val),
81879            Self::Li(e) => e.role.replace(val),
81880            Self::Menu(e) => e.role.replace(val),
81881            Self::Ol(e) => e.role.replace(val),
81882            Self::P(e) => e.role.replace(val),
81883            Self::Pre(e) => e.role.replace(val),
81884            Self::Ul(e) => e.role.replace(val),
81885            Self::A(e) => e.role.replace(val),
81886            Self::Abbr(e) => e.role.replace(val),
81887            Self::B(e) => e.role.replace(val),
81888            Self::Bdi(e) => e.role.replace(val),
81889            Self::Bdo(e) => e.role.replace(val),
81890            Self::Br(e) => e.role.replace(val),
81891            Self::Cite(e) => e.role.replace(val),
81892            Self::Code(e) => e.role.replace(val),
81893            Self::Data(e) => e.role.replace(val),
81894            Self::Dfn(e) => e.role.replace(val),
81895            Self::Em(e) => e.role.replace(val),
81896            Self::I(e) => e.role.replace(val),
81897            Self::Kbd(e) => e.role.replace(val),
81898            Self::Mark(e) => e.role.replace(val),
81899            Self::Q(e) => e.role.replace(val),
81900            Self::Rp(e) => e.role.replace(val),
81901            Self::Rt(e) => e.role.replace(val),
81902            Self::Ruby(e) => e.role.replace(val),
81903            Self::S(e) => e.role.replace(val),
81904            Self::Samp(e) => e.role.replace(val),
81905            Self::Small(e) => e.role.replace(val),
81906            Self::Span(e) => e.role.replace(val),
81907            Self::Strong(e) => e.role.replace(val),
81908            Self::Sub(e) => e.role.replace(val),
81909            Self::Sup(e) => e.role.replace(val),
81910            Self::Time(e) => e.role.replace(val),
81911            Self::U(e) => e.role.replace(val),
81912            Self::Var(e) => e.role.replace(val),
81913            Self::Wbr(e) => e.role.replace(val),
81914            Self::Area(e) => e.role.replace(val),
81915            Self::Audio(e) => e.role.replace(val),
81916            Self::Img(e) => e.role.replace(val),
81917            Self::Map(e) => e.role.replace(val),
81918            Self::Track(e) => e.role.replace(val),
81919            Self::Video(e) => e.role.replace(val),
81920            Self::Embed(e) => e.role.replace(val),
81921            Self::Iframe(e) => e.role.replace(val),
81922            Self::Object(e) => e.role.replace(val),
81923            Self::Picture(e) => e.role.replace(val),
81924            Self::Portal(e) => e.role.replace(val),
81925            Self::Source(e) => e.role.replace(val),
81926            Self::Canvas(e) => e.role.replace(val),
81927            Self::Noscript(e) => e.role.replace(val),
81928            Self::Script(e) => e.role.replace(val),
81929            Self::Del(e) => e.role.replace(val),
81930            Self::Ins(e) => e.role.replace(val),
81931            Self::Caption(e) => e.role.replace(val),
81932            Self::Col(e) => e.role.replace(val),
81933            Self::Colgroup(e) => e.role.replace(val),
81934            Self::Table(e) => e.role.replace(val),
81935            Self::Tbody(e) => e.role.replace(val),
81936            Self::Td(e) => e.role.replace(val),
81937            Self::Tfoot(e) => e.role.replace(val),
81938            Self::Th(e) => e.role.replace(val),
81939            Self::Thead(e) => e.role.replace(val),
81940            Self::Tr(e) => e.role.replace(val),
81941            Self::Button(e) => e.role.replace(val),
81942            Self::Datalist(e) => e.role.replace(val),
81943            Self::Fieldset(e) => e.role.replace(val),
81944            Self::Form(e) => e.role.replace(val),
81945            Self::Input(e) => e.role.replace(val),
81946            Self::Label(e) => e.role.replace(val),
81947            Self::Legend(e) => e.role.replace(val),
81948            Self::Meter(e) => e.role.replace(val),
81949            Self::Optgroup(e) => e.role.replace(val),
81950            Self::Option(e) => e.role.replace(val),
81951            Self::Output(e) => e.role.replace(val),
81952            Self::Progress(e) => e.role.replace(val),
81953            Self::Select(e) => e.role.replace(val),
81954            Self::Textarea(e) => e.role.replace(val),
81955            Self::Details(e) => e.role.replace(val),
81956            Self::Dialog(e) => e.role.replace(val),
81957            Self::Summary(e) => e.role.replace(val),
81958            Self::Slot(e) => e.role.replace(val),
81959            Self::Template(e) => e.role.replace(val),
81960            Self::Acronym(e) => e.role.replace(val),
81961            Self::Applet(e) => e.role.replace(val),
81962            Self::Bgsound(e) => e.role.replace(val),
81963            Self::Big(e) => e.role.replace(val),
81964            Self::Blink(e) => e.role.replace(val),
81965            Self::Center(e) => e.role.replace(val),
81966            Self::Dir(e) => e.role.replace(val),
81967            Self::Font(e) => e.role.replace(val),
81968            Self::Frame(e) => e.role.replace(val),
81969            Self::Frameset(e) => e.role.replace(val),
81970            Self::Image(e) => e.role.replace(val),
81971            Self::Keygen(e) => e.role.replace(val),
81972            Self::Marquee(e) => e.role.replace(val),
81973            Self::Menuitem(e) => e.role.replace(val),
81974            Self::Nobr(e) => e.role.replace(val),
81975            Self::Noembed(e) => e.role.replace(val),
81976            Self::Noframes(e) => e.role.replace(val),
81977            Self::Param(e) => e.role.replace(val),
81978            Self::Plaintext(e) => e.role.replace(val),
81979            Self::Rb(e) => e.role.replace(val),
81980            Self::Rtc(e) => e.role.replace(val),
81981            Self::Spacer(e) => e.role.replace(val),
81982            Self::Strike(e) => e.role.replace(val),
81983            Self::Tt(e) => e.role.replace(val),
81984            Self::Xmp(e) => e.role.replace(val),
81985            Self::H1(e) => e.role.replace(val),
81986            Self::H2(e) => e.role.replace(val),
81987            Self::H3(e) => e.role.replace(val),
81988            Self::H4(e) => e.role.replace(val),
81989            Self::H5(e) => e.role.replace(val),
81990            Self::H6(e) => e.role.replace(val),
81991            Self::Unknown(e) => e.role.replace(val),
81992        };
81993    }
81994
81995    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
81996    ///   
81997
81998    pub fn set_slot(&mut self, val: AttributeValue<'life>) {
81999        match self {
82000            Self::Html(e) => e.slot.replace(val),
82001            Self::Base(e) => e.slot.replace(val),
82002            Self::Head(e) => e.slot.replace(val),
82003            Self::Link(e) => e.slot.replace(val),
82004            Self::Meta(e) => e.slot.replace(val),
82005            Self::Style(e) => e.slot.replace(val),
82006            Self::Title(e) => e.slot.replace(val),
82007            Self::Body(e) => e.slot.replace(val),
82008            Self::Address(e) => e.slot.replace(val),
82009            Self::Article(e) => e.slot.replace(val),
82010            Self::Aside(e) => e.slot.replace(val),
82011            Self::Footer(e) => e.slot.replace(val),
82012            Self::Header(e) => e.slot.replace(val),
82013            Self::Hgroup(e) => e.slot.replace(val),
82014            Self::Main(e) => e.slot.replace(val),
82015            Self::Nav(e) => e.slot.replace(val),
82016            Self::Section(e) => e.slot.replace(val),
82017            Self::Blockquote(e) => e.slot.replace(val),
82018            Self::Dd(e) => e.slot.replace(val),
82019            Self::Div(e) => e.slot.replace(val),
82020            Self::Dl(e) => e.slot.replace(val),
82021            Self::Dt(e) => e.slot.replace(val),
82022            Self::Figcaption(e) => e.slot.replace(val),
82023            Self::Figure(e) => e.slot.replace(val),
82024            Self::Hr(e) => e.slot.replace(val),
82025            Self::Li(e) => e.slot.replace(val),
82026            Self::Menu(e) => e.slot.replace(val),
82027            Self::Ol(e) => e.slot.replace(val),
82028            Self::P(e) => e.slot.replace(val),
82029            Self::Pre(e) => e.slot.replace(val),
82030            Self::Ul(e) => e.slot.replace(val),
82031            Self::A(e) => e.slot.replace(val),
82032            Self::Abbr(e) => e.slot.replace(val),
82033            Self::B(e) => e.slot.replace(val),
82034            Self::Bdi(e) => e.slot.replace(val),
82035            Self::Bdo(e) => e.slot.replace(val),
82036            Self::Br(e) => e.slot.replace(val),
82037            Self::Cite(e) => e.slot.replace(val),
82038            Self::Code(e) => e.slot.replace(val),
82039            Self::Data(e) => e.slot.replace(val),
82040            Self::Dfn(e) => e.slot.replace(val),
82041            Self::Em(e) => e.slot.replace(val),
82042            Self::I(e) => e.slot.replace(val),
82043            Self::Kbd(e) => e.slot.replace(val),
82044            Self::Mark(e) => e.slot.replace(val),
82045            Self::Q(e) => e.slot.replace(val),
82046            Self::Rp(e) => e.slot.replace(val),
82047            Self::Rt(e) => e.slot.replace(val),
82048            Self::Ruby(e) => e.slot.replace(val),
82049            Self::S(e) => e.slot.replace(val),
82050            Self::Samp(e) => e.slot.replace(val),
82051            Self::Small(e) => e.slot.replace(val),
82052            Self::Span(e) => e.slot.replace(val),
82053            Self::Strong(e) => e.slot.replace(val),
82054            Self::Sub(e) => e.slot.replace(val),
82055            Self::Sup(e) => e.slot.replace(val),
82056            Self::Time(e) => e.slot.replace(val),
82057            Self::U(e) => e.slot.replace(val),
82058            Self::Var(e) => e.slot.replace(val),
82059            Self::Wbr(e) => e.slot.replace(val),
82060            Self::Area(e) => e.slot.replace(val),
82061            Self::Audio(e) => e.slot.replace(val),
82062            Self::Img(e) => e.slot.replace(val),
82063            Self::Map(e) => e.slot.replace(val),
82064            Self::Track(e) => e.slot.replace(val),
82065            Self::Video(e) => e.slot.replace(val),
82066            Self::Embed(e) => e.slot.replace(val),
82067            Self::Iframe(e) => e.slot.replace(val),
82068            Self::Object(e) => e.slot.replace(val),
82069            Self::Picture(e) => e.slot.replace(val),
82070            Self::Portal(e) => e.slot.replace(val),
82071            Self::Source(e) => e.slot.replace(val),
82072            Self::Canvas(e) => e.slot.replace(val),
82073            Self::Noscript(e) => e.slot.replace(val),
82074            Self::Script(e) => e.slot.replace(val),
82075            Self::Del(e) => e.slot.replace(val),
82076            Self::Ins(e) => e.slot.replace(val),
82077            Self::Caption(e) => e.slot.replace(val),
82078            Self::Col(e) => e.slot.replace(val),
82079            Self::Colgroup(e) => e.slot.replace(val),
82080            Self::Table(e) => e.slot.replace(val),
82081            Self::Tbody(e) => e.slot.replace(val),
82082            Self::Td(e) => e.slot.replace(val),
82083            Self::Tfoot(e) => e.slot.replace(val),
82084            Self::Th(e) => e.slot.replace(val),
82085            Self::Thead(e) => e.slot.replace(val),
82086            Self::Tr(e) => e.slot.replace(val),
82087            Self::Button(e) => e.slot.replace(val),
82088            Self::Datalist(e) => e.slot.replace(val),
82089            Self::Fieldset(e) => e.slot.replace(val),
82090            Self::Form(e) => e.slot.replace(val),
82091            Self::Input(e) => e.slot.replace(val),
82092            Self::Label(e) => e.slot.replace(val),
82093            Self::Legend(e) => e.slot.replace(val),
82094            Self::Meter(e) => e.slot.replace(val),
82095            Self::Optgroup(e) => e.slot.replace(val),
82096            Self::Option(e) => e.slot.replace(val),
82097            Self::Output(e) => e.slot.replace(val),
82098            Self::Progress(e) => e.slot.replace(val),
82099            Self::Select(e) => e.slot.replace(val),
82100            Self::Textarea(e) => e.slot.replace(val),
82101            Self::Details(e) => e.slot.replace(val),
82102            Self::Dialog(e) => e.slot.replace(val),
82103            Self::Summary(e) => e.slot.replace(val),
82104            Self::Slot(e) => e.slot.replace(val),
82105            Self::Template(e) => e.slot.replace(val),
82106            Self::Acronym(e) => e.slot.replace(val),
82107            Self::Applet(e) => e.slot.replace(val),
82108            Self::Bgsound(e) => e.slot.replace(val),
82109            Self::Big(e) => e.slot.replace(val),
82110            Self::Blink(e) => e.slot.replace(val),
82111            Self::Center(e) => e.slot.replace(val),
82112            Self::Dir(e) => e.slot.replace(val),
82113            Self::Font(e) => e.slot.replace(val),
82114            Self::Frame(e) => e.slot.replace(val),
82115            Self::Frameset(e) => e.slot.replace(val),
82116            Self::Image(e) => e.slot.replace(val),
82117            Self::Keygen(e) => e.slot.replace(val),
82118            Self::Marquee(e) => e.slot.replace(val),
82119            Self::Menuitem(e) => e.slot.replace(val),
82120            Self::Nobr(e) => e.slot.replace(val),
82121            Self::Noembed(e) => e.slot.replace(val),
82122            Self::Noframes(e) => e.slot.replace(val),
82123            Self::Param(e) => e.slot.replace(val),
82124            Self::Plaintext(e) => e.slot.replace(val),
82125            Self::Rb(e) => e.slot.replace(val),
82126            Self::Rtc(e) => e.slot.replace(val),
82127            Self::Spacer(e) => e.slot.replace(val),
82128            Self::Strike(e) => e.slot.replace(val),
82129            Self::Tt(e) => e.slot.replace(val),
82130            Self::Xmp(e) => e.slot.replace(val),
82131            Self::H1(e) => e.slot.replace(val),
82132            Self::H2(e) => e.slot.replace(val),
82133            Self::H3(e) => e.slot.replace(val),
82134            Self::H4(e) => e.slot.replace(val),
82135            Self::H5(e) => e.slot.replace(val),
82136            Self::H6(e) => e.slot.replace(val),
82137            Self::Unknown(e) => e.slot.replace(val),
82138        };
82139    }
82140
82141    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
82142    ///     <ul>
82143    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
82144    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
82145    ///     </ul>
82146    ///   
82147
82148    pub fn set_spellcheck(&mut self, val: AttributeValue<'life>) {
82149        match self {
82150            Self::Html(e) => e.spellcheck.replace(val),
82151            Self::Base(e) => e.spellcheck.replace(val),
82152            Self::Head(e) => e.spellcheck.replace(val),
82153            Self::Link(e) => e.spellcheck.replace(val),
82154            Self::Meta(e) => e.spellcheck.replace(val),
82155            Self::Style(e) => e.spellcheck.replace(val),
82156            Self::Title(e) => e.spellcheck.replace(val),
82157            Self::Body(e) => e.spellcheck.replace(val),
82158            Self::Address(e) => e.spellcheck.replace(val),
82159            Self::Article(e) => e.spellcheck.replace(val),
82160            Self::Aside(e) => e.spellcheck.replace(val),
82161            Self::Footer(e) => e.spellcheck.replace(val),
82162            Self::Header(e) => e.spellcheck.replace(val),
82163            Self::Hgroup(e) => e.spellcheck.replace(val),
82164            Self::Main(e) => e.spellcheck.replace(val),
82165            Self::Nav(e) => e.spellcheck.replace(val),
82166            Self::Section(e) => e.spellcheck.replace(val),
82167            Self::Blockquote(e) => e.spellcheck.replace(val),
82168            Self::Dd(e) => e.spellcheck.replace(val),
82169            Self::Div(e) => e.spellcheck.replace(val),
82170            Self::Dl(e) => e.spellcheck.replace(val),
82171            Self::Dt(e) => e.spellcheck.replace(val),
82172            Self::Figcaption(e) => e.spellcheck.replace(val),
82173            Self::Figure(e) => e.spellcheck.replace(val),
82174            Self::Hr(e) => e.spellcheck.replace(val),
82175            Self::Li(e) => e.spellcheck.replace(val),
82176            Self::Menu(e) => e.spellcheck.replace(val),
82177            Self::Ol(e) => e.spellcheck.replace(val),
82178            Self::P(e) => e.spellcheck.replace(val),
82179            Self::Pre(e) => e.spellcheck.replace(val),
82180            Self::Ul(e) => e.spellcheck.replace(val),
82181            Self::A(e) => e.spellcheck.replace(val),
82182            Self::Abbr(e) => e.spellcheck.replace(val),
82183            Self::B(e) => e.spellcheck.replace(val),
82184            Self::Bdi(e) => e.spellcheck.replace(val),
82185            Self::Bdo(e) => e.spellcheck.replace(val),
82186            Self::Br(e) => e.spellcheck.replace(val),
82187            Self::Cite(e) => e.spellcheck.replace(val),
82188            Self::Code(e) => e.spellcheck.replace(val),
82189            Self::Data(e) => e.spellcheck.replace(val),
82190            Self::Dfn(e) => e.spellcheck.replace(val),
82191            Self::Em(e) => e.spellcheck.replace(val),
82192            Self::I(e) => e.spellcheck.replace(val),
82193            Self::Kbd(e) => e.spellcheck.replace(val),
82194            Self::Mark(e) => e.spellcheck.replace(val),
82195            Self::Q(e) => e.spellcheck.replace(val),
82196            Self::Rp(e) => e.spellcheck.replace(val),
82197            Self::Rt(e) => e.spellcheck.replace(val),
82198            Self::Ruby(e) => e.spellcheck.replace(val),
82199            Self::S(e) => e.spellcheck.replace(val),
82200            Self::Samp(e) => e.spellcheck.replace(val),
82201            Self::Small(e) => e.spellcheck.replace(val),
82202            Self::Span(e) => e.spellcheck.replace(val),
82203            Self::Strong(e) => e.spellcheck.replace(val),
82204            Self::Sub(e) => e.spellcheck.replace(val),
82205            Self::Sup(e) => e.spellcheck.replace(val),
82206            Self::Time(e) => e.spellcheck.replace(val),
82207            Self::U(e) => e.spellcheck.replace(val),
82208            Self::Var(e) => e.spellcheck.replace(val),
82209            Self::Wbr(e) => e.spellcheck.replace(val),
82210            Self::Area(e) => e.spellcheck.replace(val),
82211            Self::Audio(e) => e.spellcheck.replace(val),
82212            Self::Img(e) => e.spellcheck.replace(val),
82213            Self::Map(e) => e.spellcheck.replace(val),
82214            Self::Track(e) => e.spellcheck.replace(val),
82215            Self::Video(e) => e.spellcheck.replace(val),
82216            Self::Embed(e) => e.spellcheck.replace(val),
82217            Self::Iframe(e) => e.spellcheck.replace(val),
82218            Self::Object(e) => e.spellcheck.replace(val),
82219            Self::Picture(e) => e.spellcheck.replace(val),
82220            Self::Portal(e) => e.spellcheck.replace(val),
82221            Self::Source(e) => e.spellcheck.replace(val),
82222            Self::Canvas(e) => e.spellcheck.replace(val),
82223            Self::Noscript(e) => e.spellcheck.replace(val),
82224            Self::Script(e) => e.spellcheck.replace(val),
82225            Self::Del(e) => e.spellcheck.replace(val),
82226            Self::Ins(e) => e.spellcheck.replace(val),
82227            Self::Caption(e) => e.spellcheck.replace(val),
82228            Self::Col(e) => e.spellcheck.replace(val),
82229            Self::Colgroup(e) => e.spellcheck.replace(val),
82230            Self::Table(e) => e.spellcheck.replace(val),
82231            Self::Tbody(e) => e.spellcheck.replace(val),
82232            Self::Td(e) => e.spellcheck.replace(val),
82233            Self::Tfoot(e) => e.spellcheck.replace(val),
82234            Self::Th(e) => e.spellcheck.replace(val),
82235            Self::Thead(e) => e.spellcheck.replace(val),
82236            Self::Tr(e) => e.spellcheck.replace(val),
82237            Self::Button(e) => e.spellcheck.replace(val),
82238            Self::Datalist(e) => e.spellcheck.replace(val),
82239            Self::Fieldset(e) => e.spellcheck.replace(val),
82240            Self::Form(e) => e.spellcheck.replace(val),
82241            Self::Input(e) => e.spellcheck.replace(val),
82242            Self::Label(e) => e.spellcheck.replace(val),
82243            Self::Legend(e) => e.spellcheck.replace(val),
82244            Self::Meter(e) => e.spellcheck.replace(val),
82245            Self::Optgroup(e) => e.spellcheck.replace(val),
82246            Self::Option(e) => e.spellcheck.replace(val),
82247            Self::Output(e) => e.spellcheck.replace(val),
82248            Self::Progress(e) => e.spellcheck.replace(val),
82249            Self::Select(e) => e.spellcheck.replace(val),
82250            Self::Textarea(e) => e.spellcheck.replace(val),
82251            Self::Details(e) => e.spellcheck.replace(val),
82252            Self::Dialog(e) => e.spellcheck.replace(val),
82253            Self::Summary(e) => e.spellcheck.replace(val),
82254            Self::Slot(e) => e.spellcheck.replace(val),
82255            Self::Template(e) => e.spellcheck.replace(val),
82256            Self::Acronym(e) => e.spellcheck.replace(val),
82257            Self::Applet(e) => e.spellcheck.replace(val),
82258            Self::Bgsound(e) => e.spellcheck.replace(val),
82259            Self::Big(e) => e.spellcheck.replace(val),
82260            Self::Blink(e) => e.spellcheck.replace(val),
82261            Self::Center(e) => e.spellcheck.replace(val),
82262            Self::Dir(e) => e.spellcheck.replace(val),
82263            Self::Font(e) => e.spellcheck.replace(val),
82264            Self::Frame(e) => e.spellcheck.replace(val),
82265            Self::Frameset(e) => e.spellcheck.replace(val),
82266            Self::Image(e) => e.spellcheck.replace(val),
82267            Self::Keygen(e) => e.spellcheck.replace(val),
82268            Self::Marquee(e) => e.spellcheck.replace(val),
82269            Self::Menuitem(e) => e.spellcheck.replace(val),
82270            Self::Nobr(e) => e.spellcheck.replace(val),
82271            Self::Noembed(e) => e.spellcheck.replace(val),
82272            Self::Noframes(e) => e.spellcheck.replace(val),
82273            Self::Param(e) => e.spellcheck.replace(val),
82274            Self::Plaintext(e) => e.spellcheck.replace(val),
82275            Self::Rb(e) => e.spellcheck.replace(val),
82276            Self::Rtc(e) => e.spellcheck.replace(val),
82277            Self::Spacer(e) => e.spellcheck.replace(val),
82278            Self::Strike(e) => e.spellcheck.replace(val),
82279            Self::Tt(e) => e.spellcheck.replace(val),
82280            Self::Xmp(e) => e.spellcheck.replace(val),
82281            Self::H1(e) => e.spellcheck.replace(val),
82282            Self::H2(e) => e.spellcheck.replace(val),
82283            Self::H3(e) => e.spellcheck.replace(val),
82284            Self::H4(e) => e.spellcheck.replace(val),
82285            Self::H5(e) => e.spellcheck.replace(val),
82286            Self::H6(e) => e.spellcheck.replace(val),
82287            Self::Unknown(e) => e.spellcheck.replace(val),
82288        };
82289    }
82290
82291    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
82292    ///   
82293
82294    pub fn set_style(&mut self, val: AttributeValue<'life>) {
82295        match self {
82296            Self::Html(e) => e.style.replace(val),
82297            Self::Base(e) => e.style.replace(val),
82298            Self::Head(e) => e.style.replace(val),
82299            Self::Link(e) => e.style.replace(val),
82300            Self::Meta(e) => e.style.replace(val),
82301            Self::Style(e) => e.style.replace(val),
82302            Self::Title(e) => e.style.replace(val),
82303            Self::Body(e) => e.style.replace(val),
82304            Self::Address(e) => e.style.replace(val),
82305            Self::Article(e) => e.style.replace(val),
82306            Self::Aside(e) => e.style.replace(val),
82307            Self::Footer(e) => e.style.replace(val),
82308            Self::Header(e) => e.style.replace(val),
82309            Self::Hgroup(e) => e.style.replace(val),
82310            Self::Main(e) => e.style.replace(val),
82311            Self::Nav(e) => e.style.replace(val),
82312            Self::Section(e) => e.style.replace(val),
82313            Self::Blockquote(e) => e.style.replace(val),
82314            Self::Dd(e) => e.style.replace(val),
82315            Self::Div(e) => e.style.replace(val),
82316            Self::Dl(e) => e.style.replace(val),
82317            Self::Dt(e) => e.style.replace(val),
82318            Self::Figcaption(e) => e.style.replace(val),
82319            Self::Figure(e) => e.style.replace(val),
82320            Self::Hr(e) => e.style.replace(val),
82321            Self::Li(e) => e.style.replace(val),
82322            Self::Menu(e) => e.style.replace(val),
82323            Self::Ol(e) => e.style.replace(val),
82324            Self::P(e) => e.style.replace(val),
82325            Self::Pre(e) => e.style.replace(val),
82326            Self::Ul(e) => e.style.replace(val),
82327            Self::A(e) => e.style.replace(val),
82328            Self::Abbr(e) => e.style.replace(val),
82329            Self::B(e) => e.style.replace(val),
82330            Self::Bdi(e) => e.style.replace(val),
82331            Self::Bdo(e) => e.style.replace(val),
82332            Self::Br(e) => e.style.replace(val),
82333            Self::Cite(e) => e.style.replace(val),
82334            Self::Code(e) => e.style.replace(val),
82335            Self::Data(e) => e.style.replace(val),
82336            Self::Dfn(e) => e.style.replace(val),
82337            Self::Em(e) => e.style.replace(val),
82338            Self::I(e) => e.style.replace(val),
82339            Self::Kbd(e) => e.style.replace(val),
82340            Self::Mark(e) => e.style.replace(val),
82341            Self::Q(e) => e.style.replace(val),
82342            Self::Rp(e) => e.style.replace(val),
82343            Self::Rt(e) => e.style.replace(val),
82344            Self::Ruby(e) => e.style.replace(val),
82345            Self::S(e) => e.style.replace(val),
82346            Self::Samp(e) => e.style.replace(val),
82347            Self::Small(e) => e.style.replace(val),
82348            Self::Span(e) => e.style.replace(val),
82349            Self::Strong(e) => e.style.replace(val),
82350            Self::Sub(e) => e.style.replace(val),
82351            Self::Sup(e) => e.style.replace(val),
82352            Self::Time(e) => e.style.replace(val),
82353            Self::U(e) => e.style.replace(val),
82354            Self::Var(e) => e.style.replace(val),
82355            Self::Wbr(e) => e.style.replace(val),
82356            Self::Area(e) => e.style.replace(val),
82357            Self::Audio(e) => e.style.replace(val),
82358            Self::Img(e) => e.style.replace(val),
82359            Self::Map(e) => e.style.replace(val),
82360            Self::Track(e) => e.style.replace(val),
82361            Self::Video(e) => e.style.replace(val),
82362            Self::Embed(e) => e.style.replace(val),
82363            Self::Iframe(e) => e.style.replace(val),
82364            Self::Object(e) => e.style.replace(val),
82365            Self::Picture(e) => e.style.replace(val),
82366            Self::Portal(e) => e.style.replace(val),
82367            Self::Source(e) => e.style.replace(val),
82368            Self::Canvas(e) => e.style.replace(val),
82369            Self::Noscript(e) => e.style.replace(val),
82370            Self::Script(e) => e.style.replace(val),
82371            Self::Del(e) => e.style.replace(val),
82372            Self::Ins(e) => e.style.replace(val),
82373            Self::Caption(e) => e.style.replace(val),
82374            Self::Col(e) => e.style.replace(val),
82375            Self::Colgroup(e) => e.style.replace(val),
82376            Self::Table(e) => e.style.replace(val),
82377            Self::Tbody(e) => e.style.replace(val),
82378            Self::Td(e) => e.style.replace(val),
82379            Self::Tfoot(e) => e.style.replace(val),
82380            Self::Th(e) => e.style.replace(val),
82381            Self::Thead(e) => e.style.replace(val),
82382            Self::Tr(e) => e.style.replace(val),
82383            Self::Button(e) => e.style.replace(val),
82384            Self::Datalist(e) => e.style.replace(val),
82385            Self::Fieldset(e) => e.style.replace(val),
82386            Self::Form(e) => e.style.replace(val),
82387            Self::Input(e) => e.style.replace(val),
82388            Self::Label(e) => e.style.replace(val),
82389            Self::Legend(e) => e.style.replace(val),
82390            Self::Meter(e) => e.style.replace(val),
82391            Self::Optgroup(e) => e.style.replace(val),
82392            Self::Option(e) => e.style.replace(val),
82393            Self::Output(e) => e.style.replace(val),
82394            Self::Progress(e) => e.style.replace(val),
82395            Self::Select(e) => e.style.replace(val),
82396            Self::Textarea(e) => e.style.replace(val),
82397            Self::Details(e) => e.style.replace(val),
82398            Self::Dialog(e) => e.style.replace(val),
82399            Self::Summary(e) => e.style.replace(val),
82400            Self::Slot(e) => e.style.replace(val),
82401            Self::Template(e) => e.style.replace(val),
82402            Self::Acronym(e) => e.style.replace(val),
82403            Self::Applet(e) => e.style.replace(val),
82404            Self::Bgsound(e) => e.style.replace(val),
82405            Self::Big(e) => e.style.replace(val),
82406            Self::Blink(e) => e.style.replace(val),
82407            Self::Center(e) => e.style.replace(val),
82408            Self::Dir(e) => e.style.replace(val),
82409            Self::Font(e) => e.style.replace(val),
82410            Self::Frame(e) => e.style.replace(val),
82411            Self::Frameset(e) => e.style.replace(val),
82412            Self::Image(e) => e.style.replace(val),
82413            Self::Keygen(e) => e.style.replace(val),
82414            Self::Marquee(e) => e.style.replace(val),
82415            Self::Menuitem(e) => e.style.replace(val),
82416            Self::Nobr(e) => e.style.replace(val),
82417            Self::Noembed(e) => e.style.replace(val),
82418            Self::Noframes(e) => e.style.replace(val),
82419            Self::Param(e) => e.style.replace(val),
82420            Self::Plaintext(e) => e.style.replace(val),
82421            Self::Rb(e) => e.style.replace(val),
82422            Self::Rtc(e) => e.style.replace(val),
82423            Self::Spacer(e) => e.style.replace(val),
82424            Self::Strike(e) => e.style.replace(val),
82425            Self::Tt(e) => e.style.replace(val),
82426            Self::Xmp(e) => e.style.replace(val),
82427            Self::H1(e) => e.style.replace(val),
82428            Self::H2(e) => e.style.replace(val),
82429            Self::H3(e) => e.style.replace(val),
82430            Self::H4(e) => e.style.replace(val),
82431            Self::H5(e) => e.style.replace(val),
82432            Self::H6(e) => e.style.replace(val),
82433            Self::Unknown(e) => e.style.replace(val),
82434        };
82435    }
82436
82437    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
82438    ///     <ul>
82439    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
82440    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
82441    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
82442    ///     </ul>
82443    ///   
82444
82445    pub fn set_tabindex(&mut self, val: AttributeValue<'life>) {
82446        match self {
82447            Self::Html(e) => e.tabindex.replace(val),
82448            Self::Base(e) => e.tabindex.replace(val),
82449            Self::Head(e) => e.tabindex.replace(val),
82450            Self::Link(e) => e.tabindex.replace(val),
82451            Self::Meta(e) => e.tabindex.replace(val),
82452            Self::Style(e) => e.tabindex.replace(val),
82453            Self::Title(e) => e.tabindex.replace(val),
82454            Self::Body(e) => e.tabindex.replace(val),
82455            Self::Address(e) => e.tabindex.replace(val),
82456            Self::Article(e) => e.tabindex.replace(val),
82457            Self::Aside(e) => e.tabindex.replace(val),
82458            Self::Footer(e) => e.tabindex.replace(val),
82459            Self::Header(e) => e.tabindex.replace(val),
82460            Self::Hgroup(e) => e.tabindex.replace(val),
82461            Self::Main(e) => e.tabindex.replace(val),
82462            Self::Nav(e) => e.tabindex.replace(val),
82463            Self::Section(e) => e.tabindex.replace(val),
82464            Self::Blockquote(e) => e.tabindex.replace(val),
82465            Self::Dd(e) => e.tabindex.replace(val),
82466            Self::Div(e) => e.tabindex.replace(val),
82467            Self::Dl(e) => e.tabindex.replace(val),
82468            Self::Dt(e) => e.tabindex.replace(val),
82469            Self::Figcaption(e) => e.tabindex.replace(val),
82470            Self::Figure(e) => e.tabindex.replace(val),
82471            Self::Hr(e) => e.tabindex.replace(val),
82472            Self::Li(e) => e.tabindex.replace(val),
82473            Self::Menu(e) => e.tabindex.replace(val),
82474            Self::Ol(e) => e.tabindex.replace(val),
82475            Self::P(e) => e.tabindex.replace(val),
82476            Self::Pre(e) => e.tabindex.replace(val),
82477            Self::Ul(e) => e.tabindex.replace(val),
82478            Self::A(e) => e.tabindex.replace(val),
82479            Self::Abbr(e) => e.tabindex.replace(val),
82480            Self::B(e) => e.tabindex.replace(val),
82481            Self::Bdi(e) => e.tabindex.replace(val),
82482            Self::Bdo(e) => e.tabindex.replace(val),
82483            Self::Br(e) => e.tabindex.replace(val),
82484            Self::Cite(e) => e.tabindex.replace(val),
82485            Self::Code(e) => e.tabindex.replace(val),
82486            Self::Data(e) => e.tabindex.replace(val),
82487            Self::Dfn(e) => e.tabindex.replace(val),
82488            Self::Em(e) => e.tabindex.replace(val),
82489            Self::I(e) => e.tabindex.replace(val),
82490            Self::Kbd(e) => e.tabindex.replace(val),
82491            Self::Mark(e) => e.tabindex.replace(val),
82492            Self::Q(e) => e.tabindex.replace(val),
82493            Self::Rp(e) => e.tabindex.replace(val),
82494            Self::Rt(e) => e.tabindex.replace(val),
82495            Self::Ruby(e) => e.tabindex.replace(val),
82496            Self::S(e) => e.tabindex.replace(val),
82497            Self::Samp(e) => e.tabindex.replace(val),
82498            Self::Small(e) => e.tabindex.replace(val),
82499            Self::Span(e) => e.tabindex.replace(val),
82500            Self::Strong(e) => e.tabindex.replace(val),
82501            Self::Sub(e) => e.tabindex.replace(val),
82502            Self::Sup(e) => e.tabindex.replace(val),
82503            Self::Time(e) => e.tabindex.replace(val),
82504            Self::U(e) => e.tabindex.replace(val),
82505            Self::Var(e) => e.tabindex.replace(val),
82506            Self::Wbr(e) => e.tabindex.replace(val),
82507            Self::Area(e) => e.tabindex.replace(val),
82508            Self::Audio(e) => e.tabindex.replace(val),
82509            Self::Img(e) => e.tabindex.replace(val),
82510            Self::Map(e) => e.tabindex.replace(val),
82511            Self::Track(e) => e.tabindex.replace(val),
82512            Self::Video(e) => e.tabindex.replace(val),
82513            Self::Embed(e) => e.tabindex.replace(val),
82514            Self::Iframe(e) => e.tabindex.replace(val),
82515            Self::Object(e) => e.tabindex.replace(val),
82516            Self::Picture(e) => e.tabindex.replace(val),
82517            Self::Portal(e) => e.tabindex.replace(val),
82518            Self::Source(e) => e.tabindex.replace(val),
82519            Self::Canvas(e) => e.tabindex.replace(val),
82520            Self::Noscript(e) => e.tabindex.replace(val),
82521            Self::Script(e) => e.tabindex.replace(val),
82522            Self::Del(e) => e.tabindex.replace(val),
82523            Self::Ins(e) => e.tabindex.replace(val),
82524            Self::Caption(e) => e.tabindex.replace(val),
82525            Self::Col(e) => e.tabindex.replace(val),
82526            Self::Colgroup(e) => e.tabindex.replace(val),
82527            Self::Table(e) => e.tabindex.replace(val),
82528            Self::Tbody(e) => e.tabindex.replace(val),
82529            Self::Td(e) => e.tabindex.replace(val),
82530            Self::Tfoot(e) => e.tabindex.replace(val),
82531            Self::Th(e) => e.tabindex.replace(val),
82532            Self::Thead(e) => e.tabindex.replace(val),
82533            Self::Tr(e) => e.tabindex.replace(val),
82534            Self::Button(e) => e.tabindex.replace(val),
82535            Self::Datalist(e) => e.tabindex.replace(val),
82536            Self::Fieldset(e) => e.tabindex.replace(val),
82537            Self::Form(e) => e.tabindex.replace(val),
82538            Self::Input(e) => e.tabindex.replace(val),
82539            Self::Label(e) => e.tabindex.replace(val),
82540            Self::Legend(e) => e.tabindex.replace(val),
82541            Self::Meter(e) => e.tabindex.replace(val),
82542            Self::Optgroup(e) => e.tabindex.replace(val),
82543            Self::Option(e) => e.tabindex.replace(val),
82544            Self::Output(e) => e.tabindex.replace(val),
82545            Self::Progress(e) => e.tabindex.replace(val),
82546            Self::Select(e) => e.tabindex.replace(val),
82547            Self::Textarea(e) => e.tabindex.replace(val),
82548            Self::Details(e) => e.tabindex.replace(val),
82549            Self::Dialog(e) => e.tabindex.replace(val),
82550            Self::Summary(e) => e.tabindex.replace(val),
82551            Self::Slot(e) => e.tabindex.replace(val),
82552            Self::Template(e) => e.tabindex.replace(val),
82553            Self::Acronym(e) => e.tabindex.replace(val),
82554            Self::Applet(e) => e.tabindex.replace(val),
82555            Self::Bgsound(e) => e.tabindex.replace(val),
82556            Self::Big(e) => e.tabindex.replace(val),
82557            Self::Blink(e) => e.tabindex.replace(val),
82558            Self::Center(e) => e.tabindex.replace(val),
82559            Self::Dir(e) => e.tabindex.replace(val),
82560            Self::Font(e) => e.tabindex.replace(val),
82561            Self::Frame(e) => e.tabindex.replace(val),
82562            Self::Frameset(e) => e.tabindex.replace(val),
82563            Self::Image(e) => e.tabindex.replace(val),
82564            Self::Keygen(e) => e.tabindex.replace(val),
82565            Self::Marquee(e) => e.tabindex.replace(val),
82566            Self::Menuitem(e) => e.tabindex.replace(val),
82567            Self::Nobr(e) => e.tabindex.replace(val),
82568            Self::Noembed(e) => e.tabindex.replace(val),
82569            Self::Noframes(e) => e.tabindex.replace(val),
82570            Self::Param(e) => e.tabindex.replace(val),
82571            Self::Plaintext(e) => e.tabindex.replace(val),
82572            Self::Rb(e) => e.tabindex.replace(val),
82573            Self::Rtc(e) => e.tabindex.replace(val),
82574            Self::Spacer(e) => e.tabindex.replace(val),
82575            Self::Strike(e) => e.tabindex.replace(val),
82576            Self::Tt(e) => e.tabindex.replace(val),
82577            Self::Xmp(e) => e.tabindex.replace(val),
82578            Self::H1(e) => e.tabindex.replace(val),
82579            Self::H2(e) => e.tabindex.replace(val),
82580            Self::H3(e) => e.tabindex.replace(val),
82581            Self::H4(e) => e.tabindex.replace(val),
82582            Self::H5(e) => e.tabindex.replace(val),
82583            Self::H6(e) => e.tabindex.replace(val),
82584            Self::Unknown(e) => e.tabindex.replace(val),
82585        };
82586    }
82587
82588    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
82589    ///   
82590
82591    pub fn set_title(&mut self, val: AttributeValue<'life>) {
82592        match self {
82593            Self::Html(e) => e.title.replace(val),
82594            Self::Base(e) => e.title.replace(val),
82595            Self::Head(e) => e.title.replace(val),
82596            Self::Link(e) => e.title.replace(val),
82597            Self::Meta(e) => e.title.replace(val),
82598            Self::Style(e) => e.title.replace(val),
82599            Self::Title(e) => e.title.replace(val),
82600            Self::Body(e) => e.title.replace(val),
82601            Self::Address(e) => e.title.replace(val),
82602            Self::Article(e) => e.title.replace(val),
82603            Self::Aside(e) => e.title.replace(val),
82604            Self::Footer(e) => e.title.replace(val),
82605            Self::Header(e) => e.title.replace(val),
82606            Self::Hgroup(e) => e.title.replace(val),
82607            Self::Main(e) => e.title.replace(val),
82608            Self::Nav(e) => e.title.replace(val),
82609            Self::Section(e) => e.title.replace(val),
82610            Self::Blockquote(e) => e.title.replace(val),
82611            Self::Dd(e) => e.title.replace(val),
82612            Self::Div(e) => e.title.replace(val),
82613            Self::Dl(e) => e.title.replace(val),
82614            Self::Dt(e) => e.title.replace(val),
82615            Self::Figcaption(e) => e.title.replace(val),
82616            Self::Figure(e) => e.title.replace(val),
82617            Self::Hr(e) => e.title.replace(val),
82618            Self::Li(e) => e.title.replace(val),
82619            Self::Menu(e) => e.title.replace(val),
82620            Self::Ol(e) => e.title.replace(val),
82621            Self::P(e) => e.title.replace(val),
82622            Self::Pre(e) => e.title.replace(val),
82623            Self::Ul(e) => e.title.replace(val),
82624            Self::A(e) => e.title.replace(val),
82625            Self::Abbr(e) => e.title.replace(val),
82626            Self::B(e) => e.title.replace(val),
82627            Self::Bdi(e) => e.title.replace(val),
82628            Self::Bdo(e) => e.title.replace(val),
82629            Self::Br(e) => e.title.replace(val),
82630            Self::Cite(e) => e.title.replace(val),
82631            Self::Code(e) => e.title.replace(val),
82632            Self::Data(e) => e.title.replace(val),
82633            Self::Dfn(e) => e.title.replace(val),
82634            Self::Em(e) => e.title.replace(val),
82635            Self::I(e) => e.title.replace(val),
82636            Self::Kbd(e) => e.title.replace(val),
82637            Self::Mark(e) => e.title.replace(val),
82638            Self::Q(e) => e.title.replace(val),
82639            Self::Rp(e) => e.title.replace(val),
82640            Self::Rt(e) => e.title.replace(val),
82641            Self::Ruby(e) => e.title.replace(val),
82642            Self::S(e) => e.title.replace(val),
82643            Self::Samp(e) => e.title.replace(val),
82644            Self::Small(e) => e.title.replace(val),
82645            Self::Span(e) => e.title.replace(val),
82646            Self::Strong(e) => e.title.replace(val),
82647            Self::Sub(e) => e.title.replace(val),
82648            Self::Sup(e) => e.title.replace(val),
82649            Self::Time(e) => e.title.replace(val),
82650            Self::U(e) => e.title.replace(val),
82651            Self::Var(e) => e.title.replace(val),
82652            Self::Wbr(e) => e.title.replace(val),
82653            Self::Area(e) => e.title.replace(val),
82654            Self::Audio(e) => e.title.replace(val),
82655            Self::Img(e) => e.title.replace(val),
82656            Self::Map(e) => e.title.replace(val),
82657            Self::Track(e) => e.title.replace(val),
82658            Self::Video(e) => e.title.replace(val),
82659            Self::Embed(e) => e.title.replace(val),
82660            Self::Iframe(e) => e.title.replace(val),
82661            Self::Object(e) => e.title.replace(val),
82662            Self::Picture(e) => e.title.replace(val),
82663            Self::Portal(e) => e.title.replace(val),
82664            Self::Source(e) => e.title.replace(val),
82665            Self::Canvas(e) => e.title.replace(val),
82666            Self::Noscript(e) => e.title.replace(val),
82667            Self::Script(e) => e.title.replace(val),
82668            Self::Del(e) => e.title.replace(val),
82669            Self::Ins(e) => e.title.replace(val),
82670            Self::Caption(e) => e.title.replace(val),
82671            Self::Col(e) => e.title.replace(val),
82672            Self::Colgroup(e) => e.title.replace(val),
82673            Self::Table(e) => e.title.replace(val),
82674            Self::Tbody(e) => e.title.replace(val),
82675            Self::Td(e) => e.title.replace(val),
82676            Self::Tfoot(e) => e.title.replace(val),
82677            Self::Th(e) => e.title.replace(val),
82678            Self::Thead(e) => e.title.replace(val),
82679            Self::Tr(e) => e.title.replace(val),
82680            Self::Button(e) => e.title.replace(val),
82681            Self::Datalist(e) => e.title.replace(val),
82682            Self::Fieldset(e) => e.title.replace(val),
82683            Self::Form(e) => e.title.replace(val),
82684            Self::Input(e) => e.title.replace(val),
82685            Self::Label(e) => e.title.replace(val),
82686            Self::Legend(e) => e.title.replace(val),
82687            Self::Meter(e) => e.title.replace(val),
82688            Self::Optgroup(e) => e.title.replace(val),
82689            Self::Option(e) => e.title.replace(val),
82690            Self::Output(e) => e.title.replace(val),
82691            Self::Progress(e) => e.title.replace(val),
82692            Self::Select(e) => e.title.replace(val),
82693            Self::Textarea(e) => e.title.replace(val),
82694            Self::Details(e) => e.title.replace(val),
82695            Self::Dialog(e) => e.title.replace(val),
82696            Self::Summary(e) => e.title.replace(val),
82697            Self::Slot(e) => e.title.replace(val),
82698            Self::Template(e) => e.title.replace(val),
82699            Self::Acronym(e) => e.title.replace(val),
82700            Self::Applet(e) => e.title.replace(val),
82701            Self::Bgsound(e) => e.title.replace(val),
82702            Self::Big(e) => e.title.replace(val),
82703            Self::Blink(e) => e.title.replace(val),
82704            Self::Center(e) => e.title.replace(val),
82705            Self::Dir(e) => e.title.replace(val),
82706            Self::Font(e) => e.title.replace(val),
82707            Self::Frame(e) => e.title.replace(val),
82708            Self::Frameset(e) => e.title.replace(val),
82709            Self::Image(e) => e.title.replace(val),
82710            Self::Keygen(e) => e.title.replace(val),
82711            Self::Marquee(e) => e.title.replace(val),
82712            Self::Menuitem(e) => e.title.replace(val),
82713            Self::Nobr(e) => e.title.replace(val),
82714            Self::Noembed(e) => e.title.replace(val),
82715            Self::Noframes(e) => e.title.replace(val),
82716            Self::Param(e) => e.title.replace(val),
82717            Self::Plaintext(e) => e.title.replace(val),
82718            Self::Rb(e) => e.title.replace(val),
82719            Self::Rtc(e) => e.title.replace(val),
82720            Self::Spacer(e) => e.title.replace(val),
82721            Self::Strike(e) => e.title.replace(val),
82722            Self::Tt(e) => e.title.replace(val),
82723            Self::Xmp(e) => e.title.replace(val),
82724            Self::H1(e) => e.title.replace(val),
82725            Self::H2(e) => e.title.replace(val),
82726            Self::H3(e) => e.title.replace(val),
82727            Self::H4(e) => e.title.replace(val),
82728            Self::H5(e) => e.title.replace(val),
82729            Self::H6(e) => e.title.replace(val),
82730            Self::Unknown(e) => e.title.replace(val),
82731        };
82732    }
82733
82734    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
82735    ///     <ul>
82736    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
82737    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
82738    ///     </ul>
82739    ///   
82740
82741    pub fn set_translate(&mut self, val: AttributeValue<'life>) {
82742        match self {
82743            Self::Html(e) => e.translate.replace(val),
82744            Self::Base(e) => e.translate.replace(val),
82745            Self::Head(e) => e.translate.replace(val),
82746            Self::Link(e) => e.translate.replace(val),
82747            Self::Meta(e) => e.translate.replace(val),
82748            Self::Style(e) => e.translate.replace(val),
82749            Self::Title(e) => e.translate.replace(val),
82750            Self::Body(e) => e.translate.replace(val),
82751            Self::Address(e) => e.translate.replace(val),
82752            Self::Article(e) => e.translate.replace(val),
82753            Self::Aside(e) => e.translate.replace(val),
82754            Self::Footer(e) => e.translate.replace(val),
82755            Self::Header(e) => e.translate.replace(val),
82756            Self::Hgroup(e) => e.translate.replace(val),
82757            Self::Main(e) => e.translate.replace(val),
82758            Self::Nav(e) => e.translate.replace(val),
82759            Self::Section(e) => e.translate.replace(val),
82760            Self::Blockquote(e) => e.translate.replace(val),
82761            Self::Dd(e) => e.translate.replace(val),
82762            Self::Div(e) => e.translate.replace(val),
82763            Self::Dl(e) => e.translate.replace(val),
82764            Self::Dt(e) => e.translate.replace(val),
82765            Self::Figcaption(e) => e.translate.replace(val),
82766            Self::Figure(e) => e.translate.replace(val),
82767            Self::Hr(e) => e.translate.replace(val),
82768            Self::Li(e) => e.translate.replace(val),
82769            Self::Menu(e) => e.translate.replace(val),
82770            Self::Ol(e) => e.translate.replace(val),
82771            Self::P(e) => e.translate.replace(val),
82772            Self::Pre(e) => e.translate.replace(val),
82773            Self::Ul(e) => e.translate.replace(val),
82774            Self::A(e) => e.translate.replace(val),
82775            Self::Abbr(e) => e.translate.replace(val),
82776            Self::B(e) => e.translate.replace(val),
82777            Self::Bdi(e) => e.translate.replace(val),
82778            Self::Bdo(e) => e.translate.replace(val),
82779            Self::Br(e) => e.translate.replace(val),
82780            Self::Cite(e) => e.translate.replace(val),
82781            Self::Code(e) => e.translate.replace(val),
82782            Self::Data(e) => e.translate.replace(val),
82783            Self::Dfn(e) => e.translate.replace(val),
82784            Self::Em(e) => e.translate.replace(val),
82785            Self::I(e) => e.translate.replace(val),
82786            Self::Kbd(e) => e.translate.replace(val),
82787            Self::Mark(e) => e.translate.replace(val),
82788            Self::Q(e) => e.translate.replace(val),
82789            Self::Rp(e) => e.translate.replace(val),
82790            Self::Rt(e) => e.translate.replace(val),
82791            Self::Ruby(e) => e.translate.replace(val),
82792            Self::S(e) => e.translate.replace(val),
82793            Self::Samp(e) => e.translate.replace(val),
82794            Self::Small(e) => e.translate.replace(val),
82795            Self::Span(e) => e.translate.replace(val),
82796            Self::Strong(e) => e.translate.replace(val),
82797            Self::Sub(e) => e.translate.replace(val),
82798            Self::Sup(e) => e.translate.replace(val),
82799            Self::Time(e) => e.translate.replace(val),
82800            Self::U(e) => e.translate.replace(val),
82801            Self::Var(e) => e.translate.replace(val),
82802            Self::Wbr(e) => e.translate.replace(val),
82803            Self::Area(e) => e.translate.replace(val),
82804            Self::Audio(e) => e.translate.replace(val),
82805            Self::Img(e) => e.translate.replace(val),
82806            Self::Map(e) => e.translate.replace(val),
82807            Self::Track(e) => e.translate.replace(val),
82808            Self::Video(e) => e.translate.replace(val),
82809            Self::Embed(e) => e.translate.replace(val),
82810            Self::Iframe(e) => e.translate.replace(val),
82811            Self::Object(e) => e.translate.replace(val),
82812            Self::Picture(e) => e.translate.replace(val),
82813            Self::Portal(e) => e.translate.replace(val),
82814            Self::Source(e) => e.translate.replace(val),
82815            Self::Canvas(e) => e.translate.replace(val),
82816            Self::Noscript(e) => e.translate.replace(val),
82817            Self::Script(e) => e.translate.replace(val),
82818            Self::Del(e) => e.translate.replace(val),
82819            Self::Ins(e) => e.translate.replace(val),
82820            Self::Caption(e) => e.translate.replace(val),
82821            Self::Col(e) => e.translate.replace(val),
82822            Self::Colgroup(e) => e.translate.replace(val),
82823            Self::Table(e) => e.translate.replace(val),
82824            Self::Tbody(e) => e.translate.replace(val),
82825            Self::Td(e) => e.translate.replace(val),
82826            Self::Tfoot(e) => e.translate.replace(val),
82827            Self::Th(e) => e.translate.replace(val),
82828            Self::Thead(e) => e.translate.replace(val),
82829            Self::Tr(e) => e.translate.replace(val),
82830            Self::Button(e) => e.translate.replace(val),
82831            Self::Datalist(e) => e.translate.replace(val),
82832            Self::Fieldset(e) => e.translate.replace(val),
82833            Self::Form(e) => e.translate.replace(val),
82834            Self::Input(e) => e.translate.replace(val),
82835            Self::Label(e) => e.translate.replace(val),
82836            Self::Legend(e) => e.translate.replace(val),
82837            Self::Meter(e) => e.translate.replace(val),
82838            Self::Optgroup(e) => e.translate.replace(val),
82839            Self::Option(e) => e.translate.replace(val),
82840            Self::Output(e) => e.translate.replace(val),
82841            Self::Progress(e) => e.translate.replace(val),
82842            Self::Select(e) => e.translate.replace(val),
82843            Self::Textarea(e) => e.translate.replace(val),
82844            Self::Details(e) => e.translate.replace(val),
82845            Self::Dialog(e) => e.translate.replace(val),
82846            Self::Summary(e) => e.translate.replace(val),
82847            Self::Slot(e) => e.translate.replace(val),
82848            Self::Template(e) => e.translate.replace(val),
82849            Self::Acronym(e) => e.translate.replace(val),
82850            Self::Applet(e) => e.translate.replace(val),
82851            Self::Bgsound(e) => e.translate.replace(val),
82852            Self::Big(e) => e.translate.replace(val),
82853            Self::Blink(e) => e.translate.replace(val),
82854            Self::Center(e) => e.translate.replace(val),
82855            Self::Dir(e) => e.translate.replace(val),
82856            Self::Font(e) => e.translate.replace(val),
82857            Self::Frame(e) => e.translate.replace(val),
82858            Self::Frameset(e) => e.translate.replace(val),
82859            Self::Image(e) => e.translate.replace(val),
82860            Self::Keygen(e) => e.translate.replace(val),
82861            Self::Marquee(e) => e.translate.replace(val),
82862            Self::Menuitem(e) => e.translate.replace(val),
82863            Self::Nobr(e) => e.translate.replace(val),
82864            Self::Noembed(e) => e.translate.replace(val),
82865            Self::Noframes(e) => e.translate.replace(val),
82866            Self::Param(e) => e.translate.replace(val),
82867            Self::Plaintext(e) => e.translate.replace(val),
82868            Self::Rb(e) => e.translate.replace(val),
82869            Self::Rtc(e) => e.translate.replace(val),
82870            Self::Spacer(e) => e.translate.replace(val),
82871            Self::Strike(e) => e.translate.replace(val),
82872            Self::Tt(e) => e.translate.replace(val),
82873            Self::Xmp(e) => e.translate.replace(val),
82874            Self::H1(e) => e.translate.replace(val),
82875            Self::H2(e) => e.translate.replace(val),
82876            Self::H3(e) => e.translate.replace(val),
82877            Self::H4(e) => e.translate.replace(val),
82878            Self::H5(e) => e.translate.replace(val),
82879            Self::H6(e) => e.translate.replace(val),
82880            Self::Unknown(e) => e.translate.replace(val),
82881        };
82882    }
82883
82884    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
82885    ///     <ul>
82886    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
82887    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
82888    ///     </ul>
82889    ///   
82890
82891    pub fn set_virtualkeyboardpolicy(&mut self, val: AttributeValue<'life>) {
82892        match self {
82893            Self::Html(e) => e.virtualkeyboardpolicy.replace(val),
82894            Self::Base(e) => e.virtualkeyboardpolicy.replace(val),
82895            Self::Head(e) => e.virtualkeyboardpolicy.replace(val),
82896            Self::Link(e) => e.virtualkeyboardpolicy.replace(val),
82897            Self::Meta(e) => e.virtualkeyboardpolicy.replace(val),
82898            Self::Style(e) => e.virtualkeyboardpolicy.replace(val),
82899            Self::Title(e) => e.virtualkeyboardpolicy.replace(val),
82900            Self::Body(e) => e.virtualkeyboardpolicy.replace(val),
82901            Self::Address(e) => e.virtualkeyboardpolicy.replace(val),
82902            Self::Article(e) => e.virtualkeyboardpolicy.replace(val),
82903            Self::Aside(e) => e.virtualkeyboardpolicy.replace(val),
82904            Self::Footer(e) => e.virtualkeyboardpolicy.replace(val),
82905            Self::Header(e) => e.virtualkeyboardpolicy.replace(val),
82906            Self::Hgroup(e) => e.virtualkeyboardpolicy.replace(val),
82907            Self::Main(e) => e.virtualkeyboardpolicy.replace(val),
82908            Self::Nav(e) => e.virtualkeyboardpolicy.replace(val),
82909            Self::Section(e) => e.virtualkeyboardpolicy.replace(val),
82910            Self::Blockquote(e) => e.virtualkeyboardpolicy.replace(val),
82911            Self::Dd(e) => e.virtualkeyboardpolicy.replace(val),
82912            Self::Div(e) => e.virtualkeyboardpolicy.replace(val),
82913            Self::Dl(e) => e.virtualkeyboardpolicy.replace(val),
82914            Self::Dt(e) => e.virtualkeyboardpolicy.replace(val),
82915            Self::Figcaption(e) => e.virtualkeyboardpolicy.replace(val),
82916            Self::Figure(e) => e.virtualkeyboardpolicy.replace(val),
82917            Self::Hr(e) => e.virtualkeyboardpolicy.replace(val),
82918            Self::Li(e) => e.virtualkeyboardpolicy.replace(val),
82919            Self::Menu(e) => e.virtualkeyboardpolicy.replace(val),
82920            Self::Ol(e) => e.virtualkeyboardpolicy.replace(val),
82921            Self::P(e) => e.virtualkeyboardpolicy.replace(val),
82922            Self::Pre(e) => e.virtualkeyboardpolicy.replace(val),
82923            Self::Ul(e) => e.virtualkeyboardpolicy.replace(val),
82924            Self::A(e) => e.virtualkeyboardpolicy.replace(val),
82925            Self::Abbr(e) => e.virtualkeyboardpolicy.replace(val),
82926            Self::B(e) => e.virtualkeyboardpolicy.replace(val),
82927            Self::Bdi(e) => e.virtualkeyboardpolicy.replace(val),
82928            Self::Bdo(e) => e.virtualkeyboardpolicy.replace(val),
82929            Self::Br(e) => e.virtualkeyboardpolicy.replace(val),
82930            Self::Cite(e) => e.virtualkeyboardpolicy.replace(val),
82931            Self::Code(e) => e.virtualkeyboardpolicy.replace(val),
82932            Self::Data(e) => e.virtualkeyboardpolicy.replace(val),
82933            Self::Dfn(e) => e.virtualkeyboardpolicy.replace(val),
82934            Self::Em(e) => e.virtualkeyboardpolicy.replace(val),
82935            Self::I(e) => e.virtualkeyboardpolicy.replace(val),
82936            Self::Kbd(e) => e.virtualkeyboardpolicy.replace(val),
82937            Self::Mark(e) => e.virtualkeyboardpolicy.replace(val),
82938            Self::Q(e) => e.virtualkeyboardpolicy.replace(val),
82939            Self::Rp(e) => e.virtualkeyboardpolicy.replace(val),
82940            Self::Rt(e) => e.virtualkeyboardpolicy.replace(val),
82941            Self::Ruby(e) => e.virtualkeyboardpolicy.replace(val),
82942            Self::S(e) => e.virtualkeyboardpolicy.replace(val),
82943            Self::Samp(e) => e.virtualkeyboardpolicy.replace(val),
82944            Self::Small(e) => e.virtualkeyboardpolicy.replace(val),
82945            Self::Span(e) => e.virtualkeyboardpolicy.replace(val),
82946            Self::Strong(e) => e.virtualkeyboardpolicy.replace(val),
82947            Self::Sub(e) => e.virtualkeyboardpolicy.replace(val),
82948            Self::Sup(e) => e.virtualkeyboardpolicy.replace(val),
82949            Self::Time(e) => e.virtualkeyboardpolicy.replace(val),
82950            Self::U(e) => e.virtualkeyboardpolicy.replace(val),
82951            Self::Var(e) => e.virtualkeyboardpolicy.replace(val),
82952            Self::Wbr(e) => e.virtualkeyboardpolicy.replace(val),
82953            Self::Area(e) => e.virtualkeyboardpolicy.replace(val),
82954            Self::Audio(e) => e.virtualkeyboardpolicy.replace(val),
82955            Self::Img(e) => e.virtualkeyboardpolicy.replace(val),
82956            Self::Map(e) => e.virtualkeyboardpolicy.replace(val),
82957            Self::Track(e) => e.virtualkeyboardpolicy.replace(val),
82958            Self::Video(e) => e.virtualkeyboardpolicy.replace(val),
82959            Self::Embed(e) => e.virtualkeyboardpolicy.replace(val),
82960            Self::Iframe(e) => e.virtualkeyboardpolicy.replace(val),
82961            Self::Object(e) => e.virtualkeyboardpolicy.replace(val),
82962            Self::Picture(e) => e.virtualkeyboardpolicy.replace(val),
82963            Self::Portal(e) => e.virtualkeyboardpolicy.replace(val),
82964            Self::Source(e) => e.virtualkeyboardpolicy.replace(val),
82965            Self::Canvas(e) => e.virtualkeyboardpolicy.replace(val),
82966            Self::Noscript(e) => e.virtualkeyboardpolicy.replace(val),
82967            Self::Script(e) => e.virtualkeyboardpolicy.replace(val),
82968            Self::Del(e) => e.virtualkeyboardpolicy.replace(val),
82969            Self::Ins(e) => e.virtualkeyboardpolicy.replace(val),
82970            Self::Caption(e) => e.virtualkeyboardpolicy.replace(val),
82971            Self::Col(e) => e.virtualkeyboardpolicy.replace(val),
82972            Self::Colgroup(e) => e.virtualkeyboardpolicy.replace(val),
82973            Self::Table(e) => e.virtualkeyboardpolicy.replace(val),
82974            Self::Tbody(e) => e.virtualkeyboardpolicy.replace(val),
82975            Self::Td(e) => e.virtualkeyboardpolicy.replace(val),
82976            Self::Tfoot(e) => e.virtualkeyboardpolicy.replace(val),
82977            Self::Th(e) => e.virtualkeyboardpolicy.replace(val),
82978            Self::Thead(e) => e.virtualkeyboardpolicy.replace(val),
82979            Self::Tr(e) => e.virtualkeyboardpolicy.replace(val),
82980            Self::Button(e) => e.virtualkeyboardpolicy.replace(val),
82981            Self::Datalist(e) => e.virtualkeyboardpolicy.replace(val),
82982            Self::Fieldset(e) => e.virtualkeyboardpolicy.replace(val),
82983            Self::Form(e) => e.virtualkeyboardpolicy.replace(val),
82984            Self::Input(e) => e.virtualkeyboardpolicy.replace(val),
82985            Self::Label(e) => e.virtualkeyboardpolicy.replace(val),
82986            Self::Legend(e) => e.virtualkeyboardpolicy.replace(val),
82987            Self::Meter(e) => e.virtualkeyboardpolicy.replace(val),
82988            Self::Optgroup(e) => e.virtualkeyboardpolicy.replace(val),
82989            Self::Option(e) => e.virtualkeyboardpolicy.replace(val),
82990            Self::Output(e) => e.virtualkeyboardpolicy.replace(val),
82991            Self::Progress(e) => e.virtualkeyboardpolicy.replace(val),
82992            Self::Select(e) => e.virtualkeyboardpolicy.replace(val),
82993            Self::Textarea(e) => e.virtualkeyboardpolicy.replace(val),
82994            Self::Details(e) => e.virtualkeyboardpolicy.replace(val),
82995            Self::Dialog(e) => e.virtualkeyboardpolicy.replace(val),
82996            Self::Summary(e) => e.virtualkeyboardpolicy.replace(val),
82997            Self::Slot(e) => e.virtualkeyboardpolicy.replace(val),
82998            Self::Template(e) => e.virtualkeyboardpolicy.replace(val),
82999            Self::Acronym(e) => e.virtualkeyboardpolicy.replace(val),
83000            Self::Applet(e) => e.virtualkeyboardpolicy.replace(val),
83001            Self::Bgsound(e) => e.virtualkeyboardpolicy.replace(val),
83002            Self::Big(e) => e.virtualkeyboardpolicy.replace(val),
83003            Self::Blink(e) => e.virtualkeyboardpolicy.replace(val),
83004            Self::Center(e) => e.virtualkeyboardpolicy.replace(val),
83005            Self::Dir(e) => e.virtualkeyboardpolicy.replace(val),
83006            Self::Font(e) => e.virtualkeyboardpolicy.replace(val),
83007            Self::Frame(e) => e.virtualkeyboardpolicy.replace(val),
83008            Self::Frameset(e) => e.virtualkeyboardpolicy.replace(val),
83009            Self::Image(e) => e.virtualkeyboardpolicy.replace(val),
83010            Self::Keygen(e) => e.virtualkeyboardpolicy.replace(val),
83011            Self::Marquee(e) => e.virtualkeyboardpolicy.replace(val),
83012            Self::Menuitem(e) => e.virtualkeyboardpolicy.replace(val),
83013            Self::Nobr(e) => e.virtualkeyboardpolicy.replace(val),
83014            Self::Noembed(e) => e.virtualkeyboardpolicy.replace(val),
83015            Self::Noframes(e) => e.virtualkeyboardpolicy.replace(val),
83016            Self::Param(e) => e.virtualkeyboardpolicy.replace(val),
83017            Self::Plaintext(e) => e.virtualkeyboardpolicy.replace(val),
83018            Self::Rb(e) => e.virtualkeyboardpolicy.replace(val),
83019            Self::Rtc(e) => e.virtualkeyboardpolicy.replace(val),
83020            Self::Spacer(e) => e.virtualkeyboardpolicy.replace(val),
83021            Self::Strike(e) => e.virtualkeyboardpolicy.replace(val),
83022            Self::Tt(e) => e.virtualkeyboardpolicy.replace(val),
83023            Self::Xmp(e) => e.virtualkeyboardpolicy.replace(val),
83024            Self::H1(e) => e.virtualkeyboardpolicy.replace(val),
83025            Self::H2(e) => e.virtualkeyboardpolicy.replace(val),
83026            Self::H3(e) => e.virtualkeyboardpolicy.replace(val),
83027            Self::H4(e) => e.virtualkeyboardpolicy.replace(val),
83028            Self::H5(e) => e.virtualkeyboardpolicy.replace(val),
83029            Self::H6(e) => e.virtualkeyboardpolicy.replace(val),
83030            Self::Unknown(e) => e.virtualkeyboardpolicy.replace(val),
83031        };
83032    }
83033}
83034#[allow(deprecated)]
83035
83036impl<'life> Default for Element<'life> {
83037    fn default() -> Self {
83038        Self::Unknown(Unknown::default())
83039    }
83040}
83041#[allow(deprecated)]
83042#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord)]
83043#[cfg(feature = "alloc")]
83044pub enum ElementOwned {
83045    Html(HtmlOwned),
83046    Base(BaseOwned),
83047    Head(HeadOwned),
83048    Link(LinkOwned),
83049    Meta(MetaOwned),
83050    Style(StyleOwned),
83051    Title(TitleOwned),
83052    Body(BodyOwned),
83053    Address(AddressOwned),
83054    Article(ArticleOwned),
83055    Aside(AsideOwned),
83056    Footer(FooterOwned),
83057    Header(HeaderOwned),
83058    Hgroup(HgroupOwned),
83059    Main(MainOwned),
83060    Nav(NavOwned),
83061    Section(SectionOwned),
83062    Blockquote(BlockquoteOwned),
83063    Dd(DdOwned),
83064    Div(DivOwned),
83065    Dl(DlOwned),
83066    Dt(DtOwned),
83067    Figcaption(FigcaptionOwned),
83068    Figure(FigureOwned),
83069    Hr(HrOwned),
83070    Li(LiOwned),
83071    Menu(MenuOwned),
83072    Ol(OlOwned),
83073    P(POwned),
83074    Pre(PreOwned),
83075    Ul(UlOwned),
83076    A(AOwned),
83077    Abbr(AbbrOwned),
83078    B(BOwned),
83079    Bdi(BdiOwned),
83080    Bdo(BdoOwned),
83081    Br(BrOwned),
83082    Cite(CiteOwned),
83083    Code(CodeOwned),
83084    Data(DataOwned),
83085    Dfn(DfnOwned),
83086    Em(EmOwned),
83087    I(IOwned),
83088    Kbd(KbdOwned),
83089    Mark(MarkOwned),
83090    Q(QOwned),
83091    Rp(RpOwned),
83092    Rt(RtOwned),
83093    Ruby(RubyOwned),
83094    S(SOwned),
83095    Samp(SampOwned),
83096    Small(SmallOwned),
83097    Span(SpanOwned),
83098    Strong(StrongOwned),
83099    Sub(SubOwned),
83100    Sup(SupOwned),
83101    Time(TimeOwned),
83102    U(UOwned),
83103    Var(VarOwned),
83104    Wbr(WbrOwned),
83105    Area(AreaOwned),
83106    Audio(AudioOwned),
83107    Img(ImgOwned),
83108    Map(MapOwned),
83109    Track(TrackOwned),
83110    Video(VideoOwned),
83111    Embed(EmbedOwned),
83112    Iframe(IframeOwned),
83113    Object(ObjectOwned),
83114    Picture(PictureOwned),
83115    Portal(PortalOwned),
83116    Source(SourceOwned),
83117    Canvas(CanvasOwned),
83118    Noscript(NoscriptOwned),
83119    Script(ScriptOwned),
83120    Del(DelOwned),
83121    Ins(InsOwned),
83122    Caption(CaptionOwned),
83123    Col(ColOwned),
83124    Colgroup(ColgroupOwned),
83125    Table(TableOwned),
83126    Tbody(TbodyOwned),
83127    Td(TdOwned),
83128    Tfoot(TfootOwned),
83129    Th(ThOwned),
83130    Thead(TheadOwned),
83131    Tr(TrOwned),
83132    Button(ButtonOwned),
83133    Datalist(DatalistOwned),
83134    Fieldset(FieldsetOwned),
83135    Form(FormOwned),
83136    Input(InputOwned),
83137    Label(LabelOwned),
83138    Legend(LegendOwned),
83139    Meter(MeterOwned),
83140    Optgroup(OptgroupOwned),
83141    Option(OptionOwned),
83142    Output(OutputOwned),
83143    Progress(ProgressOwned),
83144    Select(SelectOwned),
83145    Textarea(TextareaOwned),
83146    Details(DetailsOwned),
83147    Dialog(DialogOwned),
83148    Summary(SummaryOwned),
83149    Slot(SlotOwned),
83150    Template(TemplateOwned),
83151    #[deprecated]
83152    Acronym(AcronymOwned),
83153    #[deprecated]
83154    Applet(AppletOwned),
83155    #[deprecated]
83156    Bgsound(BgsoundOwned),
83157    #[deprecated]
83158    Big(BigOwned),
83159    #[deprecated]
83160    Blink(BlinkOwned),
83161    #[deprecated]
83162    Center(CenterOwned),
83163    #[deprecated]
83164    Dir(DirOwned),
83165    #[deprecated]
83166    Font(FontOwned),
83167    #[deprecated]
83168    Frame(FrameOwned),
83169    #[deprecated]
83170    Frameset(FramesetOwned),
83171    #[deprecated]
83172    Image(ImageOwned),
83173    #[deprecated]
83174    Keygen(KeygenOwned),
83175    #[deprecated]
83176    Marquee(MarqueeOwned),
83177    #[deprecated]
83178    Menuitem(MenuitemOwned),
83179    #[deprecated]
83180    Nobr(NobrOwned),
83181    #[deprecated]
83182    Noembed(NoembedOwned),
83183    #[deprecated]
83184    Noframes(NoframesOwned),
83185    #[deprecated]
83186    Param(ParamOwned),
83187    #[deprecated]
83188    Plaintext(PlaintextOwned),
83189    #[deprecated]
83190    Rb(RbOwned),
83191    #[deprecated]
83192    Rtc(RtcOwned),
83193    #[deprecated]
83194    Spacer(SpacerOwned),
83195    #[deprecated]
83196    Strike(StrikeOwned),
83197    #[deprecated]
83198    Tt(TtOwned),
83199    #[deprecated]
83200    Xmp(XmpOwned),
83201    H1(H1Owned),
83202    H2(H2Owned),
83203    H3(H3Owned),
83204    H4(H4Owned),
83205    H5(H5Owned),
83206    H6(H6Owned),
83207    Unknown(UnknownOwned),
83208}
83209#[allow(deprecated)]
83210#[cfg(feature = "alloc")]
83211impl ElementOwned {
83212    /// Gets an element from a lowercase tag name.
83213    pub fn from_tag(tag: &str) -> Self {
83214        match tag {
83215            "html" => Self::Html(HtmlOwned::default()),
83216            "base" => Self::Base(BaseOwned::default()),
83217            "head" => Self::Head(HeadOwned::default()),
83218            "link" => Self::Link(LinkOwned::default()),
83219            "meta" => Self::Meta(MetaOwned::default()),
83220            "style" => Self::Style(StyleOwned::default()),
83221            "title" => Self::Title(TitleOwned::default()),
83222            "body" => Self::Body(BodyOwned::default()),
83223            "address" => Self::Address(AddressOwned::default()),
83224            "article" => Self::Article(ArticleOwned::default()),
83225            "aside" => Self::Aside(AsideOwned::default()),
83226            "footer" => Self::Footer(FooterOwned::default()),
83227            "header" => Self::Header(HeaderOwned::default()),
83228            "hgroup" => Self::Hgroup(HgroupOwned::default()),
83229            "main" => Self::Main(MainOwned::default()),
83230            "nav" => Self::Nav(NavOwned::default()),
83231            "section" => Self::Section(SectionOwned::default()),
83232            "blockquote" => Self::Blockquote(BlockquoteOwned::default()),
83233            "dd" => Self::Dd(DdOwned::default()),
83234            "div" => Self::Div(DivOwned::default()),
83235            "dl" => Self::Dl(DlOwned::default()),
83236            "dt" => Self::Dt(DtOwned::default()),
83237            "figcaption" => Self::Figcaption(FigcaptionOwned::default()),
83238            "figure" => Self::Figure(FigureOwned::default()),
83239            "hr" => Self::Hr(HrOwned::default()),
83240            "li" => Self::Li(LiOwned::default()),
83241            "menu" => Self::Menu(MenuOwned::default()),
83242            "ol" => Self::Ol(OlOwned::default()),
83243            "p" => Self::P(POwned::default()),
83244            "pre" => Self::Pre(PreOwned::default()),
83245            "ul" => Self::Ul(UlOwned::default()),
83246            "a" => Self::A(AOwned::default()),
83247            "abbr" => Self::Abbr(AbbrOwned::default()),
83248            "b" => Self::B(BOwned::default()),
83249            "bdi" => Self::Bdi(BdiOwned::default()),
83250            "bdo" => Self::Bdo(BdoOwned::default()),
83251            "br" => Self::Br(BrOwned::default()),
83252            "cite" => Self::Cite(CiteOwned::default()),
83253            "code" => Self::Code(CodeOwned::default()),
83254            "data" => Self::Data(DataOwned::default()),
83255            "dfn" => Self::Dfn(DfnOwned::default()),
83256            "em" => Self::Em(EmOwned::default()),
83257            "i" => Self::I(IOwned::default()),
83258            "kbd" => Self::Kbd(KbdOwned::default()),
83259            "mark" => Self::Mark(MarkOwned::default()),
83260            "q" => Self::Q(QOwned::default()),
83261            "rp" => Self::Rp(RpOwned::default()),
83262            "rt" => Self::Rt(RtOwned::default()),
83263            "ruby" => Self::Ruby(RubyOwned::default()),
83264            "s" => Self::S(SOwned::default()),
83265            "samp" => Self::Samp(SampOwned::default()),
83266            "small" => Self::Small(SmallOwned::default()),
83267            "span" => Self::Span(SpanOwned::default()),
83268            "strong" => Self::Strong(StrongOwned::default()),
83269            "sub" => Self::Sub(SubOwned::default()),
83270            "sup" => Self::Sup(SupOwned::default()),
83271            "time" => Self::Time(TimeOwned::default()),
83272            "u" => Self::U(UOwned::default()),
83273            "var" => Self::Var(VarOwned::default()),
83274            "wbr" => Self::Wbr(WbrOwned::default()),
83275            "area" => Self::Area(AreaOwned::default()),
83276            "audio" => Self::Audio(AudioOwned::default()),
83277            "img" => Self::Img(ImgOwned::default()),
83278            "map" => Self::Map(MapOwned::default()),
83279            "track" => Self::Track(TrackOwned::default()),
83280            "video" => Self::Video(VideoOwned::default()),
83281            "embed" => Self::Embed(EmbedOwned::default()),
83282            "iframe" => Self::Iframe(IframeOwned::default()),
83283            "object" => Self::Object(ObjectOwned::default()),
83284            "picture" => Self::Picture(PictureOwned::default()),
83285            "portal" => Self::Portal(PortalOwned::default()),
83286            "source" => Self::Source(SourceOwned::default()),
83287            "canvas" => Self::Canvas(CanvasOwned::default()),
83288            "noscript" => Self::Noscript(NoscriptOwned::default()),
83289            "script" => Self::Script(ScriptOwned::default()),
83290            "del" => Self::Del(DelOwned::default()),
83291            "ins" => Self::Ins(InsOwned::default()),
83292            "caption" => Self::Caption(CaptionOwned::default()),
83293            "col" => Self::Col(ColOwned::default()),
83294            "colgroup" => Self::Colgroup(ColgroupOwned::default()),
83295            "table" => Self::Table(TableOwned::default()),
83296            "tbody" => Self::Tbody(TbodyOwned::default()),
83297            "td" => Self::Td(TdOwned::default()),
83298            "tfoot" => Self::Tfoot(TfootOwned::default()),
83299            "th" => Self::Th(ThOwned::default()),
83300            "thead" => Self::Thead(TheadOwned::default()),
83301            "tr" => Self::Tr(TrOwned::default()),
83302            "button" => Self::Button(ButtonOwned::default()),
83303            "datalist" => Self::Datalist(DatalistOwned::default()),
83304            "fieldset" => Self::Fieldset(FieldsetOwned::default()),
83305            "form" => Self::Form(FormOwned::default()),
83306            "input" => Self::Input(InputOwned::default()),
83307            "label" => Self::Label(LabelOwned::default()),
83308            "legend" => Self::Legend(LegendOwned::default()),
83309            "meter" => Self::Meter(MeterOwned::default()),
83310            "optgroup" => Self::Optgroup(OptgroupOwned::default()),
83311            "option" => Self::Option(OptionOwned::default()),
83312            "output" => Self::Output(OutputOwned::default()),
83313            "progress" => Self::Progress(ProgressOwned::default()),
83314            "select" => Self::Select(SelectOwned::default()),
83315            "textarea" => Self::Textarea(TextareaOwned::default()),
83316            "details" => Self::Details(DetailsOwned::default()),
83317            "dialog" => Self::Dialog(DialogOwned::default()),
83318            "summary" => Self::Summary(SummaryOwned::default()),
83319            "slot" => Self::Slot(SlotOwned::default()),
83320            "template" => Self::Template(TemplateOwned::default()),
83321            "acronym" => Self::Acronym(AcronymOwned::default()),
83322            "applet" => Self::Applet(AppletOwned::default()),
83323            "bgsound" => Self::Bgsound(BgsoundOwned::default()),
83324            "big" => Self::Big(BigOwned::default()),
83325            "blink" => Self::Blink(BlinkOwned::default()),
83326            "center" => Self::Center(CenterOwned::default()),
83327            "dir" => Self::Dir(DirOwned::default()),
83328            "font" => Self::Font(FontOwned::default()),
83329            "frame" => Self::Frame(FrameOwned::default()),
83330            "frameset" => Self::Frameset(FramesetOwned::default()),
83331            "image" => Self::Image(ImageOwned::default()),
83332            "keygen" => Self::Keygen(KeygenOwned::default()),
83333            "marquee" => Self::Marquee(MarqueeOwned::default()),
83334            "menuitem" => Self::Menuitem(MenuitemOwned::default()),
83335            "nobr" => Self::Nobr(NobrOwned::default()),
83336            "noembed" => Self::Noembed(NoembedOwned::default()),
83337            "noframes" => Self::Noframes(NoframesOwned::default()),
83338            "param" => Self::Param(ParamOwned::default()),
83339            "plaintext" => Self::Plaintext(PlaintextOwned::default()),
83340            "rb" => Self::Rb(RbOwned::default()),
83341            "rtc" => Self::Rtc(RtcOwned::default()),
83342            "spacer" => Self::Spacer(SpacerOwned::default()),
83343            "strike" => Self::Strike(StrikeOwned::default()),
83344            "tt" => Self::Tt(TtOwned::default()),
83345            "xmp" => Self::Xmp(XmpOwned::default()),
83346            "h1" => Self::H1(H1Owned::default()),
83347            "h2" => Self::H2(H2Owned::default()),
83348            "h3" => Self::H3(H3Owned::default()),
83349            "h4" => Self::H4(H4Owned::default()),
83350            "h5" => Self::H5(H5Owned::default()),
83351            "h6" => Self::H6(H6Owned::default()),
83352            "unknown" => Self::Unknown(UnknownOwned::default()),
83353            _ => Self::default(),
83354        }
83355    }
83356    /// Gets the tag name of the element.
83357    pub fn tag(&self) -> &'static str {
83358        match self {
83359            Self::Html(_) => Html::tag(),
83360            Self::Base(_) => Base::tag(),
83361            Self::Head(_) => Head::tag(),
83362            Self::Link(_) => Link::tag(),
83363            Self::Meta(_) => Meta::tag(),
83364            Self::Style(_) => Style::tag(),
83365            Self::Title(_) => Title::tag(),
83366            Self::Body(_) => Body::tag(),
83367            Self::Address(_) => Address::tag(),
83368            Self::Article(_) => Article::tag(),
83369            Self::Aside(_) => Aside::tag(),
83370            Self::Footer(_) => Footer::tag(),
83371            Self::Header(_) => Header::tag(),
83372            Self::Hgroup(_) => Hgroup::tag(),
83373            Self::Main(_) => Main::tag(),
83374            Self::Nav(_) => Nav::tag(),
83375            Self::Section(_) => Section::tag(),
83376            Self::Blockquote(_) => Blockquote::tag(),
83377            Self::Dd(_) => Dd::tag(),
83378            Self::Div(_) => Div::tag(),
83379            Self::Dl(_) => Dl::tag(),
83380            Self::Dt(_) => Dt::tag(),
83381            Self::Figcaption(_) => Figcaption::tag(),
83382            Self::Figure(_) => Figure::tag(),
83383            Self::Hr(_) => Hr::tag(),
83384            Self::Li(_) => Li::tag(),
83385            Self::Menu(_) => Menu::tag(),
83386            Self::Ol(_) => Ol::tag(),
83387            Self::P(_) => P::tag(),
83388            Self::Pre(_) => Pre::tag(),
83389            Self::Ul(_) => Ul::tag(),
83390            Self::A(_) => A::tag(),
83391            Self::Abbr(_) => Abbr::tag(),
83392            Self::B(_) => B::tag(),
83393            Self::Bdi(_) => Bdi::tag(),
83394            Self::Bdo(_) => Bdo::tag(),
83395            Self::Br(_) => Br::tag(),
83396            Self::Cite(_) => Cite::tag(),
83397            Self::Code(_) => Code::tag(),
83398            Self::Data(_) => Data::tag(),
83399            Self::Dfn(_) => Dfn::tag(),
83400            Self::Em(_) => Em::tag(),
83401            Self::I(_) => I::tag(),
83402            Self::Kbd(_) => Kbd::tag(),
83403            Self::Mark(_) => Mark::tag(),
83404            Self::Q(_) => Q::tag(),
83405            Self::Rp(_) => Rp::tag(),
83406            Self::Rt(_) => Rt::tag(),
83407            Self::Ruby(_) => Ruby::tag(),
83408            Self::S(_) => S::tag(),
83409            Self::Samp(_) => Samp::tag(),
83410            Self::Small(_) => Small::tag(),
83411            Self::Span(_) => Span::tag(),
83412            Self::Strong(_) => Strong::tag(),
83413            Self::Sub(_) => Sub::tag(),
83414            Self::Sup(_) => Sup::tag(),
83415            Self::Time(_) => Time::tag(),
83416            Self::U(_) => U::tag(),
83417            Self::Var(_) => Var::tag(),
83418            Self::Wbr(_) => Wbr::tag(),
83419            Self::Area(_) => Area::tag(),
83420            Self::Audio(_) => Audio::tag(),
83421            Self::Img(_) => Img::tag(),
83422            Self::Map(_) => Map::tag(),
83423            Self::Track(_) => Track::tag(),
83424            Self::Video(_) => Video::tag(),
83425            Self::Embed(_) => Embed::tag(),
83426            Self::Iframe(_) => Iframe::tag(),
83427            Self::Object(_) => Object::tag(),
83428            Self::Picture(_) => Picture::tag(),
83429            Self::Portal(_) => Portal::tag(),
83430            Self::Source(_) => Source::tag(),
83431            Self::Canvas(_) => Canvas::tag(),
83432            Self::Noscript(_) => Noscript::tag(),
83433            Self::Script(_) => Script::tag(),
83434            Self::Del(_) => Del::tag(),
83435            Self::Ins(_) => Ins::tag(),
83436            Self::Caption(_) => Caption::tag(),
83437            Self::Col(_) => Col::tag(),
83438            Self::Colgroup(_) => Colgroup::tag(),
83439            Self::Table(_) => Table::tag(),
83440            Self::Tbody(_) => Tbody::tag(),
83441            Self::Td(_) => Td::tag(),
83442            Self::Tfoot(_) => Tfoot::tag(),
83443            Self::Th(_) => Th::tag(),
83444            Self::Thead(_) => Thead::tag(),
83445            Self::Tr(_) => Tr::tag(),
83446            Self::Button(_) => Button::tag(),
83447            Self::Datalist(_) => Datalist::tag(),
83448            Self::Fieldset(_) => Fieldset::tag(),
83449            Self::Form(_) => Form::tag(),
83450            Self::Input(_) => Input::tag(),
83451            Self::Label(_) => Label::tag(),
83452            Self::Legend(_) => Legend::tag(),
83453            Self::Meter(_) => Meter::tag(),
83454            Self::Optgroup(_) => Optgroup::tag(),
83455            Self::Option(_) => Option::tag(),
83456            Self::Output(_) => Output::tag(),
83457            Self::Progress(_) => Progress::tag(),
83458            Self::Select(_) => Select::tag(),
83459            Self::Textarea(_) => Textarea::tag(),
83460            Self::Details(_) => Details::tag(),
83461            Self::Dialog(_) => Dialog::tag(),
83462            Self::Summary(_) => Summary::tag(),
83463            Self::Slot(_) => Slot::tag(),
83464            Self::Template(_) => Template::tag(),
83465            Self::Acronym(_) => Acronym::tag(),
83466            Self::Applet(_) => Applet::tag(),
83467            Self::Bgsound(_) => Bgsound::tag(),
83468            Self::Big(_) => Big::tag(),
83469            Self::Blink(_) => Blink::tag(),
83470            Self::Center(_) => Center::tag(),
83471            Self::Dir(_) => Dir::tag(),
83472            Self::Font(_) => Font::tag(),
83473            Self::Frame(_) => Frame::tag(),
83474            Self::Frameset(_) => Frameset::tag(),
83475            Self::Image(_) => Image::tag(),
83476            Self::Keygen(_) => Keygen::tag(),
83477            Self::Marquee(_) => Marquee::tag(),
83478            Self::Menuitem(_) => Menuitem::tag(),
83479            Self::Nobr(_) => Nobr::tag(),
83480            Self::Noembed(_) => Noembed::tag(),
83481            Self::Noframes(_) => Noframes::tag(),
83482            Self::Param(_) => Param::tag(),
83483            Self::Plaintext(_) => Plaintext::tag(),
83484            Self::Rb(_) => Rb::tag(),
83485            Self::Rtc(_) => Rtc::tag(),
83486            Self::Spacer(_) => Spacer::tag(),
83487            Self::Strike(_) => Strike::tag(),
83488            Self::Tt(_) => Tt::tag(),
83489            Self::Xmp(_) => Xmp::tag(),
83490            Self::H1(_) => H1::tag(),
83491            Self::H2(_) => H2::tag(),
83492            Self::H3(_) => H3::tag(),
83493            Self::H4(_) => H4::tag(),
83494            Self::H5(_) => H5::tag(),
83495            Self::H6(_) => H6::tag(),
83496            Self::Unknown(_) => Unknown::tag(),
83497        }
83498    }
83499    /// Sets an attribute of the element.
83500    /// This sets the attribute of the struct. If the attribute is not a known attribute, it is added to the `extra` map.
83501    /// If the `alloc` feature is disabled, this function will silently fail.
83502    ///
83503    /// # Note
83504    /// This only works when the attribute is lowercase.
83505    pub fn set_attr(&mut self, name: &str, value: impl core::convert::Into<AttributeValueOwned>) {
83506        match self {
83507            Self::Html(e) => e.set_attr(name, value),
83508            Self::Base(e) => e.set_attr(name, value),
83509            Self::Head(e) => e.set_attr(name, value),
83510            Self::Link(e) => e.set_attr(name, value),
83511            Self::Meta(e) => e.set_attr(name, value),
83512            Self::Style(e) => e.set_attr(name, value),
83513            Self::Title(e) => e.set_attr(name, value),
83514            Self::Body(e) => e.set_attr(name, value),
83515            Self::Address(e) => e.set_attr(name, value),
83516            Self::Article(e) => e.set_attr(name, value),
83517            Self::Aside(e) => e.set_attr(name, value),
83518            Self::Footer(e) => e.set_attr(name, value),
83519            Self::Header(e) => e.set_attr(name, value),
83520            Self::Hgroup(e) => e.set_attr(name, value),
83521            Self::Main(e) => e.set_attr(name, value),
83522            Self::Nav(e) => e.set_attr(name, value),
83523            Self::Section(e) => e.set_attr(name, value),
83524            Self::Blockquote(e) => e.set_attr(name, value),
83525            Self::Dd(e) => e.set_attr(name, value),
83526            Self::Div(e) => e.set_attr(name, value),
83527            Self::Dl(e) => e.set_attr(name, value),
83528            Self::Dt(e) => e.set_attr(name, value),
83529            Self::Figcaption(e) => e.set_attr(name, value),
83530            Self::Figure(e) => e.set_attr(name, value),
83531            Self::Hr(e) => e.set_attr(name, value),
83532            Self::Li(e) => e.set_attr(name, value),
83533            Self::Menu(e) => e.set_attr(name, value),
83534            Self::Ol(e) => e.set_attr(name, value),
83535            Self::P(e) => e.set_attr(name, value),
83536            Self::Pre(e) => e.set_attr(name, value),
83537            Self::Ul(e) => e.set_attr(name, value),
83538            Self::A(e) => e.set_attr(name, value),
83539            Self::Abbr(e) => e.set_attr(name, value),
83540            Self::B(e) => e.set_attr(name, value),
83541            Self::Bdi(e) => e.set_attr(name, value),
83542            Self::Bdo(e) => e.set_attr(name, value),
83543            Self::Br(e) => e.set_attr(name, value),
83544            Self::Cite(e) => e.set_attr(name, value),
83545            Self::Code(e) => e.set_attr(name, value),
83546            Self::Data(e) => e.set_attr(name, value),
83547            Self::Dfn(e) => e.set_attr(name, value),
83548            Self::Em(e) => e.set_attr(name, value),
83549            Self::I(e) => e.set_attr(name, value),
83550            Self::Kbd(e) => e.set_attr(name, value),
83551            Self::Mark(e) => e.set_attr(name, value),
83552            Self::Q(e) => e.set_attr(name, value),
83553            Self::Rp(e) => e.set_attr(name, value),
83554            Self::Rt(e) => e.set_attr(name, value),
83555            Self::Ruby(e) => e.set_attr(name, value),
83556            Self::S(e) => e.set_attr(name, value),
83557            Self::Samp(e) => e.set_attr(name, value),
83558            Self::Small(e) => e.set_attr(name, value),
83559            Self::Span(e) => e.set_attr(name, value),
83560            Self::Strong(e) => e.set_attr(name, value),
83561            Self::Sub(e) => e.set_attr(name, value),
83562            Self::Sup(e) => e.set_attr(name, value),
83563            Self::Time(e) => e.set_attr(name, value),
83564            Self::U(e) => e.set_attr(name, value),
83565            Self::Var(e) => e.set_attr(name, value),
83566            Self::Wbr(e) => e.set_attr(name, value),
83567            Self::Area(e) => e.set_attr(name, value),
83568            Self::Audio(e) => e.set_attr(name, value),
83569            Self::Img(e) => e.set_attr(name, value),
83570            Self::Map(e) => e.set_attr(name, value),
83571            Self::Track(e) => e.set_attr(name, value),
83572            Self::Video(e) => e.set_attr(name, value),
83573            Self::Embed(e) => e.set_attr(name, value),
83574            Self::Iframe(e) => e.set_attr(name, value),
83575            Self::Object(e) => e.set_attr(name, value),
83576            Self::Picture(e) => e.set_attr(name, value),
83577            Self::Portal(e) => e.set_attr(name, value),
83578            Self::Source(e) => e.set_attr(name, value),
83579            Self::Canvas(e) => e.set_attr(name, value),
83580            Self::Noscript(e) => e.set_attr(name, value),
83581            Self::Script(e) => e.set_attr(name, value),
83582            Self::Del(e) => e.set_attr(name, value),
83583            Self::Ins(e) => e.set_attr(name, value),
83584            Self::Caption(e) => e.set_attr(name, value),
83585            Self::Col(e) => e.set_attr(name, value),
83586            Self::Colgroup(e) => e.set_attr(name, value),
83587            Self::Table(e) => e.set_attr(name, value),
83588            Self::Tbody(e) => e.set_attr(name, value),
83589            Self::Td(e) => e.set_attr(name, value),
83590            Self::Tfoot(e) => e.set_attr(name, value),
83591            Self::Th(e) => e.set_attr(name, value),
83592            Self::Thead(e) => e.set_attr(name, value),
83593            Self::Tr(e) => e.set_attr(name, value),
83594            Self::Button(e) => e.set_attr(name, value),
83595            Self::Datalist(e) => e.set_attr(name, value),
83596            Self::Fieldset(e) => e.set_attr(name, value),
83597            Self::Form(e) => e.set_attr(name, value),
83598            Self::Input(e) => e.set_attr(name, value),
83599            Self::Label(e) => e.set_attr(name, value),
83600            Self::Legend(e) => e.set_attr(name, value),
83601            Self::Meter(e) => e.set_attr(name, value),
83602            Self::Optgroup(e) => e.set_attr(name, value),
83603            Self::Option(e) => e.set_attr(name, value),
83604            Self::Output(e) => e.set_attr(name, value),
83605            Self::Progress(e) => e.set_attr(name, value),
83606            Self::Select(e) => e.set_attr(name, value),
83607            Self::Textarea(e) => e.set_attr(name, value),
83608            Self::Details(e) => e.set_attr(name, value),
83609            Self::Dialog(e) => e.set_attr(name, value),
83610            Self::Summary(e) => e.set_attr(name, value),
83611            Self::Slot(e) => e.set_attr(name, value),
83612            Self::Template(e) => e.set_attr(name, value),
83613            Self::Acronym(e) => e.set_attr(name, value),
83614            Self::Applet(e) => e.set_attr(name, value),
83615            Self::Bgsound(e) => e.set_attr(name, value),
83616            Self::Big(e) => e.set_attr(name, value),
83617            Self::Blink(e) => e.set_attr(name, value),
83618            Self::Center(e) => e.set_attr(name, value),
83619            Self::Dir(e) => e.set_attr(name, value),
83620            Self::Font(e) => e.set_attr(name, value),
83621            Self::Frame(e) => e.set_attr(name, value),
83622            Self::Frameset(e) => e.set_attr(name, value),
83623            Self::Image(e) => e.set_attr(name, value),
83624            Self::Keygen(e) => e.set_attr(name, value),
83625            Self::Marquee(e) => e.set_attr(name, value),
83626            Self::Menuitem(e) => e.set_attr(name, value),
83627            Self::Nobr(e) => e.set_attr(name, value),
83628            Self::Noembed(e) => e.set_attr(name, value),
83629            Self::Noframes(e) => e.set_attr(name, value),
83630            Self::Param(e) => e.set_attr(name, value),
83631            Self::Plaintext(e) => e.set_attr(name, value),
83632            Self::Rb(e) => e.set_attr(name, value),
83633            Self::Rtc(e) => e.set_attr(name, value),
83634            Self::Spacer(e) => e.set_attr(name, value),
83635            Self::Strike(e) => e.set_attr(name, value),
83636            Self::Tt(e) => e.set_attr(name, value),
83637            Self::Xmp(e) => e.set_attr(name, value),
83638            Self::H1(e) => e.set_attr(name, value),
83639            Self::H2(e) => e.set_attr(name, value),
83640            Self::H3(e) => e.set_attr(name, value),
83641            Self::H4(e) => e.set_attr(name, value),
83642            Self::H5(e) => e.set_attr(name, value),
83643            Self::H6(e) => e.set_attr(name, value),
83644            Self::Unknown(e) => e.set_attr(name, value),
83645        }
83646    }
83647}
83648#[allow(deprecated)]
83649#[cfg(feature = "alloc")]
83650impl ElementOwned {
83651    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
83652    ///   
83653    #[cfg(feature = "alloc")]
83654    pub fn accesskey(&self) -> core::option::Option<&AttributeValueOwned> {
83655        match self {
83656            Self::Html(e) => e.accesskey.as_ref(),
83657            Self::Base(e) => e.accesskey.as_ref(),
83658            Self::Head(e) => e.accesskey.as_ref(),
83659            Self::Link(e) => e.accesskey.as_ref(),
83660            Self::Meta(e) => e.accesskey.as_ref(),
83661            Self::Style(e) => e.accesskey.as_ref(),
83662            Self::Title(e) => e.accesskey.as_ref(),
83663            Self::Body(e) => e.accesskey.as_ref(),
83664            Self::Address(e) => e.accesskey.as_ref(),
83665            Self::Article(e) => e.accesskey.as_ref(),
83666            Self::Aside(e) => e.accesskey.as_ref(),
83667            Self::Footer(e) => e.accesskey.as_ref(),
83668            Self::Header(e) => e.accesskey.as_ref(),
83669            Self::Hgroup(e) => e.accesskey.as_ref(),
83670            Self::Main(e) => e.accesskey.as_ref(),
83671            Self::Nav(e) => e.accesskey.as_ref(),
83672            Self::Section(e) => e.accesskey.as_ref(),
83673            Self::Blockquote(e) => e.accesskey.as_ref(),
83674            Self::Dd(e) => e.accesskey.as_ref(),
83675            Self::Div(e) => e.accesskey.as_ref(),
83676            Self::Dl(e) => e.accesskey.as_ref(),
83677            Self::Dt(e) => e.accesskey.as_ref(),
83678            Self::Figcaption(e) => e.accesskey.as_ref(),
83679            Self::Figure(e) => e.accesskey.as_ref(),
83680            Self::Hr(e) => e.accesskey.as_ref(),
83681            Self::Li(e) => e.accesskey.as_ref(),
83682            Self::Menu(e) => e.accesskey.as_ref(),
83683            Self::Ol(e) => e.accesskey.as_ref(),
83684            Self::P(e) => e.accesskey.as_ref(),
83685            Self::Pre(e) => e.accesskey.as_ref(),
83686            Self::Ul(e) => e.accesskey.as_ref(),
83687            Self::A(e) => e.accesskey.as_ref(),
83688            Self::Abbr(e) => e.accesskey.as_ref(),
83689            Self::B(e) => e.accesskey.as_ref(),
83690            Self::Bdi(e) => e.accesskey.as_ref(),
83691            Self::Bdo(e) => e.accesskey.as_ref(),
83692            Self::Br(e) => e.accesskey.as_ref(),
83693            Self::Cite(e) => e.accesskey.as_ref(),
83694            Self::Code(e) => e.accesskey.as_ref(),
83695            Self::Data(e) => e.accesskey.as_ref(),
83696            Self::Dfn(e) => e.accesskey.as_ref(),
83697            Self::Em(e) => e.accesskey.as_ref(),
83698            Self::I(e) => e.accesskey.as_ref(),
83699            Self::Kbd(e) => e.accesskey.as_ref(),
83700            Self::Mark(e) => e.accesskey.as_ref(),
83701            Self::Q(e) => e.accesskey.as_ref(),
83702            Self::Rp(e) => e.accesskey.as_ref(),
83703            Self::Rt(e) => e.accesskey.as_ref(),
83704            Self::Ruby(e) => e.accesskey.as_ref(),
83705            Self::S(e) => e.accesskey.as_ref(),
83706            Self::Samp(e) => e.accesskey.as_ref(),
83707            Self::Small(e) => e.accesskey.as_ref(),
83708            Self::Span(e) => e.accesskey.as_ref(),
83709            Self::Strong(e) => e.accesskey.as_ref(),
83710            Self::Sub(e) => e.accesskey.as_ref(),
83711            Self::Sup(e) => e.accesskey.as_ref(),
83712            Self::Time(e) => e.accesskey.as_ref(),
83713            Self::U(e) => e.accesskey.as_ref(),
83714            Self::Var(e) => e.accesskey.as_ref(),
83715            Self::Wbr(e) => e.accesskey.as_ref(),
83716            Self::Area(e) => e.accesskey.as_ref(),
83717            Self::Audio(e) => e.accesskey.as_ref(),
83718            Self::Img(e) => e.accesskey.as_ref(),
83719            Self::Map(e) => e.accesskey.as_ref(),
83720            Self::Track(e) => e.accesskey.as_ref(),
83721            Self::Video(e) => e.accesskey.as_ref(),
83722            Self::Embed(e) => e.accesskey.as_ref(),
83723            Self::Iframe(e) => e.accesskey.as_ref(),
83724            Self::Object(e) => e.accesskey.as_ref(),
83725            Self::Picture(e) => e.accesskey.as_ref(),
83726            Self::Portal(e) => e.accesskey.as_ref(),
83727            Self::Source(e) => e.accesskey.as_ref(),
83728            Self::Canvas(e) => e.accesskey.as_ref(),
83729            Self::Noscript(e) => e.accesskey.as_ref(),
83730            Self::Script(e) => e.accesskey.as_ref(),
83731            Self::Del(e) => e.accesskey.as_ref(),
83732            Self::Ins(e) => e.accesskey.as_ref(),
83733            Self::Caption(e) => e.accesskey.as_ref(),
83734            Self::Col(e) => e.accesskey.as_ref(),
83735            Self::Colgroup(e) => e.accesskey.as_ref(),
83736            Self::Table(e) => e.accesskey.as_ref(),
83737            Self::Tbody(e) => e.accesskey.as_ref(),
83738            Self::Td(e) => e.accesskey.as_ref(),
83739            Self::Tfoot(e) => e.accesskey.as_ref(),
83740            Self::Th(e) => e.accesskey.as_ref(),
83741            Self::Thead(e) => e.accesskey.as_ref(),
83742            Self::Tr(e) => e.accesskey.as_ref(),
83743            Self::Button(e) => e.accesskey.as_ref(),
83744            Self::Datalist(e) => e.accesskey.as_ref(),
83745            Self::Fieldset(e) => e.accesskey.as_ref(),
83746            Self::Form(e) => e.accesskey.as_ref(),
83747            Self::Input(e) => e.accesskey.as_ref(),
83748            Self::Label(e) => e.accesskey.as_ref(),
83749            Self::Legend(e) => e.accesskey.as_ref(),
83750            Self::Meter(e) => e.accesskey.as_ref(),
83751            Self::Optgroup(e) => e.accesskey.as_ref(),
83752            Self::Option(e) => e.accesskey.as_ref(),
83753            Self::Output(e) => e.accesskey.as_ref(),
83754            Self::Progress(e) => e.accesskey.as_ref(),
83755            Self::Select(e) => e.accesskey.as_ref(),
83756            Self::Textarea(e) => e.accesskey.as_ref(),
83757            Self::Details(e) => e.accesskey.as_ref(),
83758            Self::Dialog(e) => e.accesskey.as_ref(),
83759            Self::Summary(e) => e.accesskey.as_ref(),
83760            Self::Slot(e) => e.accesskey.as_ref(),
83761            Self::Template(e) => e.accesskey.as_ref(),
83762            Self::Acronym(e) => e.accesskey.as_ref(),
83763            Self::Applet(e) => e.accesskey.as_ref(),
83764            Self::Bgsound(e) => e.accesskey.as_ref(),
83765            Self::Big(e) => e.accesskey.as_ref(),
83766            Self::Blink(e) => e.accesskey.as_ref(),
83767            Self::Center(e) => e.accesskey.as_ref(),
83768            Self::Dir(e) => e.accesskey.as_ref(),
83769            Self::Font(e) => e.accesskey.as_ref(),
83770            Self::Frame(e) => e.accesskey.as_ref(),
83771            Self::Frameset(e) => e.accesskey.as_ref(),
83772            Self::Image(e) => e.accesskey.as_ref(),
83773            Self::Keygen(e) => e.accesskey.as_ref(),
83774            Self::Marquee(e) => e.accesskey.as_ref(),
83775            Self::Menuitem(e) => e.accesskey.as_ref(),
83776            Self::Nobr(e) => e.accesskey.as_ref(),
83777            Self::Noembed(e) => e.accesskey.as_ref(),
83778            Self::Noframes(e) => e.accesskey.as_ref(),
83779            Self::Param(e) => e.accesskey.as_ref(),
83780            Self::Plaintext(e) => e.accesskey.as_ref(),
83781            Self::Rb(e) => e.accesskey.as_ref(),
83782            Self::Rtc(e) => e.accesskey.as_ref(),
83783            Self::Spacer(e) => e.accesskey.as_ref(),
83784            Self::Strike(e) => e.accesskey.as_ref(),
83785            Self::Tt(e) => e.accesskey.as_ref(),
83786            Self::Xmp(e) => e.accesskey.as_ref(),
83787            Self::H1(e) => e.accesskey.as_ref(),
83788            Self::H2(e) => e.accesskey.as_ref(),
83789            Self::H3(e) => e.accesskey.as_ref(),
83790            Self::H4(e) => e.accesskey.as_ref(),
83791            Self::H5(e) => e.accesskey.as_ref(),
83792            Self::H6(e) => e.accesskey.as_ref(),
83793            Self::Unknown(e) => e.accesskey.as_ref(),
83794        }
83795    }
83796
83797    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
83798    ///     <ul>
83799    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
83800    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
83801    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
83802    ///       <li><code>characters</code>, all letters should default to uppercase</li>
83803    ///     </ul>
83804    ///   
83805    #[cfg(feature = "alloc")]
83806    pub fn autocapitalize(&self) -> core::option::Option<&AttributeValueOwned> {
83807        match self {
83808            Self::Html(e) => e.autocapitalize.as_ref(),
83809            Self::Base(e) => e.autocapitalize.as_ref(),
83810            Self::Head(e) => e.autocapitalize.as_ref(),
83811            Self::Link(e) => e.autocapitalize.as_ref(),
83812            Self::Meta(e) => e.autocapitalize.as_ref(),
83813            Self::Style(e) => e.autocapitalize.as_ref(),
83814            Self::Title(e) => e.autocapitalize.as_ref(),
83815            Self::Body(e) => e.autocapitalize.as_ref(),
83816            Self::Address(e) => e.autocapitalize.as_ref(),
83817            Self::Article(e) => e.autocapitalize.as_ref(),
83818            Self::Aside(e) => e.autocapitalize.as_ref(),
83819            Self::Footer(e) => e.autocapitalize.as_ref(),
83820            Self::Header(e) => e.autocapitalize.as_ref(),
83821            Self::Hgroup(e) => e.autocapitalize.as_ref(),
83822            Self::Main(e) => e.autocapitalize.as_ref(),
83823            Self::Nav(e) => e.autocapitalize.as_ref(),
83824            Self::Section(e) => e.autocapitalize.as_ref(),
83825            Self::Blockquote(e) => e.autocapitalize.as_ref(),
83826            Self::Dd(e) => e.autocapitalize.as_ref(),
83827            Self::Div(e) => e.autocapitalize.as_ref(),
83828            Self::Dl(e) => e.autocapitalize.as_ref(),
83829            Self::Dt(e) => e.autocapitalize.as_ref(),
83830            Self::Figcaption(e) => e.autocapitalize.as_ref(),
83831            Self::Figure(e) => e.autocapitalize.as_ref(),
83832            Self::Hr(e) => e.autocapitalize.as_ref(),
83833            Self::Li(e) => e.autocapitalize.as_ref(),
83834            Self::Menu(e) => e.autocapitalize.as_ref(),
83835            Self::Ol(e) => e.autocapitalize.as_ref(),
83836            Self::P(e) => e.autocapitalize.as_ref(),
83837            Self::Pre(e) => e.autocapitalize.as_ref(),
83838            Self::Ul(e) => e.autocapitalize.as_ref(),
83839            Self::A(e) => e.autocapitalize.as_ref(),
83840            Self::Abbr(e) => e.autocapitalize.as_ref(),
83841            Self::B(e) => e.autocapitalize.as_ref(),
83842            Self::Bdi(e) => e.autocapitalize.as_ref(),
83843            Self::Bdo(e) => e.autocapitalize.as_ref(),
83844            Self::Br(e) => e.autocapitalize.as_ref(),
83845            Self::Cite(e) => e.autocapitalize.as_ref(),
83846            Self::Code(e) => e.autocapitalize.as_ref(),
83847            Self::Data(e) => e.autocapitalize.as_ref(),
83848            Self::Dfn(e) => e.autocapitalize.as_ref(),
83849            Self::Em(e) => e.autocapitalize.as_ref(),
83850            Self::I(e) => e.autocapitalize.as_ref(),
83851            Self::Kbd(e) => e.autocapitalize.as_ref(),
83852            Self::Mark(e) => e.autocapitalize.as_ref(),
83853            Self::Q(e) => e.autocapitalize.as_ref(),
83854            Self::Rp(e) => e.autocapitalize.as_ref(),
83855            Self::Rt(e) => e.autocapitalize.as_ref(),
83856            Self::Ruby(e) => e.autocapitalize.as_ref(),
83857            Self::S(e) => e.autocapitalize.as_ref(),
83858            Self::Samp(e) => e.autocapitalize.as_ref(),
83859            Self::Small(e) => e.autocapitalize.as_ref(),
83860            Self::Span(e) => e.autocapitalize.as_ref(),
83861            Self::Strong(e) => e.autocapitalize.as_ref(),
83862            Self::Sub(e) => e.autocapitalize.as_ref(),
83863            Self::Sup(e) => e.autocapitalize.as_ref(),
83864            Self::Time(e) => e.autocapitalize.as_ref(),
83865            Self::U(e) => e.autocapitalize.as_ref(),
83866            Self::Var(e) => e.autocapitalize.as_ref(),
83867            Self::Wbr(e) => e.autocapitalize.as_ref(),
83868            Self::Area(e) => e.autocapitalize.as_ref(),
83869            Self::Audio(e) => e.autocapitalize.as_ref(),
83870            Self::Img(e) => e.autocapitalize.as_ref(),
83871            Self::Map(e) => e.autocapitalize.as_ref(),
83872            Self::Track(e) => e.autocapitalize.as_ref(),
83873            Self::Video(e) => e.autocapitalize.as_ref(),
83874            Self::Embed(e) => e.autocapitalize.as_ref(),
83875            Self::Iframe(e) => e.autocapitalize.as_ref(),
83876            Self::Object(e) => e.autocapitalize.as_ref(),
83877            Self::Picture(e) => e.autocapitalize.as_ref(),
83878            Self::Portal(e) => e.autocapitalize.as_ref(),
83879            Self::Source(e) => e.autocapitalize.as_ref(),
83880            Self::Canvas(e) => e.autocapitalize.as_ref(),
83881            Self::Noscript(e) => e.autocapitalize.as_ref(),
83882            Self::Script(e) => e.autocapitalize.as_ref(),
83883            Self::Del(e) => e.autocapitalize.as_ref(),
83884            Self::Ins(e) => e.autocapitalize.as_ref(),
83885            Self::Caption(e) => e.autocapitalize.as_ref(),
83886            Self::Col(e) => e.autocapitalize.as_ref(),
83887            Self::Colgroup(e) => e.autocapitalize.as_ref(),
83888            Self::Table(e) => e.autocapitalize.as_ref(),
83889            Self::Tbody(e) => e.autocapitalize.as_ref(),
83890            Self::Td(e) => e.autocapitalize.as_ref(),
83891            Self::Tfoot(e) => e.autocapitalize.as_ref(),
83892            Self::Th(e) => e.autocapitalize.as_ref(),
83893            Self::Thead(e) => e.autocapitalize.as_ref(),
83894            Self::Tr(e) => e.autocapitalize.as_ref(),
83895            Self::Button(e) => e.autocapitalize.as_ref(),
83896            Self::Datalist(e) => e.autocapitalize.as_ref(),
83897            Self::Fieldset(e) => e.autocapitalize.as_ref(),
83898            Self::Form(e) => e.autocapitalize.as_ref(),
83899            Self::Input(e) => e.autocapitalize.as_ref(),
83900            Self::Label(e) => e.autocapitalize.as_ref(),
83901            Self::Legend(e) => e.autocapitalize.as_ref(),
83902            Self::Meter(e) => e.autocapitalize.as_ref(),
83903            Self::Optgroup(e) => e.autocapitalize.as_ref(),
83904            Self::Option(e) => e.autocapitalize.as_ref(),
83905            Self::Output(e) => e.autocapitalize.as_ref(),
83906            Self::Progress(e) => e.autocapitalize.as_ref(),
83907            Self::Select(e) => e.autocapitalize.as_ref(),
83908            Self::Textarea(e) => e.autocapitalize.as_ref(),
83909            Self::Details(e) => e.autocapitalize.as_ref(),
83910            Self::Dialog(e) => e.autocapitalize.as_ref(),
83911            Self::Summary(e) => e.autocapitalize.as_ref(),
83912            Self::Slot(e) => e.autocapitalize.as_ref(),
83913            Self::Template(e) => e.autocapitalize.as_ref(),
83914            Self::Acronym(e) => e.autocapitalize.as_ref(),
83915            Self::Applet(e) => e.autocapitalize.as_ref(),
83916            Self::Bgsound(e) => e.autocapitalize.as_ref(),
83917            Self::Big(e) => e.autocapitalize.as_ref(),
83918            Self::Blink(e) => e.autocapitalize.as_ref(),
83919            Self::Center(e) => e.autocapitalize.as_ref(),
83920            Self::Dir(e) => e.autocapitalize.as_ref(),
83921            Self::Font(e) => e.autocapitalize.as_ref(),
83922            Self::Frame(e) => e.autocapitalize.as_ref(),
83923            Self::Frameset(e) => e.autocapitalize.as_ref(),
83924            Self::Image(e) => e.autocapitalize.as_ref(),
83925            Self::Keygen(e) => e.autocapitalize.as_ref(),
83926            Self::Marquee(e) => e.autocapitalize.as_ref(),
83927            Self::Menuitem(e) => e.autocapitalize.as_ref(),
83928            Self::Nobr(e) => e.autocapitalize.as_ref(),
83929            Self::Noembed(e) => e.autocapitalize.as_ref(),
83930            Self::Noframes(e) => e.autocapitalize.as_ref(),
83931            Self::Param(e) => e.autocapitalize.as_ref(),
83932            Self::Plaintext(e) => e.autocapitalize.as_ref(),
83933            Self::Rb(e) => e.autocapitalize.as_ref(),
83934            Self::Rtc(e) => e.autocapitalize.as_ref(),
83935            Self::Spacer(e) => e.autocapitalize.as_ref(),
83936            Self::Strike(e) => e.autocapitalize.as_ref(),
83937            Self::Tt(e) => e.autocapitalize.as_ref(),
83938            Self::Xmp(e) => e.autocapitalize.as_ref(),
83939            Self::H1(e) => e.autocapitalize.as_ref(),
83940            Self::H2(e) => e.autocapitalize.as_ref(),
83941            Self::H3(e) => e.autocapitalize.as_ref(),
83942            Self::H4(e) => e.autocapitalize.as_ref(),
83943            Self::H5(e) => e.autocapitalize.as_ref(),
83944            Self::H6(e) => e.autocapitalize.as_ref(),
83945            Self::Unknown(e) => e.autocapitalize.as_ref(),
83946        }
83947    }
83948
83949    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
83950    ///   
83951    #[cfg(feature = "alloc")]
83952    pub fn autofocus(&self) -> core::option::Option<&AttributeValueOwned> {
83953        match self {
83954            Self::Html(e) => e.autofocus.as_ref(),
83955            Self::Base(e) => e.autofocus.as_ref(),
83956            Self::Head(e) => e.autofocus.as_ref(),
83957            Self::Link(e) => e.autofocus.as_ref(),
83958            Self::Meta(e) => e.autofocus.as_ref(),
83959            Self::Style(e) => e.autofocus.as_ref(),
83960            Self::Title(e) => e.autofocus.as_ref(),
83961            Self::Body(e) => e.autofocus.as_ref(),
83962            Self::Address(e) => e.autofocus.as_ref(),
83963            Self::Article(e) => e.autofocus.as_ref(),
83964            Self::Aside(e) => e.autofocus.as_ref(),
83965            Self::Footer(e) => e.autofocus.as_ref(),
83966            Self::Header(e) => e.autofocus.as_ref(),
83967            Self::Hgroup(e) => e.autofocus.as_ref(),
83968            Self::Main(e) => e.autofocus.as_ref(),
83969            Self::Nav(e) => e.autofocus.as_ref(),
83970            Self::Section(e) => e.autofocus.as_ref(),
83971            Self::Blockquote(e) => e.autofocus.as_ref(),
83972            Self::Dd(e) => e.autofocus.as_ref(),
83973            Self::Div(e) => e.autofocus.as_ref(),
83974            Self::Dl(e) => e.autofocus.as_ref(),
83975            Self::Dt(e) => e.autofocus.as_ref(),
83976            Self::Figcaption(e) => e.autofocus.as_ref(),
83977            Self::Figure(e) => e.autofocus.as_ref(),
83978            Self::Hr(e) => e.autofocus.as_ref(),
83979            Self::Li(e) => e.autofocus.as_ref(),
83980            Self::Menu(e) => e.autofocus.as_ref(),
83981            Self::Ol(e) => e.autofocus.as_ref(),
83982            Self::P(e) => e.autofocus.as_ref(),
83983            Self::Pre(e) => e.autofocus.as_ref(),
83984            Self::Ul(e) => e.autofocus.as_ref(),
83985            Self::A(e) => e.autofocus.as_ref(),
83986            Self::Abbr(e) => e.autofocus.as_ref(),
83987            Self::B(e) => e.autofocus.as_ref(),
83988            Self::Bdi(e) => e.autofocus.as_ref(),
83989            Self::Bdo(e) => e.autofocus.as_ref(),
83990            Self::Br(e) => e.autofocus.as_ref(),
83991            Self::Cite(e) => e.autofocus.as_ref(),
83992            Self::Code(e) => e.autofocus.as_ref(),
83993            Self::Data(e) => e.autofocus.as_ref(),
83994            Self::Dfn(e) => e.autofocus.as_ref(),
83995            Self::Em(e) => e.autofocus.as_ref(),
83996            Self::I(e) => e.autofocus.as_ref(),
83997            Self::Kbd(e) => e.autofocus.as_ref(),
83998            Self::Mark(e) => e.autofocus.as_ref(),
83999            Self::Q(e) => e.autofocus.as_ref(),
84000            Self::Rp(e) => e.autofocus.as_ref(),
84001            Self::Rt(e) => e.autofocus.as_ref(),
84002            Self::Ruby(e) => e.autofocus.as_ref(),
84003            Self::S(e) => e.autofocus.as_ref(),
84004            Self::Samp(e) => e.autofocus.as_ref(),
84005            Self::Small(e) => e.autofocus.as_ref(),
84006            Self::Span(e) => e.autofocus.as_ref(),
84007            Self::Strong(e) => e.autofocus.as_ref(),
84008            Self::Sub(e) => e.autofocus.as_ref(),
84009            Self::Sup(e) => e.autofocus.as_ref(),
84010            Self::Time(e) => e.autofocus.as_ref(),
84011            Self::U(e) => e.autofocus.as_ref(),
84012            Self::Var(e) => e.autofocus.as_ref(),
84013            Self::Wbr(e) => e.autofocus.as_ref(),
84014            Self::Area(e) => e.autofocus.as_ref(),
84015            Self::Audio(e) => e.autofocus.as_ref(),
84016            Self::Img(e) => e.autofocus.as_ref(),
84017            Self::Map(e) => e.autofocus.as_ref(),
84018            Self::Track(e) => e.autofocus.as_ref(),
84019            Self::Video(e) => e.autofocus.as_ref(),
84020            Self::Embed(e) => e.autofocus.as_ref(),
84021            Self::Iframe(e) => e.autofocus.as_ref(),
84022            Self::Object(e) => e.autofocus.as_ref(),
84023            Self::Picture(e) => e.autofocus.as_ref(),
84024            Self::Portal(e) => e.autofocus.as_ref(),
84025            Self::Source(e) => e.autofocus.as_ref(),
84026            Self::Canvas(e) => e.autofocus.as_ref(),
84027            Self::Noscript(e) => e.autofocus.as_ref(),
84028            Self::Script(e) => e.autofocus.as_ref(),
84029            Self::Del(e) => e.autofocus.as_ref(),
84030            Self::Ins(e) => e.autofocus.as_ref(),
84031            Self::Caption(e) => e.autofocus.as_ref(),
84032            Self::Col(e) => e.autofocus.as_ref(),
84033            Self::Colgroup(e) => e.autofocus.as_ref(),
84034            Self::Table(e) => e.autofocus.as_ref(),
84035            Self::Tbody(e) => e.autofocus.as_ref(),
84036            Self::Td(e) => e.autofocus.as_ref(),
84037            Self::Tfoot(e) => e.autofocus.as_ref(),
84038            Self::Th(e) => e.autofocus.as_ref(),
84039            Self::Thead(e) => e.autofocus.as_ref(),
84040            Self::Tr(e) => e.autofocus.as_ref(),
84041            Self::Button(e) => e.autofocus.as_ref(),
84042            Self::Datalist(e) => e.autofocus.as_ref(),
84043            Self::Fieldset(e) => e.autofocus.as_ref(),
84044            Self::Form(e) => e.autofocus.as_ref(),
84045            Self::Input(e) => e.autofocus.as_ref(),
84046            Self::Label(e) => e.autofocus.as_ref(),
84047            Self::Legend(e) => e.autofocus.as_ref(),
84048            Self::Meter(e) => e.autofocus.as_ref(),
84049            Self::Optgroup(e) => e.autofocus.as_ref(),
84050            Self::Option(e) => e.autofocus.as_ref(),
84051            Self::Output(e) => e.autofocus.as_ref(),
84052            Self::Progress(e) => e.autofocus.as_ref(),
84053            Self::Select(e) => e.autofocus.as_ref(),
84054            Self::Textarea(e) => e.autofocus.as_ref(),
84055            Self::Details(e) => e.autofocus.as_ref(),
84056            Self::Dialog(e) => e.autofocus.as_ref(),
84057            Self::Summary(e) => e.autofocus.as_ref(),
84058            Self::Slot(e) => e.autofocus.as_ref(),
84059            Self::Template(e) => e.autofocus.as_ref(),
84060            Self::Acronym(e) => e.autofocus.as_ref(),
84061            Self::Applet(e) => e.autofocus.as_ref(),
84062            Self::Bgsound(e) => e.autofocus.as_ref(),
84063            Self::Big(e) => e.autofocus.as_ref(),
84064            Self::Blink(e) => e.autofocus.as_ref(),
84065            Self::Center(e) => e.autofocus.as_ref(),
84066            Self::Dir(e) => e.autofocus.as_ref(),
84067            Self::Font(e) => e.autofocus.as_ref(),
84068            Self::Frame(e) => e.autofocus.as_ref(),
84069            Self::Frameset(e) => e.autofocus.as_ref(),
84070            Self::Image(e) => e.autofocus.as_ref(),
84071            Self::Keygen(e) => e.autofocus.as_ref(),
84072            Self::Marquee(e) => e.autofocus.as_ref(),
84073            Self::Menuitem(e) => e.autofocus.as_ref(),
84074            Self::Nobr(e) => e.autofocus.as_ref(),
84075            Self::Noembed(e) => e.autofocus.as_ref(),
84076            Self::Noframes(e) => e.autofocus.as_ref(),
84077            Self::Param(e) => e.autofocus.as_ref(),
84078            Self::Plaintext(e) => e.autofocus.as_ref(),
84079            Self::Rb(e) => e.autofocus.as_ref(),
84080            Self::Rtc(e) => e.autofocus.as_ref(),
84081            Self::Spacer(e) => e.autofocus.as_ref(),
84082            Self::Strike(e) => e.autofocus.as_ref(),
84083            Self::Tt(e) => e.autofocus.as_ref(),
84084            Self::Xmp(e) => e.autofocus.as_ref(),
84085            Self::H1(e) => e.autofocus.as_ref(),
84086            Self::H2(e) => e.autofocus.as_ref(),
84087            Self::H3(e) => e.autofocus.as_ref(),
84088            Self::H4(e) => e.autofocus.as_ref(),
84089            Self::H5(e) => e.autofocus.as_ref(),
84090            Self::H6(e) => e.autofocus.as_ref(),
84091            Self::Unknown(e) => e.autofocus.as_ref(),
84092        }
84093    }
84094
84095    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
84096    ///   
84097    #[cfg(feature = "alloc")]
84098    pub fn class(&self) -> core::option::Option<&AttributeValueOwned> {
84099        match self {
84100            Self::Html(e) => e.class.as_ref(),
84101            Self::Base(e) => e.class.as_ref(),
84102            Self::Head(e) => e.class.as_ref(),
84103            Self::Link(e) => e.class.as_ref(),
84104            Self::Meta(e) => e.class.as_ref(),
84105            Self::Style(e) => e.class.as_ref(),
84106            Self::Title(e) => e.class.as_ref(),
84107            Self::Body(e) => e.class.as_ref(),
84108            Self::Address(e) => e.class.as_ref(),
84109            Self::Article(e) => e.class.as_ref(),
84110            Self::Aside(e) => e.class.as_ref(),
84111            Self::Footer(e) => e.class.as_ref(),
84112            Self::Header(e) => e.class.as_ref(),
84113            Self::Hgroup(e) => e.class.as_ref(),
84114            Self::Main(e) => e.class.as_ref(),
84115            Self::Nav(e) => e.class.as_ref(),
84116            Self::Section(e) => e.class.as_ref(),
84117            Self::Blockquote(e) => e.class.as_ref(),
84118            Self::Dd(e) => e.class.as_ref(),
84119            Self::Div(e) => e.class.as_ref(),
84120            Self::Dl(e) => e.class.as_ref(),
84121            Self::Dt(e) => e.class.as_ref(),
84122            Self::Figcaption(e) => e.class.as_ref(),
84123            Self::Figure(e) => e.class.as_ref(),
84124            Self::Hr(e) => e.class.as_ref(),
84125            Self::Li(e) => e.class.as_ref(),
84126            Self::Menu(e) => e.class.as_ref(),
84127            Self::Ol(e) => e.class.as_ref(),
84128            Self::P(e) => e.class.as_ref(),
84129            Self::Pre(e) => e.class.as_ref(),
84130            Self::Ul(e) => e.class.as_ref(),
84131            Self::A(e) => e.class.as_ref(),
84132            Self::Abbr(e) => e.class.as_ref(),
84133            Self::B(e) => e.class.as_ref(),
84134            Self::Bdi(e) => e.class.as_ref(),
84135            Self::Bdo(e) => e.class.as_ref(),
84136            Self::Br(e) => e.class.as_ref(),
84137            Self::Cite(e) => e.class.as_ref(),
84138            Self::Code(e) => e.class.as_ref(),
84139            Self::Data(e) => e.class.as_ref(),
84140            Self::Dfn(e) => e.class.as_ref(),
84141            Self::Em(e) => e.class.as_ref(),
84142            Self::I(e) => e.class.as_ref(),
84143            Self::Kbd(e) => e.class.as_ref(),
84144            Self::Mark(e) => e.class.as_ref(),
84145            Self::Q(e) => e.class.as_ref(),
84146            Self::Rp(e) => e.class.as_ref(),
84147            Self::Rt(e) => e.class.as_ref(),
84148            Self::Ruby(e) => e.class.as_ref(),
84149            Self::S(e) => e.class.as_ref(),
84150            Self::Samp(e) => e.class.as_ref(),
84151            Self::Small(e) => e.class.as_ref(),
84152            Self::Span(e) => e.class.as_ref(),
84153            Self::Strong(e) => e.class.as_ref(),
84154            Self::Sub(e) => e.class.as_ref(),
84155            Self::Sup(e) => e.class.as_ref(),
84156            Self::Time(e) => e.class.as_ref(),
84157            Self::U(e) => e.class.as_ref(),
84158            Self::Var(e) => e.class.as_ref(),
84159            Self::Wbr(e) => e.class.as_ref(),
84160            Self::Area(e) => e.class.as_ref(),
84161            Self::Audio(e) => e.class.as_ref(),
84162            Self::Img(e) => e.class.as_ref(),
84163            Self::Map(e) => e.class.as_ref(),
84164            Self::Track(e) => e.class.as_ref(),
84165            Self::Video(e) => e.class.as_ref(),
84166            Self::Embed(e) => e.class.as_ref(),
84167            Self::Iframe(e) => e.class.as_ref(),
84168            Self::Object(e) => e.class.as_ref(),
84169            Self::Picture(e) => e.class.as_ref(),
84170            Self::Portal(e) => e.class.as_ref(),
84171            Self::Source(e) => e.class.as_ref(),
84172            Self::Canvas(e) => e.class.as_ref(),
84173            Self::Noscript(e) => e.class.as_ref(),
84174            Self::Script(e) => e.class.as_ref(),
84175            Self::Del(e) => e.class.as_ref(),
84176            Self::Ins(e) => e.class.as_ref(),
84177            Self::Caption(e) => e.class.as_ref(),
84178            Self::Col(e) => e.class.as_ref(),
84179            Self::Colgroup(e) => e.class.as_ref(),
84180            Self::Table(e) => e.class.as_ref(),
84181            Self::Tbody(e) => e.class.as_ref(),
84182            Self::Td(e) => e.class.as_ref(),
84183            Self::Tfoot(e) => e.class.as_ref(),
84184            Self::Th(e) => e.class.as_ref(),
84185            Self::Thead(e) => e.class.as_ref(),
84186            Self::Tr(e) => e.class.as_ref(),
84187            Self::Button(e) => e.class.as_ref(),
84188            Self::Datalist(e) => e.class.as_ref(),
84189            Self::Fieldset(e) => e.class.as_ref(),
84190            Self::Form(e) => e.class.as_ref(),
84191            Self::Input(e) => e.class.as_ref(),
84192            Self::Label(e) => e.class.as_ref(),
84193            Self::Legend(e) => e.class.as_ref(),
84194            Self::Meter(e) => e.class.as_ref(),
84195            Self::Optgroup(e) => e.class.as_ref(),
84196            Self::Option(e) => e.class.as_ref(),
84197            Self::Output(e) => e.class.as_ref(),
84198            Self::Progress(e) => e.class.as_ref(),
84199            Self::Select(e) => e.class.as_ref(),
84200            Self::Textarea(e) => e.class.as_ref(),
84201            Self::Details(e) => e.class.as_ref(),
84202            Self::Dialog(e) => e.class.as_ref(),
84203            Self::Summary(e) => e.class.as_ref(),
84204            Self::Slot(e) => e.class.as_ref(),
84205            Self::Template(e) => e.class.as_ref(),
84206            Self::Acronym(e) => e.class.as_ref(),
84207            Self::Applet(e) => e.class.as_ref(),
84208            Self::Bgsound(e) => e.class.as_ref(),
84209            Self::Big(e) => e.class.as_ref(),
84210            Self::Blink(e) => e.class.as_ref(),
84211            Self::Center(e) => e.class.as_ref(),
84212            Self::Dir(e) => e.class.as_ref(),
84213            Self::Font(e) => e.class.as_ref(),
84214            Self::Frame(e) => e.class.as_ref(),
84215            Self::Frameset(e) => e.class.as_ref(),
84216            Self::Image(e) => e.class.as_ref(),
84217            Self::Keygen(e) => e.class.as_ref(),
84218            Self::Marquee(e) => e.class.as_ref(),
84219            Self::Menuitem(e) => e.class.as_ref(),
84220            Self::Nobr(e) => e.class.as_ref(),
84221            Self::Noembed(e) => e.class.as_ref(),
84222            Self::Noframes(e) => e.class.as_ref(),
84223            Self::Param(e) => e.class.as_ref(),
84224            Self::Plaintext(e) => e.class.as_ref(),
84225            Self::Rb(e) => e.class.as_ref(),
84226            Self::Rtc(e) => e.class.as_ref(),
84227            Self::Spacer(e) => e.class.as_ref(),
84228            Self::Strike(e) => e.class.as_ref(),
84229            Self::Tt(e) => e.class.as_ref(),
84230            Self::Xmp(e) => e.class.as_ref(),
84231            Self::H1(e) => e.class.as_ref(),
84232            Self::H2(e) => e.class.as_ref(),
84233            Self::H3(e) => e.class.as_ref(),
84234            Self::H4(e) => e.class.as_ref(),
84235            Self::H5(e) => e.class.as_ref(),
84236            Self::H6(e) => e.class.as_ref(),
84237            Self::Unknown(e) => e.class.as_ref(),
84238        }
84239    }
84240
84241    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
84242    ///     <ul>
84243    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
84244    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
84245    ///     </ul>
84246    ///   
84247    #[cfg(feature = "alloc")]
84248    pub fn contenteditable(&self) -> core::option::Option<&AttributeValueOwned> {
84249        match self {
84250            Self::Html(e) => e.contenteditable.as_ref(),
84251            Self::Base(e) => e.contenteditable.as_ref(),
84252            Self::Head(e) => e.contenteditable.as_ref(),
84253            Self::Link(e) => e.contenteditable.as_ref(),
84254            Self::Meta(e) => e.contenteditable.as_ref(),
84255            Self::Style(e) => e.contenteditable.as_ref(),
84256            Self::Title(e) => e.contenteditable.as_ref(),
84257            Self::Body(e) => e.contenteditable.as_ref(),
84258            Self::Address(e) => e.contenteditable.as_ref(),
84259            Self::Article(e) => e.contenteditable.as_ref(),
84260            Self::Aside(e) => e.contenteditable.as_ref(),
84261            Self::Footer(e) => e.contenteditable.as_ref(),
84262            Self::Header(e) => e.contenteditable.as_ref(),
84263            Self::Hgroup(e) => e.contenteditable.as_ref(),
84264            Self::Main(e) => e.contenteditable.as_ref(),
84265            Self::Nav(e) => e.contenteditable.as_ref(),
84266            Self::Section(e) => e.contenteditable.as_ref(),
84267            Self::Blockquote(e) => e.contenteditable.as_ref(),
84268            Self::Dd(e) => e.contenteditable.as_ref(),
84269            Self::Div(e) => e.contenteditable.as_ref(),
84270            Self::Dl(e) => e.contenteditable.as_ref(),
84271            Self::Dt(e) => e.contenteditable.as_ref(),
84272            Self::Figcaption(e) => e.contenteditable.as_ref(),
84273            Self::Figure(e) => e.contenteditable.as_ref(),
84274            Self::Hr(e) => e.contenteditable.as_ref(),
84275            Self::Li(e) => e.contenteditable.as_ref(),
84276            Self::Menu(e) => e.contenteditable.as_ref(),
84277            Self::Ol(e) => e.contenteditable.as_ref(),
84278            Self::P(e) => e.contenteditable.as_ref(),
84279            Self::Pre(e) => e.contenteditable.as_ref(),
84280            Self::Ul(e) => e.contenteditable.as_ref(),
84281            Self::A(e) => e.contenteditable.as_ref(),
84282            Self::Abbr(e) => e.contenteditable.as_ref(),
84283            Self::B(e) => e.contenteditable.as_ref(),
84284            Self::Bdi(e) => e.contenteditable.as_ref(),
84285            Self::Bdo(e) => e.contenteditable.as_ref(),
84286            Self::Br(e) => e.contenteditable.as_ref(),
84287            Self::Cite(e) => e.contenteditable.as_ref(),
84288            Self::Code(e) => e.contenteditable.as_ref(),
84289            Self::Data(e) => e.contenteditable.as_ref(),
84290            Self::Dfn(e) => e.contenteditable.as_ref(),
84291            Self::Em(e) => e.contenteditable.as_ref(),
84292            Self::I(e) => e.contenteditable.as_ref(),
84293            Self::Kbd(e) => e.contenteditable.as_ref(),
84294            Self::Mark(e) => e.contenteditable.as_ref(),
84295            Self::Q(e) => e.contenteditable.as_ref(),
84296            Self::Rp(e) => e.contenteditable.as_ref(),
84297            Self::Rt(e) => e.contenteditable.as_ref(),
84298            Self::Ruby(e) => e.contenteditable.as_ref(),
84299            Self::S(e) => e.contenteditable.as_ref(),
84300            Self::Samp(e) => e.contenteditable.as_ref(),
84301            Self::Small(e) => e.contenteditable.as_ref(),
84302            Self::Span(e) => e.contenteditable.as_ref(),
84303            Self::Strong(e) => e.contenteditable.as_ref(),
84304            Self::Sub(e) => e.contenteditable.as_ref(),
84305            Self::Sup(e) => e.contenteditable.as_ref(),
84306            Self::Time(e) => e.contenteditable.as_ref(),
84307            Self::U(e) => e.contenteditable.as_ref(),
84308            Self::Var(e) => e.contenteditable.as_ref(),
84309            Self::Wbr(e) => e.contenteditable.as_ref(),
84310            Self::Area(e) => e.contenteditable.as_ref(),
84311            Self::Audio(e) => e.contenteditable.as_ref(),
84312            Self::Img(e) => e.contenteditable.as_ref(),
84313            Self::Map(e) => e.contenteditable.as_ref(),
84314            Self::Track(e) => e.contenteditable.as_ref(),
84315            Self::Video(e) => e.contenteditable.as_ref(),
84316            Self::Embed(e) => e.contenteditable.as_ref(),
84317            Self::Iframe(e) => e.contenteditable.as_ref(),
84318            Self::Object(e) => e.contenteditable.as_ref(),
84319            Self::Picture(e) => e.contenteditable.as_ref(),
84320            Self::Portal(e) => e.contenteditable.as_ref(),
84321            Self::Source(e) => e.contenteditable.as_ref(),
84322            Self::Canvas(e) => e.contenteditable.as_ref(),
84323            Self::Noscript(e) => e.contenteditable.as_ref(),
84324            Self::Script(e) => e.contenteditable.as_ref(),
84325            Self::Del(e) => e.contenteditable.as_ref(),
84326            Self::Ins(e) => e.contenteditable.as_ref(),
84327            Self::Caption(e) => e.contenteditable.as_ref(),
84328            Self::Col(e) => e.contenteditable.as_ref(),
84329            Self::Colgroup(e) => e.contenteditable.as_ref(),
84330            Self::Table(e) => e.contenteditable.as_ref(),
84331            Self::Tbody(e) => e.contenteditable.as_ref(),
84332            Self::Td(e) => e.contenteditable.as_ref(),
84333            Self::Tfoot(e) => e.contenteditable.as_ref(),
84334            Self::Th(e) => e.contenteditable.as_ref(),
84335            Self::Thead(e) => e.contenteditable.as_ref(),
84336            Self::Tr(e) => e.contenteditable.as_ref(),
84337            Self::Button(e) => e.contenteditable.as_ref(),
84338            Self::Datalist(e) => e.contenteditable.as_ref(),
84339            Self::Fieldset(e) => e.contenteditable.as_ref(),
84340            Self::Form(e) => e.contenteditable.as_ref(),
84341            Self::Input(e) => e.contenteditable.as_ref(),
84342            Self::Label(e) => e.contenteditable.as_ref(),
84343            Self::Legend(e) => e.contenteditable.as_ref(),
84344            Self::Meter(e) => e.contenteditable.as_ref(),
84345            Self::Optgroup(e) => e.contenteditable.as_ref(),
84346            Self::Option(e) => e.contenteditable.as_ref(),
84347            Self::Output(e) => e.contenteditable.as_ref(),
84348            Self::Progress(e) => e.contenteditable.as_ref(),
84349            Self::Select(e) => e.contenteditable.as_ref(),
84350            Self::Textarea(e) => e.contenteditable.as_ref(),
84351            Self::Details(e) => e.contenteditable.as_ref(),
84352            Self::Dialog(e) => e.contenteditable.as_ref(),
84353            Self::Summary(e) => e.contenteditable.as_ref(),
84354            Self::Slot(e) => e.contenteditable.as_ref(),
84355            Self::Template(e) => e.contenteditable.as_ref(),
84356            Self::Acronym(e) => e.contenteditable.as_ref(),
84357            Self::Applet(e) => e.contenteditable.as_ref(),
84358            Self::Bgsound(e) => e.contenteditable.as_ref(),
84359            Self::Big(e) => e.contenteditable.as_ref(),
84360            Self::Blink(e) => e.contenteditable.as_ref(),
84361            Self::Center(e) => e.contenteditable.as_ref(),
84362            Self::Dir(e) => e.contenteditable.as_ref(),
84363            Self::Font(e) => e.contenteditable.as_ref(),
84364            Self::Frame(e) => e.contenteditable.as_ref(),
84365            Self::Frameset(e) => e.contenteditable.as_ref(),
84366            Self::Image(e) => e.contenteditable.as_ref(),
84367            Self::Keygen(e) => e.contenteditable.as_ref(),
84368            Self::Marquee(e) => e.contenteditable.as_ref(),
84369            Self::Menuitem(e) => e.contenteditable.as_ref(),
84370            Self::Nobr(e) => e.contenteditable.as_ref(),
84371            Self::Noembed(e) => e.contenteditable.as_ref(),
84372            Self::Noframes(e) => e.contenteditable.as_ref(),
84373            Self::Param(e) => e.contenteditable.as_ref(),
84374            Self::Plaintext(e) => e.contenteditable.as_ref(),
84375            Self::Rb(e) => e.contenteditable.as_ref(),
84376            Self::Rtc(e) => e.contenteditable.as_ref(),
84377            Self::Spacer(e) => e.contenteditable.as_ref(),
84378            Self::Strike(e) => e.contenteditable.as_ref(),
84379            Self::Tt(e) => e.contenteditable.as_ref(),
84380            Self::Xmp(e) => e.contenteditable.as_ref(),
84381            Self::H1(e) => e.contenteditable.as_ref(),
84382            Self::H2(e) => e.contenteditable.as_ref(),
84383            Self::H3(e) => e.contenteditable.as_ref(),
84384            Self::H4(e) => e.contenteditable.as_ref(),
84385            Self::H5(e) => e.contenteditable.as_ref(),
84386            Self::H6(e) => e.contenteditable.as_ref(),
84387            Self::Unknown(e) => e.contenteditable.as_ref(),
84388        }
84389    }
84390
84391    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
84392    ///   
84393    #[cfg(feature = "alloc")]
84394    pub fn contextmenu(&self) -> core::option::Option<&AttributeValueOwned> {
84395        match self {
84396            Self::Html(e) => e.contextmenu.as_ref(),
84397            Self::Base(e) => e.contextmenu.as_ref(),
84398            Self::Head(e) => e.contextmenu.as_ref(),
84399            Self::Link(e) => e.contextmenu.as_ref(),
84400            Self::Meta(e) => e.contextmenu.as_ref(),
84401            Self::Style(e) => e.contextmenu.as_ref(),
84402            Self::Title(e) => e.contextmenu.as_ref(),
84403            Self::Body(e) => e.contextmenu.as_ref(),
84404            Self::Address(e) => e.contextmenu.as_ref(),
84405            Self::Article(e) => e.contextmenu.as_ref(),
84406            Self::Aside(e) => e.contextmenu.as_ref(),
84407            Self::Footer(e) => e.contextmenu.as_ref(),
84408            Self::Header(e) => e.contextmenu.as_ref(),
84409            Self::Hgroup(e) => e.contextmenu.as_ref(),
84410            Self::Main(e) => e.contextmenu.as_ref(),
84411            Self::Nav(e) => e.contextmenu.as_ref(),
84412            Self::Section(e) => e.contextmenu.as_ref(),
84413            Self::Blockquote(e) => e.contextmenu.as_ref(),
84414            Self::Dd(e) => e.contextmenu.as_ref(),
84415            Self::Div(e) => e.contextmenu.as_ref(),
84416            Self::Dl(e) => e.contextmenu.as_ref(),
84417            Self::Dt(e) => e.contextmenu.as_ref(),
84418            Self::Figcaption(e) => e.contextmenu.as_ref(),
84419            Self::Figure(e) => e.contextmenu.as_ref(),
84420            Self::Hr(e) => e.contextmenu.as_ref(),
84421            Self::Li(e) => e.contextmenu.as_ref(),
84422            Self::Menu(e) => e.contextmenu.as_ref(),
84423            Self::Ol(e) => e.contextmenu.as_ref(),
84424            Self::P(e) => e.contextmenu.as_ref(),
84425            Self::Pre(e) => e.contextmenu.as_ref(),
84426            Self::Ul(e) => e.contextmenu.as_ref(),
84427            Self::A(e) => e.contextmenu.as_ref(),
84428            Self::Abbr(e) => e.contextmenu.as_ref(),
84429            Self::B(e) => e.contextmenu.as_ref(),
84430            Self::Bdi(e) => e.contextmenu.as_ref(),
84431            Self::Bdo(e) => e.contextmenu.as_ref(),
84432            Self::Br(e) => e.contextmenu.as_ref(),
84433            Self::Cite(e) => e.contextmenu.as_ref(),
84434            Self::Code(e) => e.contextmenu.as_ref(),
84435            Self::Data(e) => e.contextmenu.as_ref(),
84436            Self::Dfn(e) => e.contextmenu.as_ref(),
84437            Self::Em(e) => e.contextmenu.as_ref(),
84438            Self::I(e) => e.contextmenu.as_ref(),
84439            Self::Kbd(e) => e.contextmenu.as_ref(),
84440            Self::Mark(e) => e.contextmenu.as_ref(),
84441            Self::Q(e) => e.contextmenu.as_ref(),
84442            Self::Rp(e) => e.contextmenu.as_ref(),
84443            Self::Rt(e) => e.contextmenu.as_ref(),
84444            Self::Ruby(e) => e.contextmenu.as_ref(),
84445            Self::S(e) => e.contextmenu.as_ref(),
84446            Self::Samp(e) => e.contextmenu.as_ref(),
84447            Self::Small(e) => e.contextmenu.as_ref(),
84448            Self::Span(e) => e.contextmenu.as_ref(),
84449            Self::Strong(e) => e.contextmenu.as_ref(),
84450            Self::Sub(e) => e.contextmenu.as_ref(),
84451            Self::Sup(e) => e.contextmenu.as_ref(),
84452            Self::Time(e) => e.contextmenu.as_ref(),
84453            Self::U(e) => e.contextmenu.as_ref(),
84454            Self::Var(e) => e.contextmenu.as_ref(),
84455            Self::Wbr(e) => e.contextmenu.as_ref(),
84456            Self::Area(e) => e.contextmenu.as_ref(),
84457            Self::Audio(e) => e.contextmenu.as_ref(),
84458            Self::Img(e) => e.contextmenu.as_ref(),
84459            Self::Map(e) => e.contextmenu.as_ref(),
84460            Self::Track(e) => e.contextmenu.as_ref(),
84461            Self::Video(e) => e.contextmenu.as_ref(),
84462            Self::Embed(e) => e.contextmenu.as_ref(),
84463            Self::Iframe(e) => e.contextmenu.as_ref(),
84464            Self::Object(e) => e.contextmenu.as_ref(),
84465            Self::Picture(e) => e.contextmenu.as_ref(),
84466            Self::Portal(e) => e.contextmenu.as_ref(),
84467            Self::Source(e) => e.contextmenu.as_ref(),
84468            Self::Canvas(e) => e.contextmenu.as_ref(),
84469            Self::Noscript(e) => e.contextmenu.as_ref(),
84470            Self::Script(e) => e.contextmenu.as_ref(),
84471            Self::Del(e) => e.contextmenu.as_ref(),
84472            Self::Ins(e) => e.contextmenu.as_ref(),
84473            Self::Caption(e) => e.contextmenu.as_ref(),
84474            Self::Col(e) => e.contextmenu.as_ref(),
84475            Self::Colgroup(e) => e.contextmenu.as_ref(),
84476            Self::Table(e) => e.contextmenu.as_ref(),
84477            Self::Tbody(e) => e.contextmenu.as_ref(),
84478            Self::Td(e) => e.contextmenu.as_ref(),
84479            Self::Tfoot(e) => e.contextmenu.as_ref(),
84480            Self::Th(e) => e.contextmenu.as_ref(),
84481            Self::Thead(e) => e.contextmenu.as_ref(),
84482            Self::Tr(e) => e.contextmenu.as_ref(),
84483            Self::Button(e) => e.contextmenu.as_ref(),
84484            Self::Datalist(e) => e.contextmenu.as_ref(),
84485            Self::Fieldset(e) => e.contextmenu.as_ref(),
84486            Self::Form(e) => e.contextmenu.as_ref(),
84487            Self::Input(e) => e.contextmenu.as_ref(),
84488            Self::Label(e) => e.contextmenu.as_ref(),
84489            Self::Legend(e) => e.contextmenu.as_ref(),
84490            Self::Meter(e) => e.contextmenu.as_ref(),
84491            Self::Optgroup(e) => e.contextmenu.as_ref(),
84492            Self::Option(e) => e.contextmenu.as_ref(),
84493            Self::Output(e) => e.contextmenu.as_ref(),
84494            Self::Progress(e) => e.contextmenu.as_ref(),
84495            Self::Select(e) => e.contextmenu.as_ref(),
84496            Self::Textarea(e) => e.contextmenu.as_ref(),
84497            Self::Details(e) => e.contextmenu.as_ref(),
84498            Self::Dialog(e) => e.contextmenu.as_ref(),
84499            Self::Summary(e) => e.contextmenu.as_ref(),
84500            Self::Slot(e) => e.contextmenu.as_ref(),
84501            Self::Template(e) => e.contextmenu.as_ref(),
84502            Self::Acronym(e) => e.contextmenu.as_ref(),
84503            Self::Applet(e) => e.contextmenu.as_ref(),
84504            Self::Bgsound(e) => e.contextmenu.as_ref(),
84505            Self::Big(e) => e.contextmenu.as_ref(),
84506            Self::Blink(e) => e.contextmenu.as_ref(),
84507            Self::Center(e) => e.contextmenu.as_ref(),
84508            Self::Dir(e) => e.contextmenu.as_ref(),
84509            Self::Font(e) => e.contextmenu.as_ref(),
84510            Self::Frame(e) => e.contextmenu.as_ref(),
84511            Self::Frameset(e) => e.contextmenu.as_ref(),
84512            Self::Image(e) => e.contextmenu.as_ref(),
84513            Self::Keygen(e) => e.contextmenu.as_ref(),
84514            Self::Marquee(e) => e.contextmenu.as_ref(),
84515            Self::Menuitem(e) => e.contextmenu.as_ref(),
84516            Self::Nobr(e) => e.contextmenu.as_ref(),
84517            Self::Noembed(e) => e.contextmenu.as_ref(),
84518            Self::Noframes(e) => e.contextmenu.as_ref(),
84519            Self::Param(e) => e.contextmenu.as_ref(),
84520            Self::Plaintext(e) => e.contextmenu.as_ref(),
84521            Self::Rb(e) => e.contextmenu.as_ref(),
84522            Self::Rtc(e) => e.contextmenu.as_ref(),
84523            Self::Spacer(e) => e.contextmenu.as_ref(),
84524            Self::Strike(e) => e.contextmenu.as_ref(),
84525            Self::Tt(e) => e.contextmenu.as_ref(),
84526            Self::Xmp(e) => e.contextmenu.as_ref(),
84527            Self::H1(e) => e.contextmenu.as_ref(),
84528            Self::H2(e) => e.contextmenu.as_ref(),
84529            Self::H3(e) => e.contextmenu.as_ref(),
84530            Self::H4(e) => e.contextmenu.as_ref(),
84531            Self::H5(e) => e.contextmenu.as_ref(),
84532            Self::H6(e) => e.contextmenu.as_ref(),
84533            Self::Unknown(e) => e.contextmenu.as_ref(),
84534        }
84535    }
84536
84537    ///     <p>Forms a class of attributes, called custom data attributes, that allow proprietary information to be exchanged between the <a href="/en-US/docs/Web/HTML">HTML</a> and its <a href="/en-US/docs/Glossary/DOM">DOM</a> representation that may be used by scripts. All such custom data are available via the <a href="/en-US/docs/Web/API/HTMLElement"><code>HTMLElement</code></a> interface of the element the attribute is set on. The <a href="/en-US/docs/Web/API/HTMLElement/dataset"><code>HTMLElement.dataset</code></a> property gives access to them.</p>
84538    ///   
84539    #[cfg(feature = "alloc")]
84540    pub fn data(
84541        &self,
84542    ) -> &alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned> {
84543        match self {
84544            Self::Html(e) => &e.data,
84545            Self::Base(e) => &e.data,
84546            Self::Head(e) => &e.data,
84547            Self::Link(e) => &e.data,
84548            Self::Meta(e) => &e.data,
84549            Self::Style(e) => &e.data,
84550            Self::Title(e) => &e.data,
84551            Self::Body(e) => &e.data,
84552            Self::Address(e) => &e.data,
84553            Self::Article(e) => &e.data,
84554            Self::Aside(e) => &e.data,
84555            Self::Footer(e) => &e.data,
84556            Self::Header(e) => &e.data,
84557            Self::Hgroup(e) => &e.data,
84558            Self::Main(e) => &e.data,
84559            Self::Nav(e) => &e.data,
84560            Self::Section(e) => &e.data,
84561            Self::Blockquote(e) => &e.data,
84562            Self::Dd(e) => &e.data,
84563            Self::Div(e) => &e.data,
84564            Self::Dl(e) => &e.data,
84565            Self::Dt(e) => &e.data,
84566            Self::Figcaption(e) => &e.data,
84567            Self::Figure(e) => &e.data,
84568            Self::Hr(e) => &e.data,
84569            Self::Li(e) => &e.data,
84570            Self::Menu(e) => &e.data,
84571            Self::Ol(e) => &e.data,
84572            Self::P(e) => &e.data,
84573            Self::Pre(e) => &e.data,
84574            Self::Ul(e) => &e.data,
84575            Self::A(e) => &e.data,
84576            Self::Abbr(e) => &e.data,
84577            Self::B(e) => &e.data,
84578            Self::Bdi(e) => &e.data,
84579            Self::Bdo(e) => &e.data,
84580            Self::Br(e) => &e.data,
84581            Self::Cite(e) => &e.data,
84582            Self::Code(e) => &e.data,
84583            Self::Data(e) => &e.data,
84584            Self::Dfn(e) => &e.data,
84585            Self::Em(e) => &e.data,
84586            Self::I(e) => &e.data,
84587            Self::Kbd(e) => &e.data,
84588            Self::Mark(e) => &e.data,
84589            Self::Q(e) => &e.data,
84590            Self::Rp(e) => &e.data,
84591            Self::Rt(e) => &e.data,
84592            Self::Ruby(e) => &e.data,
84593            Self::S(e) => &e.data,
84594            Self::Samp(e) => &e.data,
84595            Self::Small(e) => &e.data,
84596            Self::Span(e) => &e.data,
84597            Self::Strong(e) => &e.data,
84598            Self::Sub(e) => &e.data,
84599            Self::Sup(e) => &e.data,
84600            Self::Time(e) => &e.data,
84601            Self::U(e) => &e.data,
84602            Self::Var(e) => &e.data,
84603            Self::Wbr(e) => &e.data,
84604            Self::Area(e) => &e.data,
84605            Self::Audio(e) => &e.data,
84606            Self::Img(e) => &e.data,
84607            Self::Map(e) => &e.data,
84608            Self::Track(e) => &e.data,
84609            Self::Video(e) => &e.data,
84610            Self::Embed(e) => &e.data,
84611            Self::Iframe(e) => &e.data,
84612            Self::Object(e) => &e.data,
84613            Self::Picture(e) => &e.data,
84614            Self::Portal(e) => &e.data,
84615            Self::Source(e) => &e.data,
84616            Self::Canvas(e) => &e.data,
84617            Self::Noscript(e) => &e.data,
84618            Self::Script(e) => &e.data,
84619            Self::Del(e) => &e.data,
84620            Self::Ins(e) => &e.data,
84621            Self::Caption(e) => &e.data,
84622            Self::Col(e) => &e.data,
84623            Self::Colgroup(e) => &e.data,
84624            Self::Table(e) => &e.data,
84625            Self::Tbody(e) => &e.data,
84626            Self::Td(e) => &e.data,
84627            Self::Tfoot(e) => &e.data,
84628            Self::Th(e) => &e.data,
84629            Self::Thead(e) => &e.data,
84630            Self::Tr(e) => &e.data,
84631            Self::Button(e) => &e.data,
84632            Self::Datalist(e) => &e.data,
84633            Self::Fieldset(e) => &e.data,
84634            Self::Form(e) => &e.data,
84635            Self::Input(e) => &e.data,
84636            Self::Label(e) => &e.data,
84637            Self::Legend(e) => &e.data,
84638            Self::Meter(e) => &e.data,
84639            Self::Optgroup(e) => &e.data,
84640            Self::Option(e) => &e.data,
84641            Self::Output(e) => &e.data,
84642            Self::Progress(e) => &e.data,
84643            Self::Select(e) => &e.data,
84644            Self::Textarea(e) => &e.data,
84645            Self::Details(e) => &e.data,
84646            Self::Dialog(e) => &e.data,
84647            Self::Summary(e) => &e.data,
84648            Self::Slot(e) => &e.data,
84649            Self::Template(e) => &e.data,
84650            Self::Acronym(e) => &e.data,
84651            Self::Applet(e) => &e.data,
84652            Self::Bgsound(e) => &e.data,
84653            Self::Big(e) => &e.data,
84654            Self::Blink(e) => &e.data,
84655            Self::Center(e) => &e.data,
84656            Self::Dir(e) => &e.data,
84657            Self::Font(e) => &e.data,
84658            Self::Frame(e) => &e.data,
84659            Self::Frameset(e) => &e.data,
84660            Self::Image(e) => &e.data,
84661            Self::Keygen(e) => &e.data,
84662            Self::Marquee(e) => &e.data,
84663            Self::Menuitem(e) => &e.data,
84664            Self::Nobr(e) => &e.data,
84665            Self::Noembed(e) => &e.data,
84666            Self::Noframes(e) => &e.data,
84667            Self::Param(e) => &e.data,
84668            Self::Plaintext(e) => &e.data,
84669            Self::Rb(e) => &e.data,
84670            Self::Rtc(e) => &e.data,
84671            Self::Spacer(e) => &e.data,
84672            Self::Strike(e) => &e.data,
84673            Self::Tt(e) => &e.data,
84674            Self::Xmp(e) => &e.data,
84675            Self::H1(e) => &e.data,
84676            Self::H2(e) => &e.data,
84677            Self::H3(e) => &e.data,
84678            Self::H4(e) => &e.data,
84679            Self::H5(e) => &e.data,
84680            Self::H6(e) => &e.data,
84681            Self::Unknown(e) => &e.data,
84682        }
84683    }
84684
84685    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
84686    ///     <ul>
84687    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
84688    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
84689    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
84690    ///     </ul>
84691    ///   
84692    #[cfg(feature = "alloc")]
84693    pub fn dir(&self) -> core::option::Option<&AttributeValueOwned> {
84694        match self {
84695            Self::Html(e) => e.dir.as_ref(),
84696            Self::Base(e) => e.dir.as_ref(),
84697            Self::Head(e) => e.dir.as_ref(),
84698            Self::Link(e) => e.dir.as_ref(),
84699            Self::Meta(e) => e.dir.as_ref(),
84700            Self::Style(e) => e.dir.as_ref(),
84701            Self::Title(e) => e.dir.as_ref(),
84702            Self::Body(e) => e.dir.as_ref(),
84703            Self::Address(e) => e.dir.as_ref(),
84704            Self::Article(e) => e.dir.as_ref(),
84705            Self::Aside(e) => e.dir.as_ref(),
84706            Self::Footer(e) => e.dir.as_ref(),
84707            Self::Header(e) => e.dir.as_ref(),
84708            Self::Hgroup(e) => e.dir.as_ref(),
84709            Self::Main(e) => e.dir.as_ref(),
84710            Self::Nav(e) => e.dir.as_ref(),
84711            Self::Section(e) => e.dir.as_ref(),
84712            Self::Blockquote(e) => e.dir.as_ref(),
84713            Self::Dd(e) => e.dir.as_ref(),
84714            Self::Div(e) => e.dir.as_ref(),
84715            Self::Dl(e) => e.dir.as_ref(),
84716            Self::Dt(e) => e.dir.as_ref(),
84717            Self::Figcaption(e) => e.dir.as_ref(),
84718            Self::Figure(e) => e.dir.as_ref(),
84719            Self::Hr(e) => e.dir.as_ref(),
84720            Self::Li(e) => e.dir.as_ref(),
84721            Self::Menu(e) => e.dir.as_ref(),
84722            Self::Ol(e) => e.dir.as_ref(),
84723            Self::P(e) => e.dir.as_ref(),
84724            Self::Pre(e) => e.dir.as_ref(),
84725            Self::Ul(e) => e.dir.as_ref(),
84726            Self::A(e) => e.dir.as_ref(),
84727            Self::Abbr(e) => e.dir.as_ref(),
84728            Self::B(e) => e.dir.as_ref(),
84729            Self::Bdi(e) => e.dir.as_ref(),
84730            Self::Bdo(e) => e.dir.as_ref(),
84731            Self::Br(e) => e.dir.as_ref(),
84732            Self::Cite(e) => e.dir.as_ref(),
84733            Self::Code(e) => e.dir.as_ref(),
84734            Self::Data(e) => e.dir.as_ref(),
84735            Self::Dfn(e) => e.dir.as_ref(),
84736            Self::Em(e) => e.dir.as_ref(),
84737            Self::I(e) => e.dir.as_ref(),
84738            Self::Kbd(e) => e.dir.as_ref(),
84739            Self::Mark(e) => e.dir.as_ref(),
84740            Self::Q(e) => e.dir.as_ref(),
84741            Self::Rp(e) => e.dir.as_ref(),
84742            Self::Rt(e) => e.dir.as_ref(),
84743            Self::Ruby(e) => e.dir.as_ref(),
84744            Self::S(e) => e.dir.as_ref(),
84745            Self::Samp(e) => e.dir.as_ref(),
84746            Self::Small(e) => e.dir.as_ref(),
84747            Self::Span(e) => e.dir.as_ref(),
84748            Self::Strong(e) => e.dir.as_ref(),
84749            Self::Sub(e) => e.dir.as_ref(),
84750            Self::Sup(e) => e.dir.as_ref(),
84751            Self::Time(e) => e.dir.as_ref(),
84752            Self::U(e) => e.dir.as_ref(),
84753            Self::Var(e) => e.dir.as_ref(),
84754            Self::Wbr(e) => e.dir.as_ref(),
84755            Self::Area(e) => e.dir.as_ref(),
84756            Self::Audio(e) => e.dir.as_ref(),
84757            Self::Img(e) => e.dir.as_ref(),
84758            Self::Map(e) => e.dir.as_ref(),
84759            Self::Track(e) => e.dir.as_ref(),
84760            Self::Video(e) => e.dir.as_ref(),
84761            Self::Embed(e) => e.dir.as_ref(),
84762            Self::Iframe(e) => e.dir.as_ref(),
84763            Self::Object(e) => e.dir.as_ref(),
84764            Self::Picture(e) => e.dir.as_ref(),
84765            Self::Portal(e) => e.dir.as_ref(),
84766            Self::Source(e) => e.dir.as_ref(),
84767            Self::Canvas(e) => e.dir.as_ref(),
84768            Self::Noscript(e) => e.dir.as_ref(),
84769            Self::Script(e) => e.dir.as_ref(),
84770            Self::Del(e) => e.dir.as_ref(),
84771            Self::Ins(e) => e.dir.as_ref(),
84772            Self::Caption(e) => e.dir.as_ref(),
84773            Self::Col(e) => e.dir.as_ref(),
84774            Self::Colgroup(e) => e.dir.as_ref(),
84775            Self::Table(e) => e.dir.as_ref(),
84776            Self::Tbody(e) => e.dir.as_ref(),
84777            Self::Td(e) => e.dir.as_ref(),
84778            Self::Tfoot(e) => e.dir.as_ref(),
84779            Self::Th(e) => e.dir.as_ref(),
84780            Self::Thead(e) => e.dir.as_ref(),
84781            Self::Tr(e) => e.dir.as_ref(),
84782            Self::Button(e) => e.dir.as_ref(),
84783            Self::Datalist(e) => e.dir.as_ref(),
84784            Self::Fieldset(e) => e.dir.as_ref(),
84785            Self::Form(e) => e.dir.as_ref(),
84786            Self::Input(e) => e.dir.as_ref(),
84787            Self::Label(e) => e.dir.as_ref(),
84788            Self::Legend(e) => e.dir.as_ref(),
84789            Self::Meter(e) => e.dir.as_ref(),
84790            Self::Optgroup(e) => e.dir.as_ref(),
84791            Self::Option(e) => e.dir.as_ref(),
84792            Self::Output(e) => e.dir.as_ref(),
84793            Self::Progress(e) => e.dir.as_ref(),
84794            Self::Select(e) => e.dir.as_ref(),
84795            Self::Textarea(e) => e.dir.as_ref(),
84796            Self::Details(e) => e.dir.as_ref(),
84797            Self::Dialog(e) => e.dir.as_ref(),
84798            Self::Summary(e) => e.dir.as_ref(),
84799            Self::Slot(e) => e.dir.as_ref(),
84800            Self::Template(e) => e.dir.as_ref(),
84801            Self::Acronym(e) => e.dir.as_ref(),
84802            Self::Applet(e) => e.dir.as_ref(),
84803            Self::Bgsound(e) => e.dir.as_ref(),
84804            Self::Big(e) => e.dir.as_ref(),
84805            Self::Blink(e) => e.dir.as_ref(),
84806            Self::Center(e) => e.dir.as_ref(),
84807            Self::Dir(e) => e.dir.as_ref(),
84808            Self::Font(e) => e.dir.as_ref(),
84809            Self::Frame(e) => e.dir.as_ref(),
84810            Self::Frameset(e) => e.dir.as_ref(),
84811            Self::Image(e) => e.dir.as_ref(),
84812            Self::Keygen(e) => e.dir.as_ref(),
84813            Self::Marquee(e) => e.dir.as_ref(),
84814            Self::Menuitem(e) => e.dir.as_ref(),
84815            Self::Nobr(e) => e.dir.as_ref(),
84816            Self::Noembed(e) => e.dir.as_ref(),
84817            Self::Noframes(e) => e.dir.as_ref(),
84818            Self::Param(e) => e.dir.as_ref(),
84819            Self::Plaintext(e) => e.dir.as_ref(),
84820            Self::Rb(e) => e.dir.as_ref(),
84821            Self::Rtc(e) => e.dir.as_ref(),
84822            Self::Spacer(e) => e.dir.as_ref(),
84823            Self::Strike(e) => e.dir.as_ref(),
84824            Self::Tt(e) => e.dir.as_ref(),
84825            Self::Xmp(e) => e.dir.as_ref(),
84826            Self::H1(e) => e.dir.as_ref(),
84827            Self::H2(e) => e.dir.as_ref(),
84828            Self::H3(e) => e.dir.as_ref(),
84829            Self::H4(e) => e.dir.as_ref(),
84830            Self::H5(e) => e.dir.as_ref(),
84831            Self::H6(e) => e.dir.as_ref(),
84832            Self::Unknown(e) => e.dir.as_ref(),
84833        }
84834    }
84835
84836    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
84837    ///     <ul>
84838    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
84839    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
84840    ///     </ul>
84841    ///   
84842    #[cfg(feature = "alloc")]
84843    pub fn draggable(&self) -> core::option::Option<&AttributeValueOwned> {
84844        match self {
84845            Self::Html(e) => e.draggable.as_ref(),
84846            Self::Base(e) => e.draggable.as_ref(),
84847            Self::Head(e) => e.draggable.as_ref(),
84848            Self::Link(e) => e.draggable.as_ref(),
84849            Self::Meta(e) => e.draggable.as_ref(),
84850            Self::Style(e) => e.draggable.as_ref(),
84851            Self::Title(e) => e.draggable.as_ref(),
84852            Self::Body(e) => e.draggable.as_ref(),
84853            Self::Address(e) => e.draggable.as_ref(),
84854            Self::Article(e) => e.draggable.as_ref(),
84855            Self::Aside(e) => e.draggable.as_ref(),
84856            Self::Footer(e) => e.draggable.as_ref(),
84857            Self::Header(e) => e.draggable.as_ref(),
84858            Self::Hgroup(e) => e.draggable.as_ref(),
84859            Self::Main(e) => e.draggable.as_ref(),
84860            Self::Nav(e) => e.draggable.as_ref(),
84861            Self::Section(e) => e.draggable.as_ref(),
84862            Self::Blockquote(e) => e.draggable.as_ref(),
84863            Self::Dd(e) => e.draggable.as_ref(),
84864            Self::Div(e) => e.draggable.as_ref(),
84865            Self::Dl(e) => e.draggable.as_ref(),
84866            Self::Dt(e) => e.draggable.as_ref(),
84867            Self::Figcaption(e) => e.draggable.as_ref(),
84868            Self::Figure(e) => e.draggable.as_ref(),
84869            Self::Hr(e) => e.draggable.as_ref(),
84870            Self::Li(e) => e.draggable.as_ref(),
84871            Self::Menu(e) => e.draggable.as_ref(),
84872            Self::Ol(e) => e.draggable.as_ref(),
84873            Self::P(e) => e.draggable.as_ref(),
84874            Self::Pre(e) => e.draggable.as_ref(),
84875            Self::Ul(e) => e.draggable.as_ref(),
84876            Self::A(e) => e.draggable.as_ref(),
84877            Self::Abbr(e) => e.draggable.as_ref(),
84878            Self::B(e) => e.draggable.as_ref(),
84879            Self::Bdi(e) => e.draggable.as_ref(),
84880            Self::Bdo(e) => e.draggable.as_ref(),
84881            Self::Br(e) => e.draggable.as_ref(),
84882            Self::Cite(e) => e.draggable.as_ref(),
84883            Self::Code(e) => e.draggable.as_ref(),
84884            Self::Data(e) => e.draggable.as_ref(),
84885            Self::Dfn(e) => e.draggable.as_ref(),
84886            Self::Em(e) => e.draggable.as_ref(),
84887            Self::I(e) => e.draggable.as_ref(),
84888            Self::Kbd(e) => e.draggable.as_ref(),
84889            Self::Mark(e) => e.draggable.as_ref(),
84890            Self::Q(e) => e.draggable.as_ref(),
84891            Self::Rp(e) => e.draggable.as_ref(),
84892            Self::Rt(e) => e.draggable.as_ref(),
84893            Self::Ruby(e) => e.draggable.as_ref(),
84894            Self::S(e) => e.draggable.as_ref(),
84895            Self::Samp(e) => e.draggable.as_ref(),
84896            Self::Small(e) => e.draggable.as_ref(),
84897            Self::Span(e) => e.draggable.as_ref(),
84898            Self::Strong(e) => e.draggable.as_ref(),
84899            Self::Sub(e) => e.draggable.as_ref(),
84900            Self::Sup(e) => e.draggable.as_ref(),
84901            Self::Time(e) => e.draggable.as_ref(),
84902            Self::U(e) => e.draggable.as_ref(),
84903            Self::Var(e) => e.draggable.as_ref(),
84904            Self::Wbr(e) => e.draggable.as_ref(),
84905            Self::Area(e) => e.draggable.as_ref(),
84906            Self::Audio(e) => e.draggable.as_ref(),
84907            Self::Img(e) => e.draggable.as_ref(),
84908            Self::Map(e) => e.draggable.as_ref(),
84909            Self::Track(e) => e.draggable.as_ref(),
84910            Self::Video(e) => e.draggable.as_ref(),
84911            Self::Embed(e) => e.draggable.as_ref(),
84912            Self::Iframe(e) => e.draggable.as_ref(),
84913            Self::Object(e) => e.draggable.as_ref(),
84914            Self::Picture(e) => e.draggable.as_ref(),
84915            Self::Portal(e) => e.draggable.as_ref(),
84916            Self::Source(e) => e.draggable.as_ref(),
84917            Self::Canvas(e) => e.draggable.as_ref(),
84918            Self::Noscript(e) => e.draggable.as_ref(),
84919            Self::Script(e) => e.draggable.as_ref(),
84920            Self::Del(e) => e.draggable.as_ref(),
84921            Self::Ins(e) => e.draggable.as_ref(),
84922            Self::Caption(e) => e.draggable.as_ref(),
84923            Self::Col(e) => e.draggable.as_ref(),
84924            Self::Colgroup(e) => e.draggable.as_ref(),
84925            Self::Table(e) => e.draggable.as_ref(),
84926            Self::Tbody(e) => e.draggable.as_ref(),
84927            Self::Td(e) => e.draggable.as_ref(),
84928            Self::Tfoot(e) => e.draggable.as_ref(),
84929            Self::Th(e) => e.draggable.as_ref(),
84930            Self::Thead(e) => e.draggable.as_ref(),
84931            Self::Tr(e) => e.draggable.as_ref(),
84932            Self::Button(e) => e.draggable.as_ref(),
84933            Self::Datalist(e) => e.draggable.as_ref(),
84934            Self::Fieldset(e) => e.draggable.as_ref(),
84935            Self::Form(e) => e.draggable.as_ref(),
84936            Self::Input(e) => e.draggable.as_ref(),
84937            Self::Label(e) => e.draggable.as_ref(),
84938            Self::Legend(e) => e.draggable.as_ref(),
84939            Self::Meter(e) => e.draggable.as_ref(),
84940            Self::Optgroup(e) => e.draggable.as_ref(),
84941            Self::Option(e) => e.draggable.as_ref(),
84942            Self::Output(e) => e.draggable.as_ref(),
84943            Self::Progress(e) => e.draggable.as_ref(),
84944            Self::Select(e) => e.draggable.as_ref(),
84945            Self::Textarea(e) => e.draggable.as_ref(),
84946            Self::Details(e) => e.draggable.as_ref(),
84947            Self::Dialog(e) => e.draggable.as_ref(),
84948            Self::Summary(e) => e.draggable.as_ref(),
84949            Self::Slot(e) => e.draggable.as_ref(),
84950            Self::Template(e) => e.draggable.as_ref(),
84951            Self::Acronym(e) => e.draggable.as_ref(),
84952            Self::Applet(e) => e.draggable.as_ref(),
84953            Self::Bgsound(e) => e.draggable.as_ref(),
84954            Self::Big(e) => e.draggable.as_ref(),
84955            Self::Blink(e) => e.draggable.as_ref(),
84956            Self::Center(e) => e.draggable.as_ref(),
84957            Self::Dir(e) => e.draggable.as_ref(),
84958            Self::Font(e) => e.draggable.as_ref(),
84959            Self::Frame(e) => e.draggable.as_ref(),
84960            Self::Frameset(e) => e.draggable.as_ref(),
84961            Self::Image(e) => e.draggable.as_ref(),
84962            Self::Keygen(e) => e.draggable.as_ref(),
84963            Self::Marquee(e) => e.draggable.as_ref(),
84964            Self::Menuitem(e) => e.draggable.as_ref(),
84965            Self::Nobr(e) => e.draggable.as_ref(),
84966            Self::Noembed(e) => e.draggable.as_ref(),
84967            Self::Noframes(e) => e.draggable.as_ref(),
84968            Self::Param(e) => e.draggable.as_ref(),
84969            Self::Plaintext(e) => e.draggable.as_ref(),
84970            Self::Rb(e) => e.draggable.as_ref(),
84971            Self::Rtc(e) => e.draggable.as_ref(),
84972            Self::Spacer(e) => e.draggable.as_ref(),
84973            Self::Strike(e) => e.draggable.as_ref(),
84974            Self::Tt(e) => e.draggable.as_ref(),
84975            Self::Xmp(e) => e.draggable.as_ref(),
84976            Self::H1(e) => e.draggable.as_ref(),
84977            Self::H2(e) => e.draggable.as_ref(),
84978            Self::H3(e) => e.draggable.as_ref(),
84979            Self::H4(e) => e.draggable.as_ref(),
84980            Self::H5(e) => e.draggable.as_ref(),
84981            Self::H6(e) => e.draggable.as_ref(),
84982            Self::Unknown(e) => e.draggable.as_ref(),
84983        }
84984    }
84985
84986    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
84987    ///   
84988    #[cfg(feature = "alloc")]
84989    pub fn enterkeyhint(&self) -> core::option::Option<&AttributeValueOwned> {
84990        match self {
84991            Self::Html(e) => e.enterkeyhint.as_ref(),
84992            Self::Base(e) => e.enterkeyhint.as_ref(),
84993            Self::Head(e) => e.enterkeyhint.as_ref(),
84994            Self::Link(e) => e.enterkeyhint.as_ref(),
84995            Self::Meta(e) => e.enterkeyhint.as_ref(),
84996            Self::Style(e) => e.enterkeyhint.as_ref(),
84997            Self::Title(e) => e.enterkeyhint.as_ref(),
84998            Self::Body(e) => e.enterkeyhint.as_ref(),
84999            Self::Address(e) => e.enterkeyhint.as_ref(),
85000            Self::Article(e) => e.enterkeyhint.as_ref(),
85001            Self::Aside(e) => e.enterkeyhint.as_ref(),
85002            Self::Footer(e) => e.enterkeyhint.as_ref(),
85003            Self::Header(e) => e.enterkeyhint.as_ref(),
85004            Self::Hgroup(e) => e.enterkeyhint.as_ref(),
85005            Self::Main(e) => e.enterkeyhint.as_ref(),
85006            Self::Nav(e) => e.enterkeyhint.as_ref(),
85007            Self::Section(e) => e.enterkeyhint.as_ref(),
85008            Self::Blockquote(e) => e.enterkeyhint.as_ref(),
85009            Self::Dd(e) => e.enterkeyhint.as_ref(),
85010            Self::Div(e) => e.enterkeyhint.as_ref(),
85011            Self::Dl(e) => e.enterkeyhint.as_ref(),
85012            Self::Dt(e) => e.enterkeyhint.as_ref(),
85013            Self::Figcaption(e) => e.enterkeyhint.as_ref(),
85014            Self::Figure(e) => e.enterkeyhint.as_ref(),
85015            Self::Hr(e) => e.enterkeyhint.as_ref(),
85016            Self::Li(e) => e.enterkeyhint.as_ref(),
85017            Self::Menu(e) => e.enterkeyhint.as_ref(),
85018            Self::Ol(e) => e.enterkeyhint.as_ref(),
85019            Self::P(e) => e.enterkeyhint.as_ref(),
85020            Self::Pre(e) => e.enterkeyhint.as_ref(),
85021            Self::Ul(e) => e.enterkeyhint.as_ref(),
85022            Self::A(e) => e.enterkeyhint.as_ref(),
85023            Self::Abbr(e) => e.enterkeyhint.as_ref(),
85024            Self::B(e) => e.enterkeyhint.as_ref(),
85025            Self::Bdi(e) => e.enterkeyhint.as_ref(),
85026            Self::Bdo(e) => e.enterkeyhint.as_ref(),
85027            Self::Br(e) => e.enterkeyhint.as_ref(),
85028            Self::Cite(e) => e.enterkeyhint.as_ref(),
85029            Self::Code(e) => e.enterkeyhint.as_ref(),
85030            Self::Data(e) => e.enterkeyhint.as_ref(),
85031            Self::Dfn(e) => e.enterkeyhint.as_ref(),
85032            Self::Em(e) => e.enterkeyhint.as_ref(),
85033            Self::I(e) => e.enterkeyhint.as_ref(),
85034            Self::Kbd(e) => e.enterkeyhint.as_ref(),
85035            Self::Mark(e) => e.enterkeyhint.as_ref(),
85036            Self::Q(e) => e.enterkeyhint.as_ref(),
85037            Self::Rp(e) => e.enterkeyhint.as_ref(),
85038            Self::Rt(e) => e.enterkeyhint.as_ref(),
85039            Self::Ruby(e) => e.enterkeyhint.as_ref(),
85040            Self::S(e) => e.enterkeyhint.as_ref(),
85041            Self::Samp(e) => e.enterkeyhint.as_ref(),
85042            Self::Small(e) => e.enterkeyhint.as_ref(),
85043            Self::Span(e) => e.enterkeyhint.as_ref(),
85044            Self::Strong(e) => e.enterkeyhint.as_ref(),
85045            Self::Sub(e) => e.enterkeyhint.as_ref(),
85046            Self::Sup(e) => e.enterkeyhint.as_ref(),
85047            Self::Time(e) => e.enterkeyhint.as_ref(),
85048            Self::U(e) => e.enterkeyhint.as_ref(),
85049            Self::Var(e) => e.enterkeyhint.as_ref(),
85050            Self::Wbr(e) => e.enterkeyhint.as_ref(),
85051            Self::Area(e) => e.enterkeyhint.as_ref(),
85052            Self::Audio(e) => e.enterkeyhint.as_ref(),
85053            Self::Img(e) => e.enterkeyhint.as_ref(),
85054            Self::Map(e) => e.enterkeyhint.as_ref(),
85055            Self::Track(e) => e.enterkeyhint.as_ref(),
85056            Self::Video(e) => e.enterkeyhint.as_ref(),
85057            Self::Embed(e) => e.enterkeyhint.as_ref(),
85058            Self::Iframe(e) => e.enterkeyhint.as_ref(),
85059            Self::Object(e) => e.enterkeyhint.as_ref(),
85060            Self::Picture(e) => e.enterkeyhint.as_ref(),
85061            Self::Portal(e) => e.enterkeyhint.as_ref(),
85062            Self::Source(e) => e.enterkeyhint.as_ref(),
85063            Self::Canvas(e) => e.enterkeyhint.as_ref(),
85064            Self::Noscript(e) => e.enterkeyhint.as_ref(),
85065            Self::Script(e) => e.enterkeyhint.as_ref(),
85066            Self::Del(e) => e.enterkeyhint.as_ref(),
85067            Self::Ins(e) => e.enterkeyhint.as_ref(),
85068            Self::Caption(e) => e.enterkeyhint.as_ref(),
85069            Self::Col(e) => e.enterkeyhint.as_ref(),
85070            Self::Colgroup(e) => e.enterkeyhint.as_ref(),
85071            Self::Table(e) => e.enterkeyhint.as_ref(),
85072            Self::Tbody(e) => e.enterkeyhint.as_ref(),
85073            Self::Td(e) => e.enterkeyhint.as_ref(),
85074            Self::Tfoot(e) => e.enterkeyhint.as_ref(),
85075            Self::Th(e) => e.enterkeyhint.as_ref(),
85076            Self::Thead(e) => e.enterkeyhint.as_ref(),
85077            Self::Tr(e) => e.enterkeyhint.as_ref(),
85078            Self::Button(e) => e.enterkeyhint.as_ref(),
85079            Self::Datalist(e) => e.enterkeyhint.as_ref(),
85080            Self::Fieldset(e) => e.enterkeyhint.as_ref(),
85081            Self::Form(e) => e.enterkeyhint.as_ref(),
85082            Self::Input(e) => e.enterkeyhint.as_ref(),
85083            Self::Label(e) => e.enterkeyhint.as_ref(),
85084            Self::Legend(e) => e.enterkeyhint.as_ref(),
85085            Self::Meter(e) => e.enterkeyhint.as_ref(),
85086            Self::Optgroup(e) => e.enterkeyhint.as_ref(),
85087            Self::Option(e) => e.enterkeyhint.as_ref(),
85088            Self::Output(e) => e.enterkeyhint.as_ref(),
85089            Self::Progress(e) => e.enterkeyhint.as_ref(),
85090            Self::Select(e) => e.enterkeyhint.as_ref(),
85091            Self::Textarea(e) => e.enterkeyhint.as_ref(),
85092            Self::Details(e) => e.enterkeyhint.as_ref(),
85093            Self::Dialog(e) => e.enterkeyhint.as_ref(),
85094            Self::Summary(e) => e.enterkeyhint.as_ref(),
85095            Self::Slot(e) => e.enterkeyhint.as_ref(),
85096            Self::Template(e) => e.enterkeyhint.as_ref(),
85097            Self::Acronym(e) => e.enterkeyhint.as_ref(),
85098            Self::Applet(e) => e.enterkeyhint.as_ref(),
85099            Self::Bgsound(e) => e.enterkeyhint.as_ref(),
85100            Self::Big(e) => e.enterkeyhint.as_ref(),
85101            Self::Blink(e) => e.enterkeyhint.as_ref(),
85102            Self::Center(e) => e.enterkeyhint.as_ref(),
85103            Self::Dir(e) => e.enterkeyhint.as_ref(),
85104            Self::Font(e) => e.enterkeyhint.as_ref(),
85105            Self::Frame(e) => e.enterkeyhint.as_ref(),
85106            Self::Frameset(e) => e.enterkeyhint.as_ref(),
85107            Self::Image(e) => e.enterkeyhint.as_ref(),
85108            Self::Keygen(e) => e.enterkeyhint.as_ref(),
85109            Self::Marquee(e) => e.enterkeyhint.as_ref(),
85110            Self::Menuitem(e) => e.enterkeyhint.as_ref(),
85111            Self::Nobr(e) => e.enterkeyhint.as_ref(),
85112            Self::Noembed(e) => e.enterkeyhint.as_ref(),
85113            Self::Noframes(e) => e.enterkeyhint.as_ref(),
85114            Self::Param(e) => e.enterkeyhint.as_ref(),
85115            Self::Plaintext(e) => e.enterkeyhint.as_ref(),
85116            Self::Rb(e) => e.enterkeyhint.as_ref(),
85117            Self::Rtc(e) => e.enterkeyhint.as_ref(),
85118            Self::Spacer(e) => e.enterkeyhint.as_ref(),
85119            Self::Strike(e) => e.enterkeyhint.as_ref(),
85120            Self::Tt(e) => e.enterkeyhint.as_ref(),
85121            Self::Xmp(e) => e.enterkeyhint.as_ref(),
85122            Self::H1(e) => e.enterkeyhint.as_ref(),
85123            Self::H2(e) => e.enterkeyhint.as_ref(),
85124            Self::H3(e) => e.enterkeyhint.as_ref(),
85125            Self::H4(e) => e.enterkeyhint.as_ref(),
85126            Self::H5(e) => e.enterkeyhint.as_ref(),
85127            Self::H6(e) => e.enterkeyhint.as_ref(),
85128            Self::Unknown(e) => e.enterkeyhint.as_ref(),
85129        }
85130    }
85131
85132    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
85133    ///   
85134    #[cfg(feature = "alloc")]
85135    pub fn exportparts(&self) -> core::option::Option<&AttributeValueOwned> {
85136        match self {
85137            Self::Html(e) => e.exportparts.as_ref(),
85138            Self::Base(e) => e.exportparts.as_ref(),
85139            Self::Head(e) => e.exportparts.as_ref(),
85140            Self::Link(e) => e.exportparts.as_ref(),
85141            Self::Meta(e) => e.exportparts.as_ref(),
85142            Self::Style(e) => e.exportparts.as_ref(),
85143            Self::Title(e) => e.exportparts.as_ref(),
85144            Self::Body(e) => e.exportparts.as_ref(),
85145            Self::Address(e) => e.exportparts.as_ref(),
85146            Self::Article(e) => e.exportparts.as_ref(),
85147            Self::Aside(e) => e.exportparts.as_ref(),
85148            Self::Footer(e) => e.exportparts.as_ref(),
85149            Self::Header(e) => e.exportparts.as_ref(),
85150            Self::Hgroup(e) => e.exportparts.as_ref(),
85151            Self::Main(e) => e.exportparts.as_ref(),
85152            Self::Nav(e) => e.exportparts.as_ref(),
85153            Self::Section(e) => e.exportparts.as_ref(),
85154            Self::Blockquote(e) => e.exportparts.as_ref(),
85155            Self::Dd(e) => e.exportparts.as_ref(),
85156            Self::Div(e) => e.exportparts.as_ref(),
85157            Self::Dl(e) => e.exportparts.as_ref(),
85158            Self::Dt(e) => e.exportparts.as_ref(),
85159            Self::Figcaption(e) => e.exportparts.as_ref(),
85160            Self::Figure(e) => e.exportparts.as_ref(),
85161            Self::Hr(e) => e.exportparts.as_ref(),
85162            Self::Li(e) => e.exportparts.as_ref(),
85163            Self::Menu(e) => e.exportparts.as_ref(),
85164            Self::Ol(e) => e.exportparts.as_ref(),
85165            Self::P(e) => e.exportparts.as_ref(),
85166            Self::Pre(e) => e.exportparts.as_ref(),
85167            Self::Ul(e) => e.exportparts.as_ref(),
85168            Self::A(e) => e.exportparts.as_ref(),
85169            Self::Abbr(e) => e.exportparts.as_ref(),
85170            Self::B(e) => e.exportparts.as_ref(),
85171            Self::Bdi(e) => e.exportparts.as_ref(),
85172            Self::Bdo(e) => e.exportparts.as_ref(),
85173            Self::Br(e) => e.exportparts.as_ref(),
85174            Self::Cite(e) => e.exportparts.as_ref(),
85175            Self::Code(e) => e.exportparts.as_ref(),
85176            Self::Data(e) => e.exportparts.as_ref(),
85177            Self::Dfn(e) => e.exportparts.as_ref(),
85178            Self::Em(e) => e.exportparts.as_ref(),
85179            Self::I(e) => e.exportparts.as_ref(),
85180            Self::Kbd(e) => e.exportparts.as_ref(),
85181            Self::Mark(e) => e.exportparts.as_ref(),
85182            Self::Q(e) => e.exportparts.as_ref(),
85183            Self::Rp(e) => e.exportparts.as_ref(),
85184            Self::Rt(e) => e.exportparts.as_ref(),
85185            Self::Ruby(e) => e.exportparts.as_ref(),
85186            Self::S(e) => e.exportparts.as_ref(),
85187            Self::Samp(e) => e.exportparts.as_ref(),
85188            Self::Small(e) => e.exportparts.as_ref(),
85189            Self::Span(e) => e.exportparts.as_ref(),
85190            Self::Strong(e) => e.exportparts.as_ref(),
85191            Self::Sub(e) => e.exportparts.as_ref(),
85192            Self::Sup(e) => e.exportparts.as_ref(),
85193            Self::Time(e) => e.exportparts.as_ref(),
85194            Self::U(e) => e.exportparts.as_ref(),
85195            Self::Var(e) => e.exportparts.as_ref(),
85196            Self::Wbr(e) => e.exportparts.as_ref(),
85197            Self::Area(e) => e.exportparts.as_ref(),
85198            Self::Audio(e) => e.exportparts.as_ref(),
85199            Self::Img(e) => e.exportparts.as_ref(),
85200            Self::Map(e) => e.exportparts.as_ref(),
85201            Self::Track(e) => e.exportparts.as_ref(),
85202            Self::Video(e) => e.exportparts.as_ref(),
85203            Self::Embed(e) => e.exportparts.as_ref(),
85204            Self::Iframe(e) => e.exportparts.as_ref(),
85205            Self::Object(e) => e.exportparts.as_ref(),
85206            Self::Picture(e) => e.exportparts.as_ref(),
85207            Self::Portal(e) => e.exportparts.as_ref(),
85208            Self::Source(e) => e.exportparts.as_ref(),
85209            Self::Canvas(e) => e.exportparts.as_ref(),
85210            Self::Noscript(e) => e.exportparts.as_ref(),
85211            Self::Script(e) => e.exportparts.as_ref(),
85212            Self::Del(e) => e.exportparts.as_ref(),
85213            Self::Ins(e) => e.exportparts.as_ref(),
85214            Self::Caption(e) => e.exportparts.as_ref(),
85215            Self::Col(e) => e.exportparts.as_ref(),
85216            Self::Colgroup(e) => e.exportparts.as_ref(),
85217            Self::Table(e) => e.exportparts.as_ref(),
85218            Self::Tbody(e) => e.exportparts.as_ref(),
85219            Self::Td(e) => e.exportparts.as_ref(),
85220            Self::Tfoot(e) => e.exportparts.as_ref(),
85221            Self::Th(e) => e.exportparts.as_ref(),
85222            Self::Thead(e) => e.exportparts.as_ref(),
85223            Self::Tr(e) => e.exportparts.as_ref(),
85224            Self::Button(e) => e.exportparts.as_ref(),
85225            Self::Datalist(e) => e.exportparts.as_ref(),
85226            Self::Fieldset(e) => e.exportparts.as_ref(),
85227            Self::Form(e) => e.exportparts.as_ref(),
85228            Self::Input(e) => e.exportparts.as_ref(),
85229            Self::Label(e) => e.exportparts.as_ref(),
85230            Self::Legend(e) => e.exportparts.as_ref(),
85231            Self::Meter(e) => e.exportparts.as_ref(),
85232            Self::Optgroup(e) => e.exportparts.as_ref(),
85233            Self::Option(e) => e.exportparts.as_ref(),
85234            Self::Output(e) => e.exportparts.as_ref(),
85235            Self::Progress(e) => e.exportparts.as_ref(),
85236            Self::Select(e) => e.exportparts.as_ref(),
85237            Self::Textarea(e) => e.exportparts.as_ref(),
85238            Self::Details(e) => e.exportparts.as_ref(),
85239            Self::Dialog(e) => e.exportparts.as_ref(),
85240            Self::Summary(e) => e.exportparts.as_ref(),
85241            Self::Slot(e) => e.exportparts.as_ref(),
85242            Self::Template(e) => e.exportparts.as_ref(),
85243            Self::Acronym(e) => e.exportparts.as_ref(),
85244            Self::Applet(e) => e.exportparts.as_ref(),
85245            Self::Bgsound(e) => e.exportparts.as_ref(),
85246            Self::Big(e) => e.exportparts.as_ref(),
85247            Self::Blink(e) => e.exportparts.as_ref(),
85248            Self::Center(e) => e.exportparts.as_ref(),
85249            Self::Dir(e) => e.exportparts.as_ref(),
85250            Self::Font(e) => e.exportparts.as_ref(),
85251            Self::Frame(e) => e.exportparts.as_ref(),
85252            Self::Frameset(e) => e.exportparts.as_ref(),
85253            Self::Image(e) => e.exportparts.as_ref(),
85254            Self::Keygen(e) => e.exportparts.as_ref(),
85255            Self::Marquee(e) => e.exportparts.as_ref(),
85256            Self::Menuitem(e) => e.exportparts.as_ref(),
85257            Self::Nobr(e) => e.exportparts.as_ref(),
85258            Self::Noembed(e) => e.exportparts.as_ref(),
85259            Self::Noframes(e) => e.exportparts.as_ref(),
85260            Self::Param(e) => e.exportparts.as_ref(),
85261            Self::Plaintext(e) => e.exportparts.as_ref(),
85262            Self::Rb(e) => e.exportparts.as_ref(),
85263            Self::Rtc(e) => e.exportparts.as_ref(),
85264            Self::Spacer(e) => e.exportparts.as_ref(),
85265            Self::Strike(e) => e.exportparts.as_ref(),
85266            Self::Tt(e) => e.exportparts.as_ref(),
85267            Self::Xmp(e) => e.exportparts.as_ref(),
85268            Self::H1(e) => e.exportparts.as_ref(),
85269            Self::H2(e) => e.exportparts.as_ref(),
85270            Self::H3(e) => e.exportparts.as_ref(),
85271            Self::H4(e) => e.exportparts.as_ref(),
85272            Self::H5(e) => e.exportparts.as_ref(),
85273            Self::H6(e) => e.exportparts.as_ref(),
85274            Self::Unknown(e) => e.exportparts.as_ref(),
85275        }
85276    }
85277    /// Extra attributes of the element.
85278
85279    /// This is a map of attribute names to their values, and the attribute names are in lowercase.
85280    #[cfg(feature = "alloc")]
85281    pub fn extra(
85282        &self,
85283    ) -> &alloc::collections::BTreeMap<alloc::string::String, AttributeValueOwned> {
85284        match self {
85285            Self::Html(e) => &e.extra,
85286            Self::Base(e) => &e.extra,
85287            Self::Head(e) => &e.extra,
85288            Self::Link(e) => &e.extra,
85289            Self::Meta(e) => &e.extra,
85290            Self::Style(e) => &e.extra,
85291            Self::Title(e) => &e.extra,
85292            Self::Body(e) => &e.extra,
85293            Self::Address(e) => &e.extra,
85294            Self::Article(e) => &e.extra,
85295            Self::Aside(e) => &e.extra,
85296            Self::Footer(e) => &e.extra,
85297            Self::Header(e) => &e.extra,
85298            Self::Hgroup(e) => &e.extra,
85299            Self::Main(e) => &e.extra,
85300            Self::Nav(e) => &e.extra,
85301            Self::Section(e) => &e.extra,
85302            Self::Blockquote(e) => &e.extra,
85303            Self::Dd(e) => &e.extra,
85304            Self::Div(e) => &e.extra,
85305            Self::Dl(e) => &e.extra,
85306            Self::Dt(e) => &e.extra,
85307            Self::Figcaption(e) => &e.extra,
85308            Self::Figure(e) => &e.extra,
85309            Self::Hr(e) => &e.extra,
85310            Self::Li(e) => &e.extra,
85311            Self::Menu(e) => &e.extra,
85312            Self::Ol(e) => &e.extra,
85313            Self::P(e) => &e.extra,
85314            Self::Pre(e) => &e.extra,
85315            Self::Ul(e) => &e.extra,
85316            Self::A(e) => &e.extra,
85317            Self::Abbr(e) => &e.extra,
85318            Self::B(e) => &e.extra,
85319            Self::Bdi(e) => &e.extra,
85320            Self::Bdo(e) => &e.extra,
85321            Self::Br(e) => &e.extra,
85322            Self::Cite(e) => &e.extra,
85323            Self::Code(e) => &e.extra,
85324            Self::Data(e) => &e.extra,
85325            Self::Dfn(e) => &e.extra,
85326            Self::Em(e) => &e.extra,
85327            Self::I(e) => &e.extra,
85328            Self::Kbd(e) => &e.extra,
85329            Self::Mark(e) => &e.extra,
85330            Self::Q(e) => &e.extra,
85331            Self::Rp(e) => &e.extra,
85332            Self::Rt(e) => &e.extra,
85333            Self::Ruby(e) => &e.extra,
85334            Self::S(e) => &e.extra,
85335            Self::Samp(e) => &e.extra,
85336            Self::Small(e) => &e.extra,
85337            Self::Span(e) => &e.extra,
85338            Self::Strong(e) => &e.extra,
85339            Self::Sub(e) => &e.extra,
85340            Self::Sup(e) => &e.extra,
85341            Self::Time(e) => &e.extra,
85342            Self::U(e) => &e.extra,
85343            Self::Var(e) => &e.extra,
85344            Self::Wbr(e) => &e.extra,
85345            Self::Area(e) => &e.extra,
85346            Self::Audio(e) => &e.extra,
85347            Self::Img(e) => &e.extra,
85348            Self::Map(e) => &e.extra,
85349            Self::Track(e) => &e.extra,
85350            Self::Video(e) => &e.extra,
85351            Self::Embed(e) => &e.extra,
85352            Self::Iframe(e) => &e.extra,
85353            Self::Object(e) => &e.extra,
85354            Self::Picture(e) => &e.extra,
85355            Self::Portal(e) => &e.extra,
85356            Self::Source(e) => &e.extra,
85357            Self::Canvas(e) => &e.extra,
85358            Self::Noscript(e) => &e.extra,
85359            Self::Script(e) => &e.extra,
85360            Self::Del(e) => &e.extra,
85361            Self::Ins(e) => &e.extra,
85362            Self::Caption(e) => &e.extra,
85363            Self::Col(e) => &e.extra,
85364            Self::Colgroup(e) => &e.extra,
85365            Self::Table(e) => &e.extra,
85366            Self::Tbody(e) => &e.extra,
85367            Self::Td(e) => &e.extra,
85368            Self::Tfoot(e) => &e.extra,
85369            Self::Th(e) => &e.extra,
85370            Self::Thead(e) => &e.extra,
85371            Self::Tr(e) => &e.extra,
85372            Self::Button(e) => &e.extra,
85373            Self::Datalist(e) => &e.extra,
85374            Self::Fieldset(e) => &e.extra,
85375            Self::Form(e) => &e.extra,
85376            Self::Input(e) => &e.extra,
85377            Self::Label(e) => &e.extra,
85378            Self::Legend(e) => &e.extra,
85379            Self::Meter(e) => &e.extra,
85380            Self::Optgroup(e) => &e.extra,
85381            Self::Option(e) => &e.extra,
85382            Self::Output(e) => &e.extra,
85383            Self::Progress(e) => &e.extra,
85384            Self::Select(e) => &e.extra,
85385            Self::Textarea(e) => &e.extra,
85386            Self::Details(e) => &e.extra,
85387            Self::Dialog(e) => &e.extra,
85388            Self::Summary(e) => &e.extra,
85389            Self::Slot(e) => &e.extra,
85390            Self::Template(e) => &e.extra,
85391            Self::Acronym(e) => &e.extra,
85392            Self::Applet(e) => &e.extra,
85393            Self::Bgsound(e) => &e.extra,
85394            Self::Big(e) => &e.extra,
85395            Self::Blink(e) => &e.extra,
85396            Self::Center(e) => &e.extra,
85397            Self::Dir(e) => &e.extra,
85398            Self::Font(e) => &e.extra,
85399            Self::Frame(e) => &e.extra,
85400            Self::Frameset(e) => &e.extra,
85401            Self::Image(e) => &e.extra,
85402            Self::Keygen(e) => &e.extra,
85403            Self::Marquee(e) => &e.extra,
85404            Self::Menuitem(e) => &e.extra,
85405            Self::Nobr(e) => &e.extra,
85406            Self::Noembed(e) => &e.extra,
85407            Self::Noframes(e) => &e.extra,
85408            Self::Param(e) => &e.extra,
85409            Self::Plaintext(e) => &e.extra,
85410            Self::Rb(e) => &e.extra,
85411            Self::Rtc(e) => &e.extra,
85412            Self::Spacer(e) => &e.extra,
85413            Self::Strike(e) => &e.extra,
85414            Self::Tt(e) => &e.extra,
85415            Self::Xmp(e) => &e.extra,
85416            Self::H1(e) => &e.extra,
85417            Self::H2(e) => &e.extra,
85418            Self::H3(e) => &e.extra,
85419            Self::H4(e) => &e.extra,
85420            Self::H5(e) => &e.extra,
85421            Self::H6(e) => &e.extra,
85422            Self::Unknown(e) => &e.extra,
85423        }
85424    }
85425
85426    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
85427    ///   
85428    #[cfg(feature = "alloc")]
85429    pub fn hidden(&self) -> core::option::Option<&AttributeValueOwned> {
85430        match self {
85431            Self::Html(e) => e.hidden.as_ref(),
85432            Self::Base(e) => e.hidden.as_ref(),
85433            Self::Head(e) => e.hidden.as_ref(),
85434            Self::Link(e) => e.hidden.as_ref(),
85435            Self::Meta(e) => e.hidden.as_ref(),
85436            Self::Style(e) => e.hidden.as_ref(),
85437            Self::Title(e) => e.hidden.as_ref(),
85438            Self::Body(e) => e.hidden.as_ref(),
85439            Self::Address(e) => e.hidden.as_ref(),
85440            Self::Article(e) => e.hidden.as_ref(),
85441            Self::Aside(e) => e.hidden.as_ref(),
85442            Self::Footer(e) => e.hidden.as_ref(),
85443            Self::Header(e) => e.hidden.as_ref(),
85444            Self::Hgroup(e) => e.hidden.as_ref(),
85445            Self::Main(e) => e.hidden.as_ref(),
85446            Self::Nav(e) => e.hidden.as_ref(),
85447            Self::Section(e) => e.hidden.as_ref(),
85448            Self::Blockquote(e) => e.hidden.as_ref(),
85449            Self::Dd(e) => e.hidden.as_ref(),
85450            Self::Div(e) => e.hidden.as_ref(),
85451            Self::Dl(e) => e.hidden.as_ref(),
85452            Self::Dt(e) => e.hidden.as_ref(),
85453            Self::Figcaption(e) => e.hidden.as_ref(),
85454            Self::Figure(e) => e.hidden.as_ref(),
85455            Self::Hr(e) => e.hidden.as_ref(),
85456            Self::Li(e) => e.hidden.as_ref(),
85457            Self::Menu(e) => e.hidden.as_ref(),
85458            Self::Ol(e) => e.hidden.as_ref(),
85459            Self::P(e) => e.hidden.as_ref(),
85460            Self::Pre(e) => e.hidden.as_ref(),
85461            Self::Ul(e) => e.hidden.as_ref(),
85462            Self::A(e) => e.hidden.as_ref(),
85463            Self::Abbr(e) => e.hidden.as_ref(),
85464            Self::B(e) => e.hidden.as_ref(),
85465            Self::Bdi(e) => e.hidden.as_ref(),
85466            Self::Bdo(e) => e.hidden.as_ref(),
85467            Self::Br(e) => e.hidden.as_ref(),
85468            Self::Cite(e) => e.hidden.as_ref(),
85469            Self::Code(e) => e.hidden.as_ref(),
85470            Self::Data(e) => e.hidden.as_ref(),
85471            Self::Dfn(e) => e.hidden.as_ref(),
85472            Self::Em(e) => e.hidden.as_ref(),
85473            Self::I(e) => e.hidden.as_ref(),
85474            Self::Kbd(e) => e.hidden.as_ref(),
85475            Self::Mark(e) => e.hidden.as_ref(),
85476            Self::Q(e) => e.hidden.as_ref(),
85477            Self::Rp(e) => e.hidden.as_ref(),
85478            Self::Rt(e) => e.hidden.as_ref(),
85479            Self::Ruby(e) => e.hidden.as_ref(),
85480            Self::S(e) => e.hidden.as_ref(),
85481            Self::Samp(e) => e.hidden.as_ref(),
85482            Self::Small(e) => e.hidden.as_ref(),
85483            Self::Span(e) => e.hidden.as_ref(),
85484            Self::Strong(e) => e.hidden.as_ref(),
85485            Self::Sub(e) => e.hidden.as_ref(),
85486            Self::Sup(e) => e.hidden.as_ref(),
85487            Self::Time(e) => e.hidden.as_ref(),
85488            Self::U(e) => e.hidden.as_ref(),
85489            Self::Var(e) => e.hidden.as_ref(),
85490            Self::Wbr(e) => e.hidden.as_ref(),
85491            Self::Area(e) => e.hidden.as_ref(),
85492            Self::Audio(e) => e.hidden.as_ref(),
85493            Self::Img(e) => e.hidden.as_ref(),
85494            Self::Map(e) => e.hidden.as_ref(),
85495            Self::Track(e) => e.hidden.as_ref(),
85496            Self::Video(e) => e.hidden.as_ref(),
85497            Self::Embed(e) => e.hidden.as_ref(),
85498            Self::Iframe(e) => e.hidden.as_ref(),
85499            Self::Object(e) => e.hidden.as_ref(),
85500            Self::Picture(e) => e.hidden.as_ref(),
85501            Self::Portal(e) => e.hidden.as_ref(),
85502            Self::Source(e) => e.hidden.as_ref(),
85503            Self::Canvas(e) => e.hidden.as_ref(),
85504            Self::Noscript(e) => e.hidden.as_ref(),
85505            Self::Script(e) => e.hidden.as_ref(),
85506            Self::Del(e) => e.hidden.as_ref(),
85507            Self::Ins(e) => e.hidden.as_ref(),
85508            Self::Caption(e) => e.hidden.as_ref(),
85509            Self::Col(e) => e.hidden.as_ref(),
85510            Self::Colgroup(e) => e.hidden.as_ref(),
85511            Self::Table(e) => e.hidden.as_ref(),
85512            Self::Tbody(e) => e.hidden.as_ref(),
85513            Self::Td(e) => e.hidden.as_ref(),
85514            Self::Tfoot(e) => e.hidden.as_ref(),
85515            Self::Th(e) => e.hidden.as_ref(),
85516            Self::Thead(e) => e.hidden.as_ref(),
85517            Self::Tr(e) => e.hidden.as_ref(),
85518            Self::Button(e) => e.hidden.as_ref(),
85519            Self::Datalist(e) => e.hidden.as_ref(),
85520            Self::Fieldset(e) => e.hidden.as_ref(),
85521            Self::Form(e) => e.hidden.as_ref(),
85522            Self::Input(e) => e.hidden.as_ref(),
85523            Self::Label(e) => e.hidden.as_ref(),
85524            Self::Legend(e) => e.hidden.as_ref(),
85525            Self::Meter(e) => e.hidden.as_ref(),
85526            Self::Optgroup(e) => e.hidden.as_ref(),
85527            Self::Option(e) => e.hidden.as_ref(),
85528            Self::Output(e) => e.hidden.as_ref(),
85529            Self::Progress(e) => e.hidden.as_ref(),
85530            Self::Select(e) => e.hidden.as_ref(),
85531            Self::Textarea(e) => e.hidden.as_ref(),
85532            Self::Details(e) => e.hidden.as_ref(),
85533            Self::Dialog(e) => e.hidden.as_ref(),
85534            Self::Summary(e) => e.hidden.as_ref(),
85535            Self::Slot(e) => e.hidden.as_ref(),
85536            Self::Template(e) => e.hidden.as_ref(),
85537            Self::Acronym(e) => e.hidden.as_ref(),
85538            Self::Applet(e) => e.hidden.as_ref(),
85539            Self::Bgsound(e) => e.hidden.as_ref(),
85540            Self::Big(e) => e.hidden.as_ref(),
85541            Self::Blink(e) => e.hidden.as_ref(),
85542            Self::Center(e) => e.hidden.as_ref(),
85543            Self::Dir(e) => e.hidden.as_ref(),
85544            Self::Font(e) => e.hidden.as_ref(),
85545            Self::Frame(e) => e.hidden.as_ref(),
85546            Self::Frameset(e) => e.hidden.as_ref(),
85547            Self::Image(e) => e.hidden.as_ref(),
85548            Self::Keygen(e) => e.hidden.as_ref(),
85549            Self::Marquee(e) => e.hidden.as_ref(),
85550            Self::Menuitem(e) => e.hidden.as_ref(),
85551            Self::Nobr(e) => e.hidden.as_ref(),
85552            Self::Noembed(e) => e.hidden.as_ref(),
85553            Self::Noframes(e) => e.hidden.as_ref(),
85554            Self::Param(e) => e.hidden.as_ref(),
85555            Self::Plaintext(e) => e.hidden.as_ref(),
85556            Self::Rb(e) => e.hidden.as_ref(),
85557            Self::Rtc(e) => e.hidden.as_ref(),
85558            Self::Spacer(e) => e.hidden.as_ref(),
85559            Self::Strike(e) => e.hidden.as_ref(),
85560            Self::Tt(e) => e.hidden.as_ref(),
85561            Self::Xmp(e) => e.hidden.as_ref(),
85562            Self::H1(e) => e.hidden.as_ref(),
85563            Self::H2(e) => e.hidden.as_ref(),
85564            Self::H3(e) => e.hidden.as_ref(),
85565            Self::H4(e) => e.hidden.as_ref(),
85566            Self::H5(e) => e.hidden.as_ref(),
85567            Self::H6(e) => e.hidden.as_ref(),
85568            Self::Unknown(e) => e.hidden.as_ref(),
85569        }
85570    }
85571
85572    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
85573    ///   
85574    #[cfg(feature = "alloc")]
85575    pub fn id(&self) -> core::option::Option<&AttributeValueOwned> {
85576        match self {
85577            Self::Html(e) => e.id.as_ref(),
85578            Self::Base(e) => e.id.as_ref(),
85579            Self::Head(e) => e.id.as_ref(),
85580            Self::Link(e) => e.id.as_ref(),
85581            Self::Meta(e) => e.id.as_ref(),
85582            Self::Style(e) => e.id.as_ref(),
85583            Self::Title(e) => e.id.as_ref(),
85584            Self::Body(e) => e.id.as_ref(),
85585            Self::Address(e) => e.id.as_ref(),
85586            Self::Article(e) => e.id.as_ref(),
85587            Self::Aside(e) => e.id.as_ref(),
85588            Self::Footer(e) => e.id.as_ref(),
85589            Self::Header(e) => e.id.as_ref(),
85590            Self::Hgroup(e) => e.id.as_ref(),
85591            Self::Main(e) => e.id.as_ref(),
85592            Self::Nav(e) => e.id.as_ref(),
85593            Self::Section(e) => e.id.as_ref(),
85594            Self::Blockquote(e) => e.id.as_ref(),
85595            Self::Dd(e) => e.id.as_ref(),
85596            Self::Div(e) => e.id.as_ref(),
85597            Self::Dl(e) => e.id.as_ref(),
85598            Self::Dt(e) => e.id.as_ref(),
85599            Self::Figcaption(e) => e.id.as_ref(),
85600            Self::Figure(e) => e.id.as_ref(),
85601            Self::Hr(e) => e.id.as_ref(),
85602            Self::Li(e) => e.id.as_ref(),
85603            Self::Menu(e) => e.id.as_ref(),
85604            Self::Ol(e) => e.id.as_ref(),
85605            Self::P(e) => e.id.as_ref(),
85606            Self::Pre(e) => e.id.as_ref(),
85607            Self::Ul(e) => e.id.as_ref(),
85608            Self::A(e) => e.id.as_ref(),
85609            Self::Abbr(e) => e.id.as_ref(),
85610            Self::B(e) => e.id.as_ref(),
85611            Self::Bdi(e) => e.id.as_ref(),
85612            Self::Bdo(e) => e.id.as_ref(),
85613            Self::Br(e) => e.id.as_ref(),
85614            Self::Cite(e) => e.id.as_ref(),
85615            Self::Code(e) => e.id.as_ref(),
85616            Self::Data(e) => e.id.as_ref(),
85617            Self::Dfn(e) => e.id.as_ref(),
85618            Self::Em(e) => e.id.as_ref(),
85619            Self::I(e) => e.id.as_ref(),
85620            Self::Kbd(e) => e.id.as_ref(),
85621            Self::Mark(e) => e.id.as_ref(),
85622            Self::Q(e) => e.id.as_ref(),
85623            Self::Rp(e) => e.id.as_ref(),
85624            Self::Rt(e) => e.id.as_ref(),
85625            Self::Ruby(e) => e.id.as_ref(),
85626            Self::S(e) => e.id.as_ref(),
85627            Self::Samp(e) => e.id.as_ref(),
85628            Self::Small(e) => e.id.as_ref(),
85629            Self::Span(e) => e.id.as_ref(),
85630            Self::Strong(e) => e.id.as_ref(),
85631            Self::Sub(e) => e.id.as_ref(),
85632            Self::Sup(e) => e.id.as_ref(),
85633            Self::Time(e) => e.id.as_ref(),
85634            Self::U(e) => e.id.as_ref(),
85635            Self::Var(e) => e.id.as_ref(),
85636            Self::Wbr(e) => e.id.as_ref(),
85637            Self::Area(e) => e.id.as_ref(),
85638            Self::Audio(e) => e.id.as_ref(),
85639            Self::Img(e) => e.id.as_ref(),
85640            Self::Map(e) => e.id.as_ref(),
85641            Self::Track(e) => e.id.as_ref(),
85642            Self::Video(e) => e.id.as_ref(),
85643            Self::Embed(e) => e.id.as_ref(),
85644            Self::Iframe(e) => e.id.as_ref(),
85645            Self::Object(e) => e.id.as_ref(),
85646            Self::Picture(e) => e.id.as_ref(),
85647            Self::Portal(e) => e.id.as_ref(),
85648            Self::Source(e) => e.id.as_ref(),
85649            Self::Canvas(e) => e.id.as_ref(),
85650            Self::Noscript(e) => e.id.as_ref(),
85651            Self::Script(e) => e.id.as_ref(),
85652            Self::Del(e) => e.id.as_ref(),
85653            Self::Ins(e) => e.id.as_ref(),
85654            Self::Caption(e) => e.id.as_ref(),
85655            Self::Col(e) => e.id.as_ref(),
85656            Self::Colgroup(e) => e.id.as_ref(),
85657            Self::Table(e) => e.id.as_ref(),
85658            Self::Tbody(e) => e.id.as_ref(),
85659            Self::Td(e) => e.id.as_ref(),
85660            Self::Tfoot(e) => e.id.as_ref(),
85661            Self::Th(e) => e.id.as_ref(),
85662            Self::Thead(e) => e.id.as_ref(),
85663            Self::Tr(e) => e.id.as_ref(),
85664            Self::Button(e) => e.id.as_ref(),
85665            Self::Datalist(e) => e.id.as_ref(),
85666            Self::Fieldset(e) => e.id.as_ref(),
85667            Self::Form(e) => e.id.as_ref(),
85668            Self::Input(e) => e.id.as_ref(),
85669            Self::Label(e) => e.id.as_ref(),
85670            Self::Legend(e) => e.id.as_ref(),
85671            Self::Meter(e) => e.id.as_ref(),
85672            Self::Optgroup(e) => e.id.as_ref(),
85673            Self::Option(e) => e.id.as_ref(),
85674            Self::Output(e) => e.id.as_ref(),
85675            Self::Progress(e) => e.id.as_ref(),
85676            Self::Select(e) => e.id.as_ref(),
85677            Self::Textarea(e) => e.id.as_ref(),
85678            Self::Details(e) => e.id.as_ref(),
85679            Self::Dialog(e) => e.id.as_ref(),
85680            Self::Summary(e) => e.id.as_ref(),
85681            Self::Slot(e) => e.id.as_ref(),
85682            Self::Template(e) => e.id.as_ref(),
85683            Self::Acronym(e) => e.id.as_ref(),
85684            Self::Applet(e) => e.id.as_ref(),
85685            Self::Bgsound(e) => e.id.as_ref(),
85686            Self::Big(e) => e.id.as_ref(),
85687            Self::Blink(e) => e.id.as_ref(),
85688            Self::Center(e) => e.id.as_ref(),
85689            Self::Dir(e) => e.id.as_ref(),
85690            Self::Font(e) => e.id.as_ref(),
85691            Self::Frame(e) => e.id.as_ref(),
85692            Self::Frameset(e) => e.id.as_ref(),
85693            Self::Image(e) => e.id.as_ref(),
85694            Self::Keygen(e) => e.id.as_ref(),
85695            Self::Marquee(e) => e.id.as_ref(),
85696            Self::Menuitem(e) => e.id.as_ref(),
85697            Self::Nobr(e) => e.id.as_ref(),
85698            Self::Noembed(e) => e.id.as_ref(),
85699            Self::Noframes(e) => e.id.as_ref(),
85700            Self::Param(e) => e.id.as_ref(),
85701            Self::Plaintext(e) => e.id.as_ref(),
85702            Self::Rb(e) => e.id.as_ref(),
85703            Self::Rtc(e) => e.id.as_ref(),
85704            Self::Spacer(e) => e.id.as_ref(),
85705            Self::Strike(e) => e.id.as_ref(),
85706            Self::Tt(e) => e.id.as_ref(),
85707            Self::Xmp(e) => e.id.as_ref(),
85708            Self::H1(e) => e.id.as_ref(),
85709            Self::H2(e) => e.id.as_ref(),
85710            Self::H3(e) => e.id.as_ref(),
85711            Self::H4(e) => e.id.as_ref(),
85712            Self::H5(e) => e.id.as_ref(),
85713            Self::H6(e) => e.id.as_ref(),
85714            Self::Unknown(e) => e.id.as_ref(),
85715        }
85716    }
85717
85718    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
85719    ///   
85720    #[cfg(feature = "alloc")]
85721    pub fn inert(&self) -> core::option::Option<&AttributeValueOwned> {
85722        match self {
85723            Self::Html(e) => e.inert.as_ref(),
85724            Self::Base(e) => e.inert.as_ref(),
85725            Self::Head(e) => e.inert.as_ref(),
85726            Self::Link(e) => e.inert.as_ref(),
85727            Self::Meta(e) => e.inert.as_ref(),
85728            Self::Style(e) => e.inert.as_ref(),
85729            Self::Title(e) => e.inert.as_ref(),
85730            Self::Body(e) => e.inert.as_ref(),
85731            Self::Address(e) => e.inert.as_ref(),
85732            Self::Article(e) => e.inert.as_ref(),
85733            Self::Aside(e) => e.inert.as_ref(),
85734            Self::Footer(e) => e.inert.as_ref(),
85735            Self::Header(e) => e.inert.as_ref(),
85736            Self::Hgroup(e) => e.inert.as_ref(),
85737            Self::Main(e) => e.inert.as_ref(),
85738            Self::Nav(e) => e.inert.as_ref(),
85739            Self::Section(e) => e.inert.as_ref(),
85740            Self::Blockquote(e) => e.inert.as_ref(),
85741            Self::Dd(e) => e.inert.as_ref(),
85742            Self::Div(e) => e.inert.as_ref(),
85743            Self::Dl(e) => e.inert.as_ref(),
85744            Self::Dt(e) => e.inert.as_ref(),
85745            Self::Figcaption(e) => e.inert.as_ref(),
85746            Self::Figure(e) => e.inert.as_ref(),
85747            Self::Hr(e) => e.inert.as_ref(),
85748            Self::Li(e) => e.inert.as_ref(),
85749            Self::Menu(e) => e.inert.as_ref(),
85750            Self::Ol(e) => e.inert.as_ref(),
85751            Self::P(e) => e.inert.as_ref(),
85752            Self::Pre(e) => e.inert.as_ref(),
85753            Self::Ul(e) => e.inert.as_ref(),
85754            Self::A(e) => e.inert.as_ref(),
85755            Self::Abbr(e) => e.inert.as_ref(),
85756            Self::B(e) => e.inert.as_ref(),
85757            Self::Bdi(e) => e.inert.as_ref(),
85758            Self::Bdo(e) => e.inert.as_ref(),
85759            Self::Br(e) => e.inert.as_ref(),
85760            Self::Cite(e) => e.inert.as_ref(),
85761            Self::Code(e) => e.inert.as_ref(),
85762            Self::Data(e) => e.inert.as_ref(),
85763            Self::Dfn(e) => e.inert.as_ref(),
85764            Self::Em(e) => e.inert.as_ref(),
85765            Self::I(e) => e.inert.as_ref(),
85766            Self::Kbd(e) => e.inert.as_ref(),
85767            Self::Mark(e) => e.inert.as_ref(),
85768            Self::Q(e) => e.inert.as_ref(),
85769            Self::Rp(e) => e.inert.as_ref(),
85770            Self::Rt(e) => e.inert.as_ref(),
85771            Self::Ruby(e) => e.inert.as_ref(),
85772            Self::S(e) => e.inert.as_ref(),
85773            Self::Samp(e) => e.inert.as_ref(),
85774            Self::Small(e) => e.inert.as_ref(),
85775            Self::Span(e) => e.inert.as_ref(),
85776            Self::Strong(e) => e.inert.as_ref(),
85777            Self::Sub(e) => e.inert.as_ref(),
85778            Self::Sup(e) => e.inert.as_ref(),
85779            Self::Time(e) => e.inert.as_ref(),
85780            Self::U(e) => e.inert.as_ref(),
85781            Self::Var(e) => e.inert.as_ref(),
85782            Self::Wbr(e) => e.inert.as_ref(),
85783            Self::Area(e) => e.inert.as_ref(),
85784            Self::Audio(e) => e.inert.as_ref(),
85785            Self::Img(e) => e.inert.as_ref(),
85786            Self::Map(e) => e.inert.as_ref(),
85787            Self::Track(e) => e.inert.as_ref(),
85788            Self::Video(e) => e.inert.as_ref(),
85789            Self::Embed(e) => e.inert.as_ref(),
85790            Self::Iframe(e) => e.inert.as_ref(),
85791            Self::Object(e) => e.inert.as_ref(),
85792            Self::Picture(e) => e.inert.as_ref(),
85793            Self::Portal(e) => e.inert.as_ref(),
85794            Self::Source(e) => e.inert.as_ref(),
85795            Self::Canvas(e) => e.inert.as_ref(),
85796            Self::Noscript(e) => e.inert.as_ref(),
85797            Self::Script(e) => e.inert.as_ref(),
85798            Self::Del(e) => e.inert.as_ref(),
85799            Self::Ins(e) => e.inert.as_ref(),
85800            Self::Caption(e) => e.inert.as_ref(),
85801            Self::Col(e) => e.inert.as_ref(),
85802            Self::Colgroup(e) => e.inert.as_ref(),
85803            Self::Table(e) => e.inert.as_ref(),
85804            Self::Tbody(e) => e.inert.as_ref(),
85805            Self::Td(e) => e.inert.as_ref(),
85806            Self::Tfoot(e) => e.inert.as_ref(),
85807            Self::Th(e) => e.inert.as_ref(),
85808            Self::Thead(e) => e.inert.as_ref(),
85809            Self::Tr(e) => e.inert.as_ref(),
85810            Self::Button(e) => e.inert.as_ref(),
85811            Self::Datalist(e) => e.inert.as_ref(),
85812            Self::Fieldset(e) => e.inert.as_ref(),
85813            Self::Form(e) => e.inert.as_ref(),
85814            Self::Input(e) => e.inert.as_ref(),
85815            Self::Label(e) => e.inert.as_ref(),
85816            Self::Legend(e) => e.inert.as_ref(),
85817            Self::Meter(e) => e.inert.as_ref(),
85818            Self::Optgroup(e) => e.inert.as_ref(),
85819            Self::Option(e) => e.inert.as_ref(),
85820            Self::Output(e) => e.inert.as_ref(),
85821            Self::Progress(e) => e.inert.as_ref(),
85822            Self::Select(e) => e.inert.as_ref(),
85823            Self::Textarea(e) => e.inert.as_ref(),
85824            Self::Details(e) => e.inert.as_ref(),
85825            Self::Dialog(e) => e.inert.as_ref(),
85826            Self::Summary(e) => e.inert.as_ref(),
85827            Self::Slot(e) => e.inert.as_ref(),
85828            Self::Template(e) => e.inert.as_ref(),
85829            Self::Acronym(e) => e.inert.as_ref(),
85830            Self::Applet(e) => e.inert.as_ref(),
85831            Self::Bgsound(e) => e.inert.as_ref(),
85832            Self::Big(e) => e.inert.as_ref(),
85833            Self::Blink(e) => e.inert.as_ref(),
85834            Self::Center(e) => e.inert.as_ref(),
85835            Self::Dir(e) => e.inert.as_ref(),
85836            Self::Font(e) => e.inert.as_ref(),
85837            Self::Frame(e) => e.inert.as_ref(),
85838            Self::Frameset(e) => e.inert.as_ref(),
85839            Self::Image(e) => e.inert.as_ref(),
85840            Self::Keygen(e) => e.inert.as_ref(),
85841            Self::Marquee(e) => e.inert.as_ref(),
85842            Self::Menuitem(e) => e.inert.as_ref(),
85843            Self::Nobr(e) => e.inert.as_ref(),
85844            Self::Noembed(e) => e.inert.as_ref(),
85845            Self::Noframes(e) => e.inert.as_ref(),
85846            Self::Param(e) => e.inert.as_ref(),
85847            Self::Plaintext(e) => e.inert.as_ref(),
85848            Self::Rb(e) => e.inert.as_ref(),
85849            Self::Rtc(e) => e.inert.as_ref(),
85850            Self::Spacer(e) => e.inert.as_ref(),
85851            Self::Strike(e) => e.inert.as_ref(),
85852            Self::Tt(e) => e.inert.as_ref(),
85853            Self::Xmp(e) => e.inert.as_ref(),
85854            Self::H1(e) => e.inert.as_ref(),
85855            Self::H2(e) => e.inert.as_ref(),
85856            Self::H3(e) => e.inert.as_ref(),
85857            Self::H4(e) => e.inert.as_ref(),
85858            Self::H5(e) => e.inert.as_ref(),
85859            Self::H6(e) => e.inert.as_ref(),
85860            Self::Unknown(e) => e.inert.as_ref(),
85861        }
85862    }
85863
85864    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
85865    ///   
85866    #[cfg(feature = "alloc")]
85867    pub fn inputmode(&self) -> core::option::Option<&AttributeValueOwned> {
85868        match self {
85869            Self::Html(e) => e.inputmode.as_ref(),
85870            Self::Base(e) => e.inputmode.as_ref(),
85871            Self::Head(e) => e.inputmode.as_ref(),
85872            Self::Link(e) => e.inputmode.as_ref(),
85873            Self::Meta(e) => e.inputmode.as_ref(),
85874            Self::Style(e) => e.inputmode.as_ref(),
85875            Self::Title(e) => e.inputmode.as_ref(),
85876            Self::Body(e) => e.inputmode.as_ref(),
85877            Self::Address(e) => e.inputmode.as_ref(),
85878            Self::Article(e) => e.inputmode.as_ref(),
85879            Self::Aside(e) => e.inputmode.as_ref(),
85880            Self::Footer(e) => e.inputmode.as_ref(),
85881            Self::Header(e) => e.inputmode.as_ref(),
85882            Self::Hgroup(e) => e.inputmode.as_ref(),
85883            Self::Main(e) => e.inputmode.as_ref(),
85884            Self::Nav(e) => e.inputmode.as_ref(),
85885            Self::Section(e) => e.inputmode.as_ref(),
85886            Self::Blockquote(e) => e.inputmode.as_ref(),
85887            Self::Dd(e) => e.inputmode.as_ref(),
85888            Self::Div(e) => e.inputmode.as_ref(),
85889            Self::Dl(e) => e.inputmode.as_ref(),
85890            Self::Dt(e) => e.inputmode.as_ref(),
85891            Self::Figcaption(e) => e.inputmode.as_ref(),
85892            Self::Figure(e) => e.inputmode.as_ref(),
85893            Self::Hr(e) => e.inputmode.as_ref(),
85894            Self::Li(e) => e.inputmode.as_ref(),
85895            Self::Menu(e) => e.inputmode.as_ref(),
85896            Self::Ol(e) => e.inputmode.as_ref(),
85897            Self::P(e) => e.inputmode.as_ref(),
85898            Self::Pre(e) => e.inputmode.as_ref(),
85899            Self::Ul(e) => e.inputmode.as_ref(),
85900            Self::A(e) => e.inputmode.as_ref(),
85901            Self::Abbr(e) => e.inputmode.as_ref(),
85902            Self::B(e) => e.inputmode.as_ref(),
85903            Self::Bdi(e) => e.inputmode.as_ref(),
85904            Self::Bdo(e) => e.inputmode.as_ref(),
85905            Self::Br(e) => e.inputmode.as_ref(),
85906            Self::Cite(e) => e.inputmode.as_ref(),
85907            Self::Code(e) => e.inputmode.as_ref(),
85908            Self::Data(e) => e.inputmode.as_ref(),
85909            Self::Dfn(e) => e.inputmode.as_ref(),
85910            Self::Em(e) => e.inputmode.as_ref(),
85911            Self::I(e) => e.inputmode.as_ref(),
85912            Self::Kbd(e) => e.inputmode.as_ref(),
85913            Self::Mark(e) => e.inputmode.as_ref(),
85914            Self::Q(e) => e.inputmode.as_ref(),
85915            Self::Rp(e) => e.inputmode.as_ref(),
85916            Self::Rt(e) => e.inputmode.as_ref(),
85917            Self::Ruby(e) => e.inputmode.as_ref(),
85918            Self::S(e) => e.inputmode.as_ref(),
85919            Self::Samp(e) => e.inputmode.as_ref(),
85920            Self::Small(e) => e.inputmode.as_ref(),
85921            Self::Span(e) => e.inputmode.as_ref(),
85922            Self::Strong(e) => e.inputmode.as_ref(),
85923            Self::Sub(e) => e.inputmode.as_ref(),
85924            Self::Sup(e) => e.inputmode.as_ref(),
85925            Self::Time(e) => e.inputmode.as_ref(),
85926            Self::U(e) => e.inputmode.as_ref(),
85927            Self::Var(e) => e.inputmode.as_ref(),
85928            Self::Wbr(e) => e.inputmode.as_ref(),
85929            Self::Area(e) => e.inputmode.as_ref(),
85930            Self::Audio(e) => e.inputmode.as_ref(),
85931            Self::Img(e) => e.inputmode.as_ref(),
85932            Self::Map(e) => e.inputmode.as_ref(),
85933            Self::Track(e) => e.inputmode.as_ref(),
85934            Self::Video(e) => e.inputmode.as_ref(),
85935            Self::Embed(e) => e.inputmode.as_ref(),
85936            Self::Iframe(e) => e.inputmode.as_ref(),
85937            Self::Object(e) => e.inputmode.as_ref(),
85938            Self::Picture(e) => e.inputmode.as_ref(),
85939            Self::Portal(e) => e.inputmode.as_ref(),
85940            Self::Source(e) => e.inputmode.as_ref(),
85941            Self::Canvas(e) => e.inputmode.as_ref(),
85942            Self::Noscript(e) => e.inputmode.as_ref(),
85943            Self::Script(e) => e.inputmode.as_ref(),
85944            Self::Del(e) => e.inputmode.as_ref(),
85945            Self::Ins(e) => e.inputmode.as_ref(),
85946            Self::Caption(e) => e.inputmode.as_ref(),
85947            Self::Col(e) => e.inputmode.as_ref(),
85948            Self::Colgroup(e) => e.inputmode.as_ref(),
85949            Self::Table(e) => e.inputmode.as_ref(),
85950            Self::Tbody(e) => e.inputmode.as_ref(),
85951            Self::Td(e) => e.inputmode.as_ref(),
85952            Self::Tfoot(e) => e.inputmode.as_ref(),
85953            Self::Th(e) => e.inputmode.as_ref(),
85954            Self::Thead(e) => e.inputmode.as_ref(),
85955            Self::Tr(e) => e.inputmode.as_ref(),
85956            Self::Button(e) => e.inputmode.as_ref(),
85957            Self::Datalist(e) => e.inputmode.as_ref(),
85958            Self::Fieldset(e) => e.inputmode.as_ref(),
85959            Self::Form(e) => e.inputmode.as_ref(),
85960            Self::Input(e) => e.inputmode.as_ref(),
85961            Self::Label(e) => e.inputmode.as_ref(),
85962            Self::Legend(e) => e.inputmode.as_ref(),
85963            Self::Meter(e) => e.inputmode.as_ref(),
85964            Self::Optgroup(e) => e.inputmode.as_ref(),
85965            Self::Option(e) => e.inputmode.as_ref(),
85966            Self::Output(e) => e.inputmode.as_ref(),
85967            Self::Progress(e) => e.inputmode.as_ref(),
85968            Self::Select(e) => e.inputmode.as_ref(),
85969            Self::Textarea(e) => e.inputmode.as_ref(),
85970            Self::Details(e) => e.inputmode.as_ref(),
85971            Self::Dialog(e) => e.inputmode.as_ref(),
85972            Self::Summary(e) => e.inputmode.as_ref(),
85973            Self::Slot(e) => e.inputmode.as_ref(),
85974            Self::Template(e) => e.inputmode.as_ref(),
85975            Self::Acronym(e) => e.inputmode.as_ref(),
85976            Self::Applet(e) => e.inputmode.as_ref(),
85977            Self::Bgsound(e) => e.inputmode.as_ref(),
85978            Self::Big(e) => e.inputmode.as_ref(),
85979            Self::Blink(e) => e.inputmode.as_ref(),
85980            Self::Center(e) => e.inputmode.as_ref(),
85981            Self::Dir(e) => e.inputmode.as_ref(),
85982            Self::Font(e) => e.inputmode.as_ref(),
85983            Self::Frame(e) => e.inputmode.as_ref(),
85984            Self::Frameset(e) => e.inputmode.as_ref(),
85985            Self::Image(e) => e.inputmode.as_ref(),
85986            Self::Keygen(e) => e.inputmode.as_ref(),
85987            Self::Marquee(e) => e.inputmode.as_ref(),
85988            Self::Menuitem(e) => e.inputmode.as_ref(),
85989            Self::Nobr(e) => e.inputmode.as_ref(),
85990            Self::Noembed(e) => e.inputmode.as_ref(),
85991            Self::Noframes(e) => e.inputmode.as_ref(),
85992            Self::Param(e) => e.inputmode.as_ref(),
85993            Self::Plaintext(e) => e.inputmode.as_ref(),
85994            Self::Rb(e) => e.inputmode.as_ref(),
85995            Self::Rtc(e) => e.inputmode.as_ref(),
85996            Self::Spacer(e) => e.inputmode.as_ref(),
85997            Self::Strike(e) => e.inputmode.as_ref(),
85998            Self::Tt(e) => e.inputmode.as_ref(),
85999            Self::Xmp(e) => e.inputmode.as_ref(),
86000            Self::H1(e) => e.inputmode.as_ref(),
86001            Self::H2(e) => e.inputmode.as_ref(),
86002            Self::H3(e) => e.inputmode.as_ref(),
86003            Self::H4(e) => e.inputmode.as_ref(),
86004            Self::H5(e) => e.inputmode.as_ref(),
86005            Self::H6(e) => e.inputmode.as_ref(),
86006            Self::Unknown(e) => e.inputmode.as_ref(),
86007        }
86008    }
86009
86010    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
86011    ///   
86012    #[cfg(feature = "alloc")]
86013    pub fn is(&self) -> core::option::Option<&AttributeValueOwned> {
86014        match self {
86015            Self::Html(e) => e.is.as_ref(),
86016            Self::Base(e) => e.is.as_ref(),
86017            Self::Head(e) => e.is.as_ref(),
86018            Self::Link(e) => e.is.as_ref(),
86019            Self::Meta(e) => e.is.as_ref(),
86020            Self::Style(e) => e.is.as_ref(),
86021            Self::Title(e) => e.is.as_ref(),
86022            Self::Body(e) => e.is.as_ref(),
86023            Self::Address(e) => e.is.as_ref(),
86024            Self::Article(e) => e.is.as_ref(),
86025            Self::Aside(e) => e.is.as_ref(),
86026            Self::Footer(e) => e.is.as_ref(),
86027            Self::Header(e) => e.is.as_ref(),
86028            Self::Hgroup(e) => e.is.as_ref(),
86029            Self::Main(e) => e.is.as_ref(),
86030            Self::Nav(e) => e.is.as_ref(),
86031            Self::Section(e) => e.is.as_ref(),
86032            Self::Blockquote(e) => e.is.as_ref(),
86033            Self::Dd(e) => e.is.as_ref(),
86034            Self::Div(e) => e.is.as_ref(),
86035            Self::Dl(e) => e.is.as_ref(),
86036            Self::Dt(e) => e.is.as_ref(),
86037            Self::Figcaption(e) => e.is.as_ref(),
86038            Self::Figure(e) => e.is.as_ref(),
86039            Self::Hr(e) => e.is.as_ref(),
86040            Self::Li(e) => e.is.as_ref(),
86041            Self::Menu(e) => e.is.as_ref(),
86042            Self::Ol(e) => e.is.as_ref(),
86043            Self::P(e) => e.is.as_ref(),
86044            Self::Pre(e) => e.is.as_ref(),
86045            Self::Ul(e) => e.is.as_ref(),
86046            Self::A(e) => e.is.as_ref(),
86047            Self::Abbr(e) => e.is.as_ref(),
86048            Self::B(e) => e.is.as_ref(),
86049            Self::Bdi(e) => e.is.as_ref(),
86050            Self::Bdo(e) => e.is.as_ref(),
86051            Self::Br(e) => e.is.as_ref(),
86052            Self::Cite(e) => e.is.as_ref(),
86053            Self::Code(e) => e.is.as_ref(),
86054            Self::Data(e) => e.is.as_ref(),
86055            Self::Dfn(e) => e.is.as_ref(),
86056            Self::Em(e) => e.is.as_ref(),
86057            Self::I(e) => e.is.as_ref(),
86058            Self::Kbd(e) => e.is.as_ref(),
86059            Self::Mark(e) => e.is.as_ref(),
86060            Self::Q(e) => e.is.as_ref(),
86061            Self::Rp(e) => e.is.as_ref(),
86062            Self::Rt(e) => e.is.as_ref(),
86063            Self::Ruby(e) => e.is.as_ref(),
86064            Self::S(e) => e.is.as_ref(),
86065            Self::Samp(e) => e.is.as_ref(),
86066            Self::Small(e) => e.is.as_ref(),
86067            Self::Span(e) => e.is.as_ref(),
86068            Self::Strong(e) => e.is.as_ref(),
86069            Self::Sub(e) => e.is.as_ref(),
86070            Self::Sup(e) => e.is.as_ref(),
86071            Self::Time(e) => e.is.as_ref(),
86072            Self::U(e) => e.is.as_ref(),
86073            Self::Var(e) => e.is.as_ref(),
86074            Self::Wbr(e) => e.is.as_ref(),
86075            Self::Area(e) => e.is.as_ref(),
86076            Self::Audio(e) => e.is.as_ref(),
86077            Self::Img(e) => e.is.as_ref(),
86078            Self::Map(e) => e.is.as_ref(),
86079            Self::Track(e) => e.is.as_ref(),
86080            Self::Video(e) => e.is.as_ref(),
86081            Self::Embed(e) => e.is.as_ref(),
86082            Self::Iframe(e) => e.is.as_ref(),
86083            Self::Object(e) => e.is.as_ref(),
86084            Self::Picture(e) => e.is.as_ref(),
86085            Self::Portal(e) => e.is.as_ref(),
86086            Self::Source(e) => e.is.as_ref(),
86087            Self::Canvas(e) => e.is.as_ref(),
86088            Self::Noscript(e) => e.is.as_ref(),
86089            Self::Script(e) => e.is.as_ref(),
86090            Self::Del(e) => e.is.as_ref(),
86091            Self::Ins(e) => e.is.as_ref(),
86092            Self::Caption(e) => e.is.as_ref(),
86093            Self::Col(e) => e.is.as_ref(),
86094            Self::Colgroup(e) => e.is.as_ref(),
86095            Self::Table(e) => e.is.as_ref(),
86096            Self::Tbody(e) => e.is.as_ref(),
86097            Self::Td(e) => e.is.as_ref(),
86098            Self::Tfoot(e) => e.is.as_ref(),
86099            Self::Th(e) => e.is.as_ref(),
86100            Self::Thead(e) => e.is.as_ref(),
86101            Self::Tr(e) => e.is.as_ref(),
86102            Self::Button(e) => e.is.as_ref(),
86103            Self::Datalist(e) => e.is.as_ref(),
86104            Self::Fieldset(e) => e.is.as_ref(),
86105            Self::Form(e) => e.is.as_ref(),
86106            Self::Input(e) => e.is.as_ref(),
86107            Self::Label(e) => e.is.as_ref(),
86108            Self::Legend(e) => e.is.as_ref(),
86109            Self::Meter(e) => e.is.as_ref(),
86110            Self::Optgroup(e) => e.is.as_ref(),
86111            Self::Option(e) => e.is.as_ref(),
86112            Self::Output(e) => e.is.as_ref(),
86113            Self::Progress(e) => e.is.as_ref(),
86114            Self::Select(e) => e.is.as_ref(),
86115            Self::Textarea(e) => e.is.as_ref(),
86116            Self::Details(e) => e.is.as_ref(),
86117            Self::Dialog(e) => e.is.as_ref(),
86118            Self::Summary(e) => e.is.as_ref(),
86119            Self::Slot(e) => e.is.as_ref(),
86120            Self::Template(e) => e.is.as_ref(),
86121            Self::Acronym(e) => e.is.as_ref(),
86122            Self::Applet(e) => e.is.as_ref(),
86123            Self::Bgsound(e) => e.is.as_ref(),
86124            Self::Big(e) => e.is.as_ref(),
86125            Self::Blink(e) => e.is.as_ref(),
86126            Self::Center(e) => e.is.as_ref(),
86127            Self::Dir(e) => e.is.as_ref(),
86128            Self::Font(e) => e.is.as_ref(),
86129            Self::Frame(e) => e.is.as_ref(),
86130            Self::Frameset(e) => e.is.as_ref(),
86131            Self::Image(e) => e.is.as_ref(),
86132            Self::Keygen(e) => e.is.as_ref(),
86133            Self::Marquee(e) => e.is.as_ref(),
86134            Self::Menuitem(e) => e.is.as_ref(),
86135            Self::Nobr(e) => e.is.as_ref(),
86136            Self::Noembed(e) => e.is.as_ref(),
86137            Self::Noframes(e) => e.is.as_ref(),
86138            Self::Param(e) => e.is.as_ref(),
86139            Self::Plaintext(e) => e.is.as_ref(),
86140            Self::Rb(e) => e.is.as_ref(),
86141            Self::Rtc(e) => e.is.as_ref(),
86142            Self::Spacer(e) => e.is.as_ref(),
86143            Self::Strike(e) => e.is.as_ref(),
86144            Self::Tt(e) => e.is.as_ref(),
86145            Self::Xmp(e) => e.is.as_ref(),
86146            Self::H1(e) => e.is.as_ref(),
86147            Self::H2(e) => e.is.as_ref(),
86148            Self::H3(e) => e.is.as_ref(),
86149            Self::H4(e) => e.is.as_ref(),
86150            Self::H5(e) => e.is.as_ref(),
86151            Self::H6(e) => e.is.as_ref(),
86152            Self::Unknown(e) => e.is.as_ref(),
86153        }
86154    }
86155
86156    ///     <p>The unique, global identifier of an item.</p>
86157    ///   
86158    #[cfg(feature = "alloc")]
86159    pub fn itemid(&self) -> core::option::Option<&AttributeValueOwned> {
86160        match self {
86161            Self::Html(e) => e.itemid.as_ref(),
86162            Self::Base(e) => e.itemid.as_ref(),
86163            Self::Head(e) => e.itemid.as_ref(),
86164            Self::Link(e) => e.itemid.as_ref(),
86165            Self::Meta(e) => e.itemid.as_ref(),
86166            Self::Style(e) => e.itemid.as_ref(),
86167            Self::Title(e) => e.itemid.as_ref(),
86168            Self::Body(e) => e.itemid.as_ref(),
86169            Self::Address(e) => e.itemid.as_ref(),
86170            Self::Article(e) => e.itemid.as_ref(),
86171            Self::Aside(e) => e.itemid.as_ref(),
86172            Self::Footer(e) => e.itemid.as_ref(),
86173            Self::Header(e) => e.itemid.as_ref(),
86174            Self::Hgroup(e) => e.itemid.as_ref(),
86175            Self::Main(e) => e.itemid.as_ref(),
86176            Self::Nav(e) => e.itemid.as_ref(),
86177            Self::Section(e) => e.itemid.as_ref(),
86178            Self::Blockquote(e) => e.itemid.as_ref(),
86179            Self::Dd(e) => e.itemid.as_ref(),
86180            Self::Div(e) => e.itemid.as_ref(),
86181            Self::Dl(e) => e.itemid.as_ref(),
86182            Self::Dt(e) => e.itemid.as_ref(),
86183            Self::Figcaption(e) => e.itemid.as_ref(),
86184            Self::Figure(e) => e.itemid.as_ref(),
86185            Self::Hr(e) => e.itemid.as_ref(),
86186            Self::Li(e) => e.itemid.as_ref(),
86187            Self::Menu(e) => e.itemid.as_ref(),
86188            Self::Ol(e) => e.itemid.as_ref(),
86189            Self::P(e) => e.itemid.as_ref(),
86190            Self::Pre(e) => e.itemid.as_ref(),
86191            Self::Ul(e) => e.itemid.as_ref(),
86192            Self::A(e) => e.itemid.as_ref(),
86193            Self::Abbr(e) => e.itemid.as_ref(),
86194            Self::B(e) => e.itemid.as_ref(),
86195            Self::Bdi(e) => e.itemid.as_ref(),
86196            Self::Bdo(e) => e.itemid.as_ref(),
86197            Self::Br(e) => e.itemid.as_ref(),
86198            Self::Cite(e) => e.itemid.as_ref(),
86199            Self::Code(e) => e.itemid.as_ref(),
86200            Self::Data(e) => e.itemid.as_ref(),
86201            Self::Dfn(e) => e.itemid.as_ref(),
86202            Self::Em(e) => e.itemid.as_ref(),
86203            Self::I(e) => e.itemid.as_ref(),
86204            Self::Kbd(e) => e.itemid.as_ref(),
86205            Self::Mark(e) => e.itemid.as_ref(),
86206            Self::Q(e) => e.itemid.as_ref(),
86207            Self::Rp(e) => e.itemid.as_ref(),
86208            Self::Rt(e) => e.itemid.as_ref(),
86209            Self::Ruby(e) => e.itemid.as_ref(),
86210            Self::S(e) => e.itemid.as_ref(),
86211            Self::Samp(e) => e.itemid.as_ref(),
86212            Self::Small(e) => e.itemid.as_ref(),
86213            Self::Span(e) => e.itemid.as_ref(),
86214            Self::Strong(e) => e.itemid.as_ref(),
86215            Self::Sub(e) => e.itemid.as_ref(),
86216            Self::Sup(e) => e.itemid.as_ref(),
86217            Self::Time(e) => e.itemid.as_ref(),
86218            Self::U(e) => e.itemid.as_ref(),
86219            Self::Var(e) => e.itemid.as_ref(),
86220            Self::Wbr(e) => e.itemid.as_ref(),
86221            Self::Area(e) => e.itemid.as_ref(),
86222            Self::Audio(e) => e.itemid.as_ref(),
86223            Self::Img(e) => e.itemid.as_ref(),
86224            Self::Map(e) => e.itemid.as_ref(),
86225            Self::Track(e) => e.itemid.as_ref(),
86226            Self::Video(e) => e.itemid.as_ref(),
86227            Self::Embed(e) => e.itemid.as_ref(),
86228            Self::Iframe(e) => e.itemid.as_ref(),
86229            Self::Object(e) => e.itemid.as_ref(),
86230            Self::Picture(e) => e.itemid.as_ref(),
86231            Self::Portal(e) => e.itemid.as_ref(),
86232            Self::Source(e) => e.itemid.as_ref(),
86233            Self::Canvas(e) => e.itemid.as_ref(),
86234            Self::Noscript(e) => e.itemid.as_ref(),
86235            Self::Script(e) => e.itemid.as_ref(),
86236            Self::Del(e) => e.itemid.as_ref(),
86237            Self::Ins(e) => e.itemid.as_ref(),
86238            Self::Caption(e) => e.itemid.as_ref(),
86239            Self::Col(e) => e.itemid.as_ref(),
86240            Self::Colgroup(e) => e.itemid.as_ref(),
86241            Self::Table(e) => e.itemid.as_ref(),
86242            Self::Tbody(e) => e.itemid.as_ref(),
86243            Self::Td(e) => e.itemid.as_ref(),
86244            Self::Tfoot(e) => e.itemid.as_ref(),
86245            Self::Th(e) => e.itemid.as_ref(),
86246            Self::Thead(e) => e.itemid.as_ref(),
86247            Self::Tr(e) => e.itemid.as_ref(),
86248            Self::Button(e) => e.itemid.as_ref(),
86249            Self::Datalist(e) => e.itemid.as_ref(),
86250            Self::Fieldset(e) => e.itemid.as_ref(),
86251            Self::Form(e) => e.itemid.as_ref(),
86252            Self::Input(e) => e.itemid.as_ref(),
86253            Self::Label(e) => e.itemid.as_ref(),
86254            Self::Legend(e) => e.itemid.as_ref(),
86255            Self::Meter(e) => e.itemid.as_ref(),
86256            Self::Optgroup(e) => e.itemid.as_ref(),
86257            Self::Option(e) => e.itemid.as_ref(),
86258            Self::Output(e) => e.itemid.as_ref(),
86259            Self::Progress(e) => e.itemid.as_ref(),
86260            Self::Select(e) => e.itemid.as_ref(),
86261            Self::Textarea(e) => e.itemid.as_ref(),
86262            Self::Details(e) => e.itemid.as_ref(),
86263            Self::Dialog(e) => e.itemid.as_ref(),
86264            Self::Summary(e) => e.itemid.as_ref(),
86265            Self::Slot(e) => e.itemid.as_ref(),
86266            Self::Template(e) => e.itemid.as_ref(),
86267            Self::Acronym(e) => e.itemid.as_ref(),
86268            Self::Applet(e) => e.itemid.as_ref(),
86269            Self::Bgsound(e) => e.itemid.as_ref(),
86270            Self::Big(e) => e.itemid.as_ref(),
86271            Self::Blink(e) => e.itemid.as_ref(),
86272            Self::Center(e) => e.itemid.as_ref(),
86273            Self::Dir(e) => e.itemid.as_ref(),
86274            Self::Font(e) => e.itemid.as_ref(),
86275            Self::Frame(e) => e.itemid.as_ref(),
86276            Self::Frameset(e) => e.itemid.as_ref(),
86277            Self::Image(e) => e.itemid.as_ref(),
86278            Self::Keygen(e) => e.itemid.as_ref(),
86279            Self::Marquee(e) => e.itemid.as_ref(),
86280            Self::Menuitem(e) => e.itemid.as_ref(),
86281            Self::Nobr(e) => e.itemid.as_ref(),
86282            Self::Noembed(e) => e.itemid.as_ref(),
86283            Self::Noframes(e) => e.itemid.as_ref(),
86284            Self::Param(e) => e.itemid.as_ref(),
86285            Self::Plaintext(e) => e.itemid.as_ref(),
86286            Self::Rb(e) => e.itemid.as_ref(),
86287            Self::Rtc(e) => e.itemid.as_ref(),
86288            Self::Spacer(e) => e.itemid.as_ref(),
86289            Self::Strike(e) => e.itemid.as_ref(),
86290            Self::Tt(e) => e.itemid.as_ref(),
86291            Self::Xmp(e) => e.itemid.as_ref(),
86292            Self::H1(e) => e.itemid.as_ref(),
86293            Self::H2(e) => e.itemid.as_ref(),
86294            Self::H3(e) => e.itemid.as_ref(),
86295            Self::H4(e) => e.itemid.as_ref(),
86296            Self::H5(e) => e.itemid.as_ref(),
86297            Self::H6(e) => e.itemid.as_ref(),
86298            Self::Unknown(e) => e.itemid.as_ref(),
86299        }
86300    }
86301
86302    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
86303    ///   
86304    #[cfg(feature = "alloc")]
86305    pub fn itemprop(&self) -> core::option::Option<&AttributeValueOwned> {
86306        match self {
86307            Self::Html(e) => e.itemprop.as_ref(),
86308            Self::Base(e) => e.itemprop.as_ref(),
86309            Self::Head(e) => e.itemprop.as_ref(),
86310            Self::Link(e) => e.itemprop.as_ref(),
86311            Self::Meta(e) => e.itemprop.as_ref(),
86312            Self::Style(e) => e.itemprop.as_ref(),
86313            Self::Title(e) => e.itemprop.as_ref(),
86314            Self::Body(e) => e.itemprop.as_ref(),
86315            Self::Address(e) => e.itemprop.as_ref(),
86316            Self::Article(e) => e.itemprop.as_ref(),
86317            Self::Aside(e) => e.itemprop.as_ref(),
86318            Self::Footer(e) => e.itemprop.as_ref(),
86319            Self::Header(e) => e.itemprop.as_ref(),
86320            Self::Hgroup(e) => e.itemprop.as_ref(),
86321            Self::Main(e) => e.itemprop.as_ref(),
86322            Self::Nav(e) => e.itemprop.as_ref(),
86323            Self::Section(e) => e.itemprop.as_ref(),
86324            Self::Blockquote(e) => e.itemprop.as_ref(),
86325            Self::Dd(e) => e.itemprop.as_ref(),
86326            Self::Div(e) => e.itemprop.as_ref(),
86327            Self::Dl(e) => e.itemprop.as_ref(),
86328            Self::Dt(e) => e.itemprop.as_ref(),
86329            Self::Figcaption(e) => e.itemprop.as_ref(),
86330            Self::Figure(e) => e.itemprop.as_ref(),
86331            Self::Hr(e) => e.itemprop.as_ref(),
86332            Self::Li(e) => e.itemprop.as_ref(),
86333            Self::Menu(e) => e.itemprop.as_ref(),
86334            Self::Ol(e) => e.itemprop.as_ref(),
86335            Self::P(e) => e.itemprop.as_ref(),
86336            Self::Pre(e) => e.itemprop.as_ref(),
86337            Self::Ul(e) => e.itemprop.as_ref(),
86338            Self::A(e) => e.itemprop.as_ref(),
86339            Self::Abbr(e) => e.itemprop.as_ref(),
86340            Self::B(e) => e.itemprop.as_ref(),
86341            Self::Bdi(e) => e.itemprop.as_ref(),
86342            Self::Bdo(e) => e.itemprop.as_ref(),
86343            Self::Br(e) => e.itemprop.as_ref(),
86344            Self::Cite(e) => e.itemprop.as_ref(),
86345            Self::Code(e) => e.itemprop.as_ref(),
86346            Self::Data(e) => e.itemprop.as_ref(),
86347            Self::Dfn(e) => e.itemprop.as_ref(),
86348            Self::Em(e) => e.itemprop.as_ref(),
86349            Self::I(e) => e.itemprop.as_ref(),
86350            Self::Kbd(e) => e.itemprop.as_ref(),
86351            Self::Mark(e) => e.itemprop.as_ref(),
86352            Self::Q(e) => e.itemprop.as_ref(),
86353            Self::Rp(e) => e.itemprop.as_ref(),
86354            Self::Rt(e) => e.itemprop.as_ref(),
86355            Self::Ruby(e) => e.itemprop.as_ref(),
86356            Self::S(e) => e.itemprop.as_ref(),
86357            Self::Samp(e) => e.itemprop.as_ref(),
86358            Self::Small(e) => e.itemprop.as_ref(),
86359            Self::Span(e) => e.itemprop.as_ref(),
86360            Self::Strong(e) => e.itemprop.as_ref(),
86361            Self::Sub(e) => e.itemprop.as_ref(),
86362            Self::Sup(e) => e.itemprop.as_ref(),
86363            Self::Time(e) => e.itemprop.as_ref(),
86364            Self::U(e) => e.itemprop.as_ref(),
86365            Self::Var(e) => e.itemprop.as_ref(),
86366            Self::Wbr(e) => e.itemprop.as_ref(),
86367            Self::Area(e) => e.itemprop.as_ref(),
86368            Self::Audio(e) => e.itemprop.as_ref(),
86369            Self::Img(e) => e.itemprop.as_ref(),
86370            Self::Map(e) => e.itemprop.as_ref(),
86371            Self::Track(e) => e.itemprop.as_ref(),
86372            Self::Video(e) => e.itemprop.as_ref(),
86373            Self::Embed(e) => e.itemprop.as_ref(),
86374            Self::Iframe(e) => e.itemprop.as_ref(),
86375            Self::Object(e) => e.itemprop.as_ref(),
86376            Self::Picture(e) => e.itemprop.as_ref(),
86377            Self::Portal(e) => e.itemprop.as_ref(),
86378            Self::Source(e) => e.itemprop.as_ref(),
86379            Self::Canvas(e) => e.itemprop.as_ref(),
86380            Self::Noscript(e) => e.itemprop.as_ref(),
86381            Self::Script(e) => e.itemprop.as_ref(),
86382            Self::Del(e) => e.itemprop.as_ref(),
86383            Self::Ins(e) => e.itemprop.as_ref(),
86384            Self::Caption(e) => e.itemprop.as_ref(),
86385            Self::Col(e) => e.itemprop.as_ref(),
86386            Self::Colgroup(e) => e.itemprop.as_ref(),
86387            Self::Table(e) => e.itemprop.as_ref(),
86388            Self::Tbody(e) => e.itemprop.as_ref(),
86389            Self::Td(e) => e.itemprop.as_ref(),
86390            Self::Tfoot(e) => e.itemprop.as_ref(),
86391            Self::Th(e) => e.itemprop.as_ref(),
86392            Self::Thead(e) => e.itemprop.as_ref(),
86393            Self::Tr(e) => e.itemprop.as_ref(),
86394            Self::Button(e) => e.itemprop.as_ref(),
86395            Self::Datalist(e) => e.itemprop.as_ref(),
86396            Self::Fieldset(e) => e.itemprop.as_ref(),
86397            Self::Form(e) => e.itemprop.as_ref(),
86398            Self::Input(e) => e.itemprop.as_ref(),
86399            Self::Label(e) => e.itemprop.as_ref(),
86400            Self::Legend(e) => e.itemprop.as_ref(),
86401            Self::Meter(e) => e.itemprop.as_ref(),
86402            Self::Optgroup(e) => e.itemprop.as_ref(),
86403            Self::Option(e) => e.itemprop.as_ref(),
86404            Self::Output(e) => e.itemprop.as_ref(),
86405            Self::Progress(e) => e.itemprop.as_ref(),
86406            Self::Select(e) => e.itemprop.as_ref(),
86407            Self::Textarea(e) => e.itemprop.as_ref(),
86408            Self::Details(e) => e.itemprop.as_ref(),
86409            Self::Dialog(e) => e.itemprop.as_ref(),
86410            Self::Summary(e) => e.itemprop.as_ref(),
86411            Self::Slot(e) => e.itemprop.as_ref(),
86412            Self::Template(e) => e.itemprop.as_ref(),
86413            Self::Acronym(e) => e.itemprop.as_ref(),
86414            Self::Applet(e) => e.itemprop.as_ref(),
86415            Self::Bgsound(e) => e.itemprop.as_ref(),
86416            Self::Big(e) => e.itemprop.as_ref(),
86417            Self::Blink(e) => e.itemprop.as_ref(),
86418            Self::Center(e) => e.itemprop.as_ref(),
86419            Self::Dir(e) => e.itemprop.as_ref(),
86420            Self::Font(e) => e.itemprop.as_ref(),
86421            Self::Frame(e) => e.itemprop.as_ref(),
86422            Self::Frameset(e) => e.itemprop.as_ref(),
86423            Self::Image(e) => e.itemprop.as_ref(),
86424            Self::Keygen(e) => e.itemprop.as_ref(),
86425            Self::Marquee(e) => e.itemprop.as_ref(),
86426            Self::Menuitem(e) => e.itemprop.as_ref(),
86427            Self::Nobr(e) => e.itemprop.as_ref(),
86428            Self::Noembed(e) => e.itemprop.as_ref(),
86429            Self::Noframes(e) => e.itemprop.as_ref(),
86430            Self::Param(e) => e.itemprop.as_ref(),
86431            Self::Plaintext(e) => e.itemprop.as_ref(),
86432            Self::Rb(e) => e.itemprop.as_ref(),
86433            Self::Rtc(e) => e.itemprop.as_ref(),
86434            Self::Spacer(e) => e.itemprop.as_ref(),
86435            Self::Strike(e) => e.itemprop.as_ref(),
86436            Self::Tt(e) => e.itemprop.as_ref(),
86437            Self::Xmp(e) => e.itemprop.as_ref(),
86438            Self::H1(e) => e.itemprop.as_ref(),
86439            Self::H2(e) => e.itemprop.as_ref(),
86440            Self::H3(e) => e.itemprop.as_ref(),
86441            Self::H4(e) => e.itemprop.as_ref(),
86442            Self::H5(e) => e.itemprop.as_ref(),
86443            Self::H6(e) => e.itemprop.as_ref(),
86444            Self::Unknown(e) => e.itemprop.as_ref(),
86445        }
86446    }
86447
86448    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
86449    ///   
86450    #[cfg(feature = "alloc")]
86451    pub fn itemref(&self) -> core::option::Option<&AttributeValueOwned> {
86452        match self {
86453            Self::Html(e) => e.itemref.as_ref(),
86454            Self::Base(e) => e.itemref.as_ref(),
86455            Self::Head(e) => e.itemref.as_ref(),
86456            Self::Link(e) => e.itemref.as_ref(),
86457            Self::Meta(e) => e.itemref.as_ref(),
86458            Self::Style(e) => e.itemref.as_ref(),
86459            Self::Title(e) => e.itemref.as_ref(),
86460            Self::Body(e) => e.itemref.as_ref(),
86461            Self::Address(e) => e.itemref.as_ref(),
86462            Self::Article(e) => e.itemref.as_ref(),
86463            Self::Aside(e) => e.itemref.as_ref(),
86464            Self::Footer(e) => e.itemref.as_ref(),
86465            Self::Header(e) => e.itemref.as_ref(),
86466            Self::Hgroup(e) => e.itemref.as_ref(),
86467            Self::Main(e) => e.itemref.as_ref(),
86468            Self::Nav(e) => e.itemref.as_ref(),
86469            Self::Section(e) => e.itemref.as_ref(),
86470            Self::Blockquote(e) => e.itemref.as_ref(),
86471            Self::Dd(e) => e.itemref.as_ref(),
86472            Self::Div(e) => e.itemref.as_ref(),
86473            Self::Dl(e) => e.itemref.as_ref(),
86474            Self::Dt(e) => e.itemref.as_ref(),
86475            Self::Figcaption(e) => e.itemref.as_ref(),
86476            Self::Figure(e) => e.itemref.as_ref(),
86477            Self::Hr(e) => e.itemref.as_ref(),
86478            Self::Li(e) => e.itemref.as_ref(),
86479            Self::Menu(e) => e.itemref.as_ref(),
86480            Self::Ol(e) => e.itemref.as_ref(),
86481            Self::P(e) => e.itemref.as_ref(),
86482            Self::Pre(e) => e.itemref.as_ref(),
86483            Self::Ul(e) => e.itemref.as_ref(),
86484            Self::A(e) => e.itemref.as_ref(),
86485            Self::Abbr(e) => e.itemref.as_ref(),
86486            Self::B(e) => e.itemref.as_ref(),
86487            Self::Bdi(e) => e.itemref.as_ref(),
86488            Self::Bdo(e) => e.itemref.as_ref(),
86489            Self::Br(e) => e.itemref.as_ref(),
86490            Self::Cite(e) => e.itemref.as_ref(),
86491            Self::Code(e) => e.itemref.as_ref(),
86492            Self::Data(e) => e.itemref.as_ref(),
86493            Self::Dfn(e) => e.itemref.as_ref(),
86494            Self::Em(e) => e.itemref.as_ref(),
86495            Self::I(e) => e.itemref.as_ref(),
86496            Self::Kbd(e) => e.itemref.as_ref(),
86497            Self::Mark(e) => e.itemref.as_ref(),
86498            Self::Q(e) => e.itemref.as_ref(),
86499            Self::Rp(e) => e.itemref.as_ref(),
86500            Self::Rt(e) => e.itemref.as_ref(),
86501            Self::Ruby(e) => e.itemref.as_ref(),
86502            Self::S(e) => e.itemref.as_ref(),
86503            Self::Samp(e) => e.itemref.as_ref(),
86504            Self::Small(e) => e.itemref.as_ref(),
86505            Self::Span(e) => e.itemref.as_ref(),
86506            Self::Strong(e) => e.itemref.as_ref(),
86507            Self::Sub(e) => e.itemref.as_ref(),
86508            Self::Sup(e) => e.itemref.as_ref(),
86509            Self::Time(e) => e.itemref.as_ref(),
86510            Self::U(e) => e.itemref.as_ref(),
86511            Self::Var(e) => e.itemref.as_ref(),
86512            Self::Wbr(e) => e.itemref.as_ref(),
86513            Self::Area(e) => e.itemref.as_ref(),
86514            Self::Audio(e) => e.itemref.as_ref(),
86515            Self::Img(e) => e.itemref.as_ref(),
86516            Self::Map(e) => e.itemref.as_ref(),
86517            Self::Track(e) => e.itemref.as_ref(),
86518            Self::Video(e) => e.itemref.as_ref(),
86519            Self::Embed(e) => e.itemref.as_ref(),
86520            Self::Iframe(e) => e.itemref.as_ref(),
86521            Self::Object(e) => e.itemref.as_ref(),
86522            Self::Picture(e) => e.itemref.as_ref(),
86523            Self::Portal(e) => e.itemref.as_ref(),
86524            Self::Source(e) => e.itemref.as_ref(),
86525            Self::Canvas(e) => e.itemref.as_ref(),
86526            Self::Noscript(e) => e.itemref.as_ref(),
86527            Self::Script(e) => e.itemref.as_ref(),
86528            Self::Del(e) => e.itemref.as_ref(),
86529            Self::Ins(e) => e.itemref.as_ref(),
86530            Self::Caption(e) => e.itemref.as_ref(),
86531            Self::Col(e) => e.itemref.as_ref(),
86532            Self::Colgroup(e) => e.itemref.as_ref(),
86533            Self::Table(e) => e.itemref.as_ref(),
86534            Self::Tbody(e) => e.itemref.as_ref(),
86535            Self::Td(e) => e.itemref.as_ref(),
86536            Self::Tfoot(e) => e.itemref.as_ref(),
86537            Self::Th(e) => e.itemref.as_ref(),
86538            Self::Thead(e) => e.itemref.as_ref(),
86539            Self::Tr(e) => e.itemref.as_ref(),
86540            Self::Button(e) => e.itemref.as_ref(),
86541            Self::Datalist(e) => e.itemref.as_ref(),
86542            Self::Fieldset(e) => e.itemref.as_ref(),
86543            Self::Form(e) => e.itemref.as_ref(),
86544            Self::Input(e) => e.itemref.as_ref(),
86545            Self::Label(e) => e.itemref.as_ref(),
86546            Self::Legend(e) => e.itemref.as_ref(),
86547            Self::Meter(e) => e.itemref.as_ref(),
86548            Self::Optgroup(e) => e.itemref.as_ref(),
86549            Self::Option(e) => e.itemref.as_ref(),
86550            Self::Output(e) => e.itemref.as_ref(),
86551            Self::Progress(e) => e.itemref.as_ref(),
86552            Self::Select(e) => e.itemref.as_ref(),
86553            Self::Textarea(e) => e.itemref.as_ref(),
86554            Self::Details(e) => e.itemref.as_ref(),
86555            Self::Dialog(e) => e.itemref.as_ref(),
86556            Self::Summary(e) => e.itemref.as_ref(),
86557            Self::Slot(e) => e.itemref.as_ref(),
86558            Self::Template(e) => e.itemref.as_ref(),
86559            Self::Acronym(e) => e.itemref.as_ref(),
86560            Self::Applet(e) => e.itemref.as_ref(),
86561            Self::Bgsound(e) => e.itemref.as_ref(),
86562            Self::Big(e) => e.itemref.as_ref(),
86563            Self::Blink(e) => e.itemref.as_ref(),
86564            Self::Center(e) => e.itemref.as_ref(),
86565            Self::Dir(e) => e.itemref.as_ref(),
86566            Self::Font(e) => e.itemref.as_ref(),
86567            Self::Frame(e) => e.itemref.as_ref(),
86568            Self::Frameset(e) => e.itemref.as_ref(),
86569            Self::Image(e) => e.itemref.as_ref(),
86570            Self::Keygen(e) => e.itemref.as_ref(),
86571            Self::Marquee(e) => e.itemref.as_ref(),
86572            Self::Menuitem(e) => e.itemref.as_ref(),
86573            Self::Nobr(e) => e.itemref.as_ref(),
86574            Self::Noembed(e) => e.itemref.as_ref(),
86575            Self::Noframes(e) => e.itemref.as_ref(),
86576            Self::Param(e) => e.itemref.as_ref(),
86577            Self::Plaintext(e) => e.itemref.as_ref(),
86578            Self::Rb(e) => e.itemref.as_ref(),
86579            Self::Rtc(e) => e.itemref.as_ref(),
86580            Self::Spacer(e) => e.itemref.as_ref(),
86581            Self::Strike(e) => e.itemref.as_ref(),
86582            Self::Tt(e) => e.itemref.as_ref(),
86583            Self::Xmp(e) => e.itemref.as_ref(),
86584            Self::H1(e) => e.itemref.as_ref(),
86585            Self::H2(e) => e.itemref.as_ref(),
86586            Self::H3(e) => e.itemref.as_ref(),
86587            Self::H4(e) => e.itemref.as_ref(),
86588            Self::H5(e) => e.itemref.as_ref(),
86589            Self::H6(e) => e.itemref.as_ref(),
86590            Self::Unknown(e) => e.itemref.as_ref(),
86591        }
86592    }
86593
86594    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
86595    ///   
86596    #[cfg(feature = "alloc")]
86597    pub fn itemscope(&self) -> core::option::Option<&AttributeValueOwned> {
86598        match self {
86599            Self::Html(e) => e.itemscope.as_ref(),
86600            Self::Base(e) => e.itemscope.as_ref(),
86601            Self::Head(e) => e.itemscope.as_ref(),
86602            Self::Link(e) => e.itemscope.as_ref(),
86603            Self::Meta(e) => e.itemscope.as_ref(),
86604            Self::Style(e) => e.itemscope.as_ref(),
86605            Self::Title(e) => e.itemscope.as_ref(),
86606            Self::Body(e) => e.itemscope.as_ref(),
86607            Self::Address(e) => e.itemscope.as_ref(),
86608            Self::Article(e) => e.itemscope.as_ref(),
86609            Self::Aside(e) => e.itemscope.as_ref(),
86610            Self::Footer(e) => e.itemscope.as_ref(),
86611            Self::Header(e) => e.itemscope.as_ref(),
86612            Self::Hgroup(e) => e.itemscope.as_ref(),
86613            Self::Main(e) => e.itemscope.as_ref(),
86614            Self::Nav(e) => e.itemscope.as_ref(),
86615            Self::Section(e) => e.itemscope.as_ref(),
86616            Self::Blockquote(e) => e.itemscope.as_ref(),
86617            Self::Dd(e) => e.itemscope.as_ref(),
86618            Self::Div(e) => e.itemscope.as_ref(),
86619            Self::Dl(e) => e.itemscope.as_ref(),
86620            Self::Dt(e) => e.itemscope.as_ref(),
86621            Self::Figcaption(e) => e.itemscope.as_ref(),
86622            Self::Figure(e) => e.itemscope.as_ref(),
86623            Self::Hr(e) => e.itemscope.as_ref(),
86624            Self::Li(e) => e.itemscope.as_ref(),
86625            Self::Menu(e) => e.itemscope.as_ref(),
86626            Self::Ol(e) => e.itemscope.as_ref(),
86627            Self::P(e) => e.itemscope.as_ref(),
86628            Self::Pre(e) => e.itemscope.as_ref(),
86629            Self::Ul(e) => e.itemscope.as_ref(),
86630            Self::A(e) => e.itemscope.as_ref(),
86631            Self::Abbr(e) => e.itemscope.as_ref(),
86632            Self::B(e) => e.itemscope.as_ref(),
86633            Self::Bdi(e) => e.itemscope.as_ref(),
86634            Self::Bdo(e) => e.itemscope.as_ref(),
86635            Self::Br(e) => e.itemscope.as_ref(),
86636            Self::Cite(e) => e.itemscope.as_ref(),
86637            Self::Code(e) => e.itemscope.as_ref(),
86638            Self::Data(e) => e.itemscope.as_ref(),
86639            Self::Dfn(e) => e.itemscope.as_ref(),
86640            Self::Em(e) => e.itemscope.as_ref(),
86641            Self::I(e) => e.itemscope.as_ref(),
86642            Self::Kbd(e) => e.itemscope.as_ref(),
86643            Self::Mark(e) => e.itemscope.as_ref(),
86644            Self::Q(e) => e.itemscope.as_ref(),
86645            Self::Rp(e) => e.itemscope.as_ref(),
86646            Self::Rt(e) => e.itemscope.as_ref(),
86647            Self::Ruby(e) => e.itemscope.as_ref(),
86648            Self::S(e) => e.itemscope.as_ref(),
86649            Self::Samp(e) => e.itemscope.as_ref(),
86650            Self::Small(e) => e.itemscope.as_ref(),
86651            Self::Span(e) => e.itemscope.as_ref(),
86652            Self::Strong(e) => e.itemscope.as_ref(),
86653            Self::Sub(e) => e.itemscope.as_ref(),
86654            Self::Sup(e) => e.itemscope.as_ref(),
86655            Self::Time(e) => e.itemscope.as_ref(),
86656            Self::U(e) => e.itemscope.as_ref(),
86657            Self::Var(e) => e.itemscope.as_ref(),
86658            Self::Wbr(e) => e.itemscope.as_ref(),
86659            Self::Area(e) => e.itemscope.as_ref(),
86660            Self::Audio(e) => e.itemscope.as_ref(),
86661            Self::Img(e) => e.itemscope.as_ref(),
86662            Self::Map(e) => e.itemscope.as_ref(),
86663            Self::Track(e) => e.itemscope.as_ref(),
86664            Self::Video(e) => e.itemscope.as_ref(),
86665            Self::Embed(e) => e.itemscope.as_ref(),
86666            Self::Iframe(e) => e.itemscope.as_ref(),
86667            Self::Object(e) => e.itemscope.as_ref(),
86668            Self::Picture(e) => e.itemscope.as_ref(),
86669            Self::Portal(e) => e.itemscope.as_ref(),
86670            Self::Source(e) => e.itemscope.as_ref(),
86671            Self::Canvas(e) => e.itemscope.as_ref(),
86672            Self::Noscript(e) => e.itemscope.as_ref(),
86673            Self::Script(e) => e.itemscope.as_ref(),
86674            Self::Del(e) => e.itemscope.as_ref(),
86675            Self::Ins(e) => e.itemscope.as_ref(),
86676            Self::Caption(e) => e.itemscope.as_ref(),
86677            Self::Col(e) => e.itemscope.as_ref(),
86678            Self::Colgroup(e) => e.itemscope.as_ref(),
86679            Self::Table(e) => e.itemscope.as_ref(),
86680            Self::Tbody(e) => e.itemscope.as_ref(),
86681            Self::Td(e) => e.itemscope.as_ref(),
86682            Self::Tfoot(e) => e.itemscope.as_ref(),
86683            Self::Th(e) => e.itemscope.as_ref(),
86684            Self::Thead(e) => e.itemscope.as_ref(),
86685            Self::Tr(e) => e.itemscope.as_ref(),
86686            Self::Button(e) => e.itemscope.as_ref(),
86687            Self::Datalist(e) => e.itemscope.as_ref(),
86688            Self::Fieldset(e) => e.itemscope.as_ref(),
86689            Self::Form(e) => e.itemscope.as_ref(),
86690            Self::Input(e) => e.itemscope.as_ref(),
86691            Self::Label(e) => e.itemscope.as_ref(),
86692            Self::Legend(e) => e.itemscope.as_ref(),
86693            Self::Meter(e) => e.itemscope.as_ref(),
86694            Self::Optgroup(e) => e.itemscope.as_ref(),
86695            Self::Option(e) => e.itemscope.as_ref(),
86696            Self::Output(e) => e.itemscope.as_ref(),
86697            Self::Progress(e) => e.itemscope.as_ref(),
86698            Self::Select(e) => e.itemscope.as_ref(),
86699            Self::Textarea(e) => e.itemscope.as_ref(),
86700            Self::Details(e) => e.itemscope.as_ref(),
86701            Self::Dialog(e) => e.itemscope.as_ref(),
86702            Self::Summary(e) => e.itemscope.as_ref(),
86703            Self::Slot(e) => e.itemscope.as_ref(),
86704            Self::Template(e) => e.itemscope.as_ref(),
86705            Self::Acronym(e) => e.itemscope.as_ref(),
86706            Self::Applet(e) => e.itemscope.as_ref(),
86707            Self::Bgsound(e) => e.itemscope.as_ref(),
86708            Self::Big(e) => e.itemscope.as_ref(),
86709            Self::Blink(e) => e.itemscope.as_ref(),
86710            Self::Center(e) => e.itemscope.as_ref(),
86711            Self::Dir(e) => e.itemscope.as_ref(),
86712            Self::Font(e) => e.itemscope.as_ref(),
86713            Self::Frame(e) => e.itemscope.as_ref(),
86714            Self::Frameset(e) => e.itemscope.as_ref(),
86715            Self::Image(e) => e.itemscope.as_ref(),
86716            Self::Keygen(e) => e.itemscope.as_ref(),
86717            Self::Marquee(e) => e.itemscope.as_ref(),
86718            Self::Menuitem(e) => e.itemscope.as_ref(),
86719            Self::Nobr(e) => e.itemscope.as_ref(),
86720            Self::Noembed(e) => e.itemscope.as_ref(),
86721            Self::Noframes(e) => e.itemscope.as_ref(),
86722            Self::Param(e) => e.itemscope.as_ref(),
86723            Self::Plaintext(e) => e.itemscope.as_ref(),
86724            Self::Rb(e) => e.itemscope.as_ref(),
86725            Self::Rtc(e) => e.itemscope.as_ref(),
86726            Self::Spacer(e) => e.itemscope.as_ref(),
86727            Self::Strike(e) => e.itemscope.as_ref(),
86728            Self::Tt(e) => e.itemscope.as_ref(),
86729            Self::Xmp(e) => e.itemscope.as_ref(),
86730            Self::H1(e) => e.itemscope.as_ref(),
86731            Self::H2(e) => e.itemscope.as_ref(),
86732            Self::H3(e) => e.itemscope.as_ref(),
86733            Self::H4(e) => e.itemscope.as_ref(),
86734            Self::H5(e) => e.itemscope.as_ref(),
86735            Self::H6(e) => e.itemscope.as_ref(),
86736            Self::Unknown(e) => e.itemscope.as_ref(),
86737        }
86738    }
86739
86740    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
86741    ///   
86742    #[cfg(feature = "alloc")]
86743    pub fn itemtype(&self) -> core::option::Option<&AttributeValueOwned> {
86744        match self {
86745            Self::Html(e) => e.itemtype.as_ref(),
86746            Self::Base(e) => e.itemtype.as_ref(),
86747            Self::Head(e) => e.itemtype.as_ref(),
86748            Self::Link(e) => e.itemtype.as_ref(),
86749            Self::Meta(e) => e.itemtype.as_ref(),
86750            Self::Style(e) => e.itemtype.as_ref(),
86751            Self::Title(e) => e.itemtype.as_ref(),
86752            Self::Body(e) => e.itemtype.as_ref(),
86753            Self::Address(e) => e.itemtype.as_ref(),
86754            Self::Article(e) => e.itemtype.as_ref(),
86755            Self::Aside(e) => e.itemtype.as_ref(),
86756            Self::Footer(e) => e.itemtype.as_ref(),
86757            Self::Header(e) => e.itemtype.as_ref(),
86758            Self::Hgroup(e) => e.itemtype.as_ref(),
86759            Self::Main(e) => e.itemtype.as_ref(),
86760            Self::Nav(e) => e.itemtype.as_ref(),
86761            Self::Section(e) => e.itemtype.as_ref(),
86762            Self::Blockquote(e) => e.itemtype.as_ref(),
86763            Self::Dd(e) => e.itemtype.as_ref(),
86764            Self::Div(e) => e.itemtype.as_ref(),
86765            Self::Dl(e) => e.itemtype.as_ref(),
86766            Self::Dt(e) => e.itemtype.as_ref(),
86767            Self::Figcaption(e) => e.itemtype.as_ref(),
86768            Self::Figure(e) => e.itemtype.as_ref(),
86769            Self::Hr(e) => e.itemtype.as_ref(),
86770            Self::Li(e) => e.itemtype.as_ref(),
86771            Self::Menu(e) => e.itemtype.as_ref(),
86772            Self::Ol(e) => e.itemtype.as_ref(),
86773            Self::P(e) => e.itemtype.as_ref(),
86774            Self::Pre(e) => e.itemtype.as_ref(),
86775            Self::Ul(e) => e.itemtype.as_ref(),
86776            Self::A(e) => e.itemtype.as_ref(),
86777            Self::Abbr(e) => e.itemtype.as_ref(),
86778            Self::B(e) => e.itemtype.as_ref(),
86779            Self::Bdi(e) => e.itemtype.as_ref(),
86780            Self::Bdo(e) => e.itemtype.as_ref(),
86781            Self::Br(e) => e.itemtype.as_ref(),
86782            Self::Cite(e) => e.itemtype.as_ref(),
86783            Self::Code(e) => e.itemtype.as_ref(),
86784            Self::Data(e) => e.itemtype.as_ref(),
86785            Self::Dfn(e) => e.itemtype.as_ref(),
86786            Self::Em(e) => e.itemtype.as_ref(),
86787            Self::I(e) => e.itemtype.as_ref(),
86788            Self::Kbd(e) => e.itemtype.as_ref(),
86789            Self::Mark(e) => e.itemtype.as_ref(),
86790            Self::Q(e) => e.itemtype.as_ref(),
86791            Self::Rp(e) => e.itemtype.as_ref(),
86792            Self::Rt(e) => e.itemtype.as_ref(),
86793            Self::Ruby(e) => e.itemtype.as_ref(),
86794            Self::S(e) => e.itemtype.as_ref(),
86795            Self::Samp(e) => e.itemtype.as_ref(),
86796            Self::Small(e) => e.itemtype.as_ref(),
86797            Self::Span(e) => e.itemtype.as_ref(),
86798            Self::Strong(e) => e.itemtype.as_ref(),
86799            Self::Sub(e) => e.itemtype.as_ref(),
86800            Self::Sup(e) => e.itemtype.as_ref(),
86801            Self::Time(e) => e.itemtype.as_ref(),
86802            Self::U(e) => e.itemtype.as_ref(),
86803            Self::Var(e) => e.itemtype.as_ref(),
86804            Self::Wbr(e) => e.itemtype.as_ref(),
86805            Self::Area(e) => e.itemtype.as_ref(),
86806            Self::Audio(e) => e.itemtype.as_ref(),
86807            Self::Img(e) => e.itemtype.as_ref(),
86808            Self::Map(e) => e.itemtype.as_ref(),
86809            Self::Track(e) => e.itemtype.as_ref(),
86810            Self::Video(e) => e.itemtype.as_ref(),
86811            Self::Embed(e) => e.itemtype.as_ref(),
86812            Self::Iframe(e) => e.itemtype.as_ref(),
86813            Self::Object(e) => e.itemtype.as_ref(),
86814            Self::Picture(e) => e.itemtype.as_ref(),
86815            Self::Portal(e) => e.itemtype.as_ref(),
86816            Self::Source(e) => e.itemtype.as_ref(),
86817            Self::Canvas(e) => e.itemtype.as_ref(),
86818            Self::Noscript(e) => e.itemtype.as_ref(),
86819            Self::Script(e) => e.itemtype.as_ref(),
86820            Self::Del(e) => e.itemtype.as_ref(),
86821            Self::Ins(e) => e.itemtype.as_ref(),
86822            Self::Caption(e) => e.itemtype.as_ref(),
86823            Self::Col(e) => e.itemtype.as_ref(),
86824            Self::Colgroup(e) => e.itemtype.as_ref(),
86825            Self::Table(e) => e.itemtype.as_ref(),
86826            Self::Tbody(e) => e.itemtype.as_ref(),
86827            Self::Td(e) => e.itemtype.as_ref(),
86828            Self::Tfoot(e) => e.itemtype.as_ref(),
86829            Self::Th(e) => e.itemtype.as_ref(),
86830            Self::Thead(e) => e.itemtype.as_ref(),
86831            Self::Tr(e) => e.itemtype.as_ref(),
86832            Self::Button(e) => e.itemtype.as_ref(),
86833            Self::Datalist(e) => e.itemtype.as_ref(),
86834            Self::Fieldset(e) => e.itemtype.as_ref(),
86835            Self::Form(e) => e.itemtype.as_ref(),
86836            Self::Input(e) => e.itemtype.as_ref(),
86837            Self::Label(e) => e.itemtype.as_ref(),
86838            Self::Legend(e) => e.itemtype.as_ref(),
86839            Self::Meter(e) => e.itemtype.as_ref(),
86840            Self::Optgroup(e) => e.itemtype.as_ref(),
86841            Self::Option(e) => e.itemtype.as_ref(),
86842            Self::Output(e) => e.itemtype.as_ref(),
86843            Self::Progress(e) => e.itemtype.as_ref(),
86844            Self::Select(e) => e.itemtype.as_ref(),
86845            Self::Textarea(e) => e.itemtype.as_ref(),
86846            Self::Details(e) => e.itemtype.as_ref(),
86847            Self::Dialog(e) => e.itemtype.as_ref(),
86848            Self::Summary(e) => e.itemtype.as_ref(),
86849            Self::Slot(e) => e.itemtype.as_ref(),
86850            Self::Template(e) => e.itemtype.as_ref(),
86851            Self::Acronym(e) => e.itemtype.as_ref(),
86852            Self::Applet(e) => e.itemtype.as_ref(),
86853            Self::Bgsound(e) => e.itemtype.as_ref(),
86854            Self::Big(e) => e.itemtype.as_ref(),
86855            Self::Blink(e) => e.itemtype.as_ref(),
86856            Self::Center(e) => e.itemtype.as_ref(),
86857            Self::Dir(e) => e.itemtype.as_ref(),
86858            Self::Font(e) => e.itemtype.as_ref(),
86859            Self::Frame(e) => e.itemtype.as_ref(),
86860            Self::Frameset(e) => e.itemtype.as_ref(),
86861            Self::Image(e) => e.itemtype.as_ref(),
86862            Self::Keygen(e) => e.itemtype.as_ref(),
86863            Self::Marquee(e) => e.itemtype.as_ref(),
86864            Self::Menuitem(e) => e.itemtype.as_ref(),
86865            Self::Nobr(e) => e.itemtype.as_ref(),
86866            Self::Noembed(e) => e.itemtype.as_ref(),
86867            Self::Noframes(e) => e.itemtype.as_ref(),
86868            Self::Param(e) => e.itemtype.as_ref(),
86869            Self::Plaintext(e) => e.itemtype.as_ref(),
86870            Self::Rb(e) => e.itemtype.as_ref(),
86871            Self::Rtc(e) => e.itemtype.as_ref(),
86872            Self::Spacer(e) => e.itemtype.as_ref(),
86873            Self::Strike(e) => e.itemtype.as_ref(),
86874            Self::Tt(e) => e.itemtype.as_ref(),
86875            Self::Xmp(e) => e.itemtype.as_ref(),
86876            Self::H1(e) => e.itemtype.as_ref(),
86877            Self::H2(e) => e.itemtype.as_ref(),
86878            Self::H3(e) => e.itemtype.as_ref(),
86879            Self::H4(e) => e.itemtype.as_ref(),
86880            Self::H5(e) => e.itemtype.as_ref(),
86881            Self::H6(e) => e.itemtype.as_ref(),
86882            Self::Unknown(e) => e.itemtype.as_ref(),
86883        }
86884    }
86885
86886    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
86887    ///   
86888    #[cfg(feature = "alloc")]
86889    pub fn lang(&self) -> core::option::Option<&AttributeValueOwned> {
86890        match self {
86891            Self::Html(e) => e.lang.as_ref(),
86892            Self::Base(e) => e.lang.as_ref(),
86893            Self::Head(e) => e.lang.as_ref(),
86894            Self::Link(e) => e.lang.as_ref(),
86895            Self::Meta(e) => e.lang.as_ref(),
86896            Self::Style(e) => e.lang.as_ref(),
86897            Self::Title(e) => e.lang.as_ref(),
86898            Self::Body(e) => e.lang.as_ref(),
86899            Self::Address(e) => e.lang.as_ref(),
86900            Self::Article(e) => e.lang.as_ref(),
86901            Self::Aside(e) => e.lang.as_ref(),
86902            Self::Footer(e) => e.lang.as_ref(),
86903            Self::Header(e) => e.lang.as_ref(),
86904            Self::Hgroup(e) => e.lang.as_ref(),
86905            Self::Main(e) => e.lang.as_ref(),
86906            Self::Nav(e) => e.lang.as_ref(),
86907            Self::Section(e) => e.lang.as_ref(),
86908            Self::Blockquote(e) => e.lang.as_ref(),
86909            Self::Dd(e) => e.lang.as_ref(),
86910            Self::Div(e) => e.lang.as_ref(),
86911            Self::Dl(e) => e.lang.as_ref(),
86912            Self::Dt(e) => e.lang.as_ref(),
86913            Self::Figcaption(e) => e.lang.as_ref(),
86914            Self::Figure(e) => e.lang.as_ref(),
86915            Self::Hr(e) => e.lang.as_ref(),
86916            Self::Li(e) => e.lang.as_ref(),
86917            Self::Menu(e) => e.lang.as_ref(),
86918            Self::Ol(e) => e.lang.as_ref(),
86919            Self::P(e) => e.lang.as_ref(),
86920            Self::Pre(e) => e.lang.as_ref(),
86921            Self::Ul(e) => e.lang.as_ref(),
86922            Self::A(e) => e.lang.as_ref(),
86923            Self::Abbr(e) => e.lang.as_ref(),
86924            Self::B(e) => e.lang.as_ref(),
86925            Self::Bdi(e) => e.lang.as_ref(),
86926            Self::Bdo(e) => e.lang.as_ref(),
86927            Self::Br(e) => e.lang.as_ref(),
86928            Self::Cite(e) => e.lang.as_ref(),
86929            Self::Code(e) => e.lang.as_ref(),
86930            Self::Data(e) => e.lang.as_ref(),
86931            Self::Dfn(e) => e.lang.as_ref(),
86932            Self::Em(e) => e.lang.as_ref(),
86933            Self::I(e) => e.lang.as_ref(),
86934            Self::Kbd(e) => e.lang.as_ref(),
86935            Self::Mark(e) => e.lang.as_ref(),
86936            Self::Q(e) => e.lang.as_ref(),
86937            Self::Rp(e) => e.lang.as_ref(),
86938            Self::Rt(e) => e.lang.as_ref(),
86939            Self::Ruby(e) => e.lang.as_ref(),
86940            Self::S(e) => e.lang.as_ref(),
86941            Self::Samp(e) => e.lang.as_ref(),
86942            Self::Small(e) => e.lang.as_ref(),
86943            Self::Span(e) => e.lang.as_ref(),
86944            Self::Strong(e) => e.lang.as_ref(),
86945            Self::Sub(e) => e.lang.as_ref(),
86946            Self::Sup(e) => e.lang.as_ref(),
86947            Self::Time(e) => e.lang.as_ref(),
86948            Self::U(e) => e.lang.as_ref(),
86949            Self::Var(e) => e.lang.as_ref(),
86950            Self::Wbr(e) => e.lang.as_ref(),
86951            Self::Area(e) => e.lang.as_ref(),
86952            Self::Audio(e) => e.lang.as_ref(),
86953            Self::Img(e) => e.lang.as_ref(),
86954            Self::Map(e) => e.lang.as_ref(),
86955            Self::Track(e) => e.lang.as_ref(),
86956            Self::Video(e) => e.lang.as_ref(),
86957            Self::Embed(e) => e.lang.as_ref(),
86958            Self::Iframe(e) => e.lang.as_ref(),
86959            Self::Object(e) => e.lang.as_ref(),
86960            Self::Picture(e) => e.lang.as_ref(),
86961            Self::Portal(e) => e.lang.as_ref(),
86962            Self::Source(e) => e.lang.as_ref(),
86963            Self::Canvas(e) => e.lang.as_ref(),
86964            Self::Noscript(e) => e.lang.as_ref(),
86965            Self::Script(e) => e.lang.as_ref(),
86966            Self::Del(e) => e.lang.as_ref(),
86967            Self::Ins(e) => e.lang.as_ref(),
86968            Self::Caption(e) => e.lang.as_ref(),
86969            Self::Col(e) => e.lang.as_ref(),
86970            Self::Colgroup(e) => e.lang.as_ref(),
86971            Self::Table(e) => e.lang.as_ref(),
86972            Self::Tbody(e) => e.lang.as_ref(),
86973            Self::Td(e) => e.lang.as_ref(),
86974            Self::Tfoot(e) => e.lang.as_ref(),
86975            Self::Th(e) => e.lang.as_ref(),
86976            Self::Thead(e) => e.lang.as_ref(),
86977            Self::Tr(e) => e.lang.as_ref(),
86978            Self::Button(e) => e.lang.as_ref(),
86979            Self::Datalist(e) => e.lang.as_ref(),
86980            Self::Fieldset(e) => e.lang.as_ref(),
86981            Self::Form(e) => e.lang.as_ref(),
86982            Self::Input(e) => e.lang.as_ref(),
86983            Self::Label(e) => e.lang.as_ref(),
86984            Self::Legend(e) => e.lang.as_ref(),
86985            Self::Meter(e) => e.lang.as_ref(),
86986            Self::Optgroup(e) => e.lang.as_ref(),
86987            Self::Option(e) => e.lang.as_ref(),
86988            Self::Output(e) => e.lang.as_ref(),
86989            Self::Progress(e) => e.lang.as_ref(),
86990            Self::Select(e) => e.lang.as_ref(),
86991            Self::Textarea(e) => e.lang.as_ref(),
86992            Self::Details(e) => e.lang.as_ref(),
86993            Self::Dialog(e) => e.lang.as_ref(),
86994            Self::Summary(e) => e.lang.as_ref(),
86995            Self::Slot(e) => e.lang.as_ref(),
86996            Self::Template(e) => e.lang.as_ref(),
86997            Self::Acronym(e) => e.lang.as_ref(),
86998            Self::Applet(e) => e.lang.as_ref(),
86999            Self::Bgsound(e) => e.lang.as_ref(),
87000            Self::Big(e) => e.lang.as_ref(),
87001            Self::Blink(e) => e.lang.as_ref(),
87002            Self::Center(e) => e.lang.as_ref(),
87003            Self::Dir(e) => e.lang.as_ref(),
87004            Self::Font(e) => e.lang.as_ref(),
87005            Self::Frame(e) => e.lang.as_ref(),
87006            Self::Frameset(e) => e.lang.as_ref(),
87007            Self::Image(e) => e.lang.as_ref(),
87008            Self::Keygen(e) => e.lang.as_ref(),
87009            Self::Marquee(e) => e.lang.as_ref(),
87010            Self::Menuitem(e) => e.lang.as_ref(),
87011            Self::Nobr(e) => e.lang.as_ref(),
87012            Self::Noembed(e) => e.lang.as_ref(),
87013            Self::Noframes(e) => e.lang.as_ref(),
87014            Self::Param(e) => e.lang.as_ref(),
87015            Self::Plaintext(e) => e.lang.as_ref(),
87016            Self::Rb(e) => e.lang.as_ref(),
87017            Self::Rtc(e) => e.lang.as_ref(),
87018            Self::Spacer(e) => e.lang.as_ref(),
87019            Self::Strike(e) => e.lang.as_ref(),
87020            Self::Tt(e) => e.lang.as_ref(),
87021            Self::Xmp(e) => e.lang.as_ref(),
87022            Self::H1(e) => e.lang.as_ref(),
87023            Self::H2(e) => e.lang.as_ref(),
87024            Self::H3(e) => e.lang.as_ref(),
87025            Self::H4(e) => e.lang.as_ref(),
87026            Self::H5(e) => e.lang.as_ref(),
87027            Self::H6(e) => e.lang.as_ref(),
87028            Self::Unknown(e) => e.lang.as_ref(),
87029        }
87030    }
87031
87032    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
87033    ///   
87034    #[cfg(feature = "alloc")]
87035    pub fn nonce(&self) -> core::option::Option<&AttributeValueOwned> {
87036        match self {
87037            Self::Html(e) => e.nonce.as_ref(),
87038            Self::Base(e) => e.nonce.as_ref(),
87039            Self::Head(e) => e.nonce.as_ref(),
87040            Self::Link(e) => e.nonce.as_ref(),
87041            Self::Meta(e) => e.nonce.as_ref(),
87042            Self::Style(e) => e.nonce.as_ref(),
87043            Self::Title(e) => e.nonce.as_ref(),
87044            Self::Body(e) => e.nonce.as_ref(),
87045            Self::Address(e) => e.nonce.as_ref(),
87046            Self::Article(e) => e.nonce.as_ref(),
87047            Self::Aside(e) => e.nonce.as_ref(),
87048            Self::Footer(e) => e.nonce.as_ref(),
87049            Self::Header(e) => e.nonce.as_ref(),
87050            Self::Hgroup(e) => e.nonce.as_ref(),
87051            Self::Main(e) => e.nonce.as_ref(),
87052            Self::Nav(e) => e.nonce.as_ref(),
87053            Self::Section(e) => e.nonce.as_ref(),
87054            Self::Blockquote(e) => e.nonce.as_ref(),
87055            Self::Dd(e) => e.nonce.as_ref(),
87056            Self::Div(e) => e.nonce.as_ref(),
87057            Self::Dl(e) => e.nonce.as_ref(),
87058            Self::Dt(e) => e.nonce.as_ref(),
87059            Self::Figcaption(e) => e.nonce.as_ref(),
87060            Self::Figure(e) => e.nonce.as_ref(),
87061            Self::Hr(e) => e.nonce.as_ref(),
87062            Self::Li(e) => e.nonce.as_ref(),
87063            Self::Menu(e) => e.nonce.as_ref(),
87064            Self::Ol(e) => e.nonce.as_ref(),
87065            Self::P(e) => e.nonce.as_ref(),
87066            Self::Pre(e) => e.nonce.as_ref(),
87067            Self::Ul(e) => e.nonce.as_ref(),
87068            Self::A(e) => e.nonce.as_ref(),
87069            Self::Abbr(e) => e.nonce.as_ref(),
87070            Self::B(e) => e.nonce.as_ref(),
87071            Self::Bdi(e) => e.nonce.as_ref(),
87072            Self::Bdo(e) => e.nonce.as_ref(),
87073            Self::Br(e) => e.nonce.as_ref(),
87074            Self::Cite(e) => e.nonce.as_ref(),
87075            Self::Code(e) => e.nonce.as_ref(),
87076            Self::Data(e) => e.nonce.as_ref(),
87077            Self::Dfn(e) => e.nonce.as_ref(),
87078            Self::Em(e) => e.nonce.as_ref(),
87079            Self::I(e) => e.nonce.as_ref(),
87080            Self::Kbd(e) => e.nonce.as_ref(),
87081            Self::Mark(e) => e.nonce.as_ref(),
87082            Self::Q(e) => e.nonce.as_ref(),
87083            Self::Rp(e) => e.nonce.as_ref(),
87084            Self::Rt(e) => e.nonce.as_ref(),
87085            Self::Ruby(e) => e.nonce.as_ref(),
87086            Self::S(e) => e.nonce.as_ref(),
87087            Self::Samp(e) => e.nonce.as_ref(),
87088            Self::Small(e) => e.nonce.as_ref(),
87089            Self::Span(e) => e.nonce.as_ref(),
87090            Self::Strong(e) => e.nonce.as_ref(),
87091            Self::Sub(e) => e.nonce.as_ref(),
87092            Self::Sup(e) => e.nonce.as_ref(),
87093            Self::Time(e) => e.nonce.as_ref(),
87094            Self::U(e) => e.nonce.as_ref(),
87095            Self::Var(e) => e.nonce.as_ref(),
87096            Self::Wbr(e) => e.nonce.as_ref(),
87097            Self::Area(e) => e.nonce.as_ref(),
87098            Self::Audio(e) => e.nonce.as_ref(),
87099            Self::Img(e) => e.nonce.as_ref(),
87100            Self::Map(e) => e.nonce.as_ref(),
87101            Self::Track(e) => e.nonce.as_ref(),
87102            Self::Video(e) => e.nonce.as_ref(),
87103            Self::Embed(e) => e.nonce.as_ref(),
87104            Self::Iframe(e) => e.nonce.as_ref(),
87105            Self::Object(e) => e.nonce.as_ref(),
87106            Self::Picture(e) => e.nonce.as_ref(),
87107            Self::Portal(e) => e.nonce.as_ref(),
87108            Self::Source(e) => e.nonce.as_ref(),
87109            Self::Canvas(e) => e.nonce.as_ref(),
87110            Self::Noscript(e) => e.nonce.as_ref(),
87111            Self::Script(e) => e.nonce.as_ref(),
87112            Self::Del(e) => e.nonce.as_ref(),
87113            Self::Ins(e) => e.nonce.as_ref(),
87114            Self::Caption(e) => e.nonce.as_ref(),
87115            Self::Col(e) => e.nonce.as_ref(),
87116            Self::Colgroup(e) => e.nonce.as_ref(),
87117            Self::Table(e) => e.nonce.as_ref(),
87118            Self::Tbody(e) => e.nonce.as_ref(),
87119            Self::Td(e) => e.nonce.as_ref(),
87120            Self::Tfoot(e) => e.nonce.as_ref(),
87121            Self::Th(e) => e.nonce.as_ref(),
87122            Self::Thead(e) => e.nonce.as_ref(),
87123            Self::Tr(e) => e.nonce.as_ref(),
87124            Self::Button(e) => e.nonce.as_ref(),
87125            Self::Datalist(e) => e.nonce.as_ref(),
87126            Self::Fieldset(e) => e.nonce.as_ref(),
87127            Self::Form(e) => e.nonce.as_ref(),
87128            Self::Input(e) => e.nonce.as_ref(),
87129            Self::Label(e) => e.nonce.as_ref(),
87130            Self::Legend(e) => e.nonce.as_ref(),
87131            Self::Meter(e) => e.nonce.as_ref(),
87132            Self::Optgroup(e) => e.nonce.as_ref(),
87133            Self::Option(e) => e.nonce.as_ref(),
87134            Self::Output(e) => e.nonce.as_ref(),
87135            Self::Progress(e) => e.nonce.as_ref(),
87136            Self::Select(e) => e.nonce.as_ref(),
87137            Self::Textarea(e) => e.nonce.as_ref(),
87138            Self::Details(e) => e.nonce.as_ref(),
87139            Self::Dialog(e) => e.nonce.as_ref(),
87140            Self::Summary(e) => e.nonce.as_ref(),
87141            Self::Slot(e) => e.nonce.as_ref(),
87142            Self::Template(e) => e.nonce.as_ref(),
87143            Self::Acronym(e) => e.nonce.as_ref(),
87144            Self::Applet(e) => e.nonce.as_ref(),
87145            Self::Bgsound(e) => e.nonce.as_ref(),
87146            Self::Big(e) => e.nonce.as_ref(),
87147            Self::Blink(e) => e.nonce.as_ref(),
87148            Self::Center(e) => e.nonce.as_ref(),
87149            Self::Dir(e) => e.nonce.as_ref(),
87150            Self::Font(e) => e.nonce.as_ref(),
87151            Self::Frame(e) => e.nonce.as_ref(),
87152            Self::Frameset(e) => e.nonce.as_ref(),
87153            Self::Image(e) => e.nonce.as_ref(),
87154            Self::Keygen(e) => e.nonce.as_ref(),
87155            Self::Marquee(e) => e.nonce.as_ref(),
87156            Self::Menuitem(e) => e.nonce.as_ref(),
87157            Self::Nobr(e) => e.nonce.as_ref(),
87158            Self::Noembed(e) => e.nonce.as_ref(),
87159            Self::Noframes(e) => e.nonce.as_ref(),
87160            Self::Param(e) => e.nonce.as_ref(),
87161            Self::Plaintext(e) => e.nonce.as_ref(),
87162            Self::Rb(e) => e.nonce.as_ref(),
87163            Self::Rtc(e) => e.nonce.as_ref(),
87164            Self::Spacer(e) => e.nonce.as_ref(),
87165            Self::Strike(e) => e.nonce.as_ref(),
87166            Self::Tt(e) => e.nonce.as_ref(),
87167            Self::Xmp(e) => e.nonce.as_ref(),
87168            Self::H1(e) => e.nonce.as_ref(),
87169            Self::H2(e) => e.nonce.as_ref(),
87170            Self::H3(e) => e.nonce.as_ref(),
87171            Self::H4(e) => e.nonce.as_ref(),
87172            Self::H5(e) => e.nonce.as_ref(),
87173            Self::H6(e) => e.nonce.as_ref(),
87174            Self::Unknown(e) => e.nonce.as_ref(),
87175        }
87176    }
87177
87178    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
87179    ///   
87180    #[cfg(feature = "alloc")]
87181    pub fn part(&self) -> core::option::Option<&AttributeValueOwned> {
87182        match self {
87183            Self::Html(e) => e.part.as_ref(),
87184            Self::Base(e) => e.part.as_ref(),
87185            Self::Head(e) => e.part.as_ref(),
87186            Self::Link(e) => e.part.as_ref(),
87187            Self::Meta(e) => e.part.as_ref(),
87188            Self::Style(e) => e.part.as_ref(),
87189            Self::Title(e) => e.part.as_ref(),
87190            Self::Body(e) => e.part.as_ref(),
87191            Self::Address(e) => e.part.as_ref(),
87192            Self::Article(e) => e.part.as_ref(),
87193            Self::Aside(e) => e.part.as_ref(),
87194            Self::Footer(e) => e.part.as_ref(),
87195            Self::Header(e) => e.part.as_ref(),
87196            Self::Hgroup(e) => e.part.as_ref(),
87197            Self::Main(e) => e.part.as_ref(),
87198            Self::Nav(e) => e.part.as_ref(),
87199            Self::Section(e) => e.part.as_ref(),
87200            Self::Blockquote(e) => e.part.as_ref(),
87201            Self::Dd(e) => e.part.as_ref(),
87202            Self::Div(e) => e.part.as_ref(),
87203            Self::Dl(e) => e.part.as_ref(),
87204            Self::Dt(e) => e.part.as_ref(),
87205            Self::Figcaption(e) => e.part.as_ref(),
87206            Self::Figure(e) => e.part.as_ref(),
87207            Self::Hr(e) => e.part.as_ref(),
87208            Self::Li(e) => e.part.as_ref(),
87209            Self::Menu(e) => e.part.as_ref(),
87210            Self::Ol(e) => e.part.as_ref(),
87211            Self::P(e) => e.part.as_ref(),
87212            Self::Pre(e) => e.part.as_ref(),
87213            Self::Ul(e) => e.part.as_ref(),
87214            Self::A(e) => e.part.as_ref(),
87215            Self::Abbr(e) => e.part.as_ref(),
87216            Self::B(e) => e.part.as_ref(),
87217            Self::Bdi(e) => e.part.as_ref(),
87218            Self::Bdo(e) => e.part.as_ref(),
87219            Self::Br(e) => e.part.as_ref(),
87220            Self::Cite(e) => e.part.as_ref(),
87221            Self::Code(e) => e.part.as_ref(),
87222            Self::Data(e) => e.part.as_ref(),
87223            Self::Dfn(e) => e.part.as_ref(),
87224            Self::Em(e) => e.part.as_ref(),
87225            Self::I(e) => e.part.as_ref(),
87226            Self::Kbd(e) => e.part.as_ref(),
87227            Self::Mark(e) => e.part.as_ref(),
87228            Self::Q(e) => e.part.as_ref(),
87229            Self::Rp(e) => e.part.as_ref(),
87230            Self::Rt(e) => e.part.as_ref(),
87231            Self::Ruby(e) => e.part.as_ref(),
87232            Self::S(e) => e.part.as_ref(),
87233            Self::Samp(e) => e.part.as_ref(),
87234            Self::Small(e) => e.part.as_ref(),
87235            Self::Span(e) => e.part.as_ref(),
87236            Self::Strong(e) => e.part.as_ref(),
87237            Self::Sub(e) => e.part.as_ref(),
87238            Self::Sup(e) => e.part.as_ref(),
87239            Self::Time(e) => e.part.as_ref(),
87240            Self::U(e) => e.part.as_ref(),
87241            Self::Var(e) => e.part.as_ref(),
87242            Self::Wbr(e) => e.part.as_ref(),
87243            Self::Area(e) => e.part.as_ref(),
87244            Self::Audio(e) => e.part.as_ref(),
87245            Self::Img(e) => e.part.as_ref(),
87246            Self::Map(e) => e.part.as_ref(),
87247            Self::Track(e) => e.part.as_ref(),
87248            Self::Video(e) => e.part.as_ref(),
87249            Self::Embed(e) => e.part.as_ref(),
87250            Self::Iframe(e) => e.part.as_ref(),
87251            Self::Object(e) => e.part.as_ref(),
87252            Self::Picture(e) => e.part.as_ref(),
87253            Self::Portal(e) => e.part.as_ref(),
87254            Self::Source(e) => e.part.as_ref(),
87255            Self::Canvas(e) => e.part.as_ref(),
87256            Self::Noscript(e) => e.part.as_ref(),
87257            Self::Script(e) => e.part.as_ref(),
87258            Self::Del(e) => e.part.as_ref(),
87259            Self::Ins(e) => e.part.as_ref(),
87260            Self::Caption(e) => e.part.as_ref(),
87261            Self::Col(e) => e.part.as_ref(),
87262            Self::Colgroup(e) => e.part.as_ref(),
87263            Self::Table(e) => e.part.as_ref(),
87264            Self::Tbody(e) => e.part.as_ref(),
87265            Self::Td(e) => e.part.as_ref(),
87266            Self::Tfoot(e) => e.part.as_ref(),
87267            Self::Th(e) => e.part.as_ref(),
87268            Self::Thead(e) => e.part.as_ref(),
87269            Self::Tr(e) => e.part.as_ref(),
87270            Self::Button(e) => e.part.as_ref(),
87271            Self::Datalist(e) => e.part.as_ref(),
87272            Self::Fieldset(e) => e.part.as_ref(),
87273            Self::Form(e) => e.part.as_ref(),
87274            Self::Input(e) => e.part.as_ref(),
87275            Self::Label(e) => e.part.as_ref(),
87276            Self::Legend(e) => e.part.as_ref(),
87277            Self::Meter(e) => e.part.as_ref(),
87278            Self::Optgroup(e) => e.part.as_ref(),
87279            Self::Option(e) => e.part.as_ref(),
87280            Self::Output(e) => e.part.as_ref(),
87281            Self::Progress(e) => e.part.as_ref(),
87282            Self::Select(e) => e.part.as_ref(),
87283            Self::Textarea(e) => e.part.as_ref(),
87284            Self::Details(e) => e.part.as_ref(),
87285            Self::Dialog(e) => e.part.as_ref(),
87286            Self::Summary(e) => e.part.as_ref(),
87287            Self::Slot(e) => e.part.as_ref(),
87288            Self::Template(e) => e.part.as_ref(),
87289            Self::Acronym(e) => e.part.as_ref(),
87290            Self::Applet(e) => e.part.as_ref(),
87291            Self::Bgsound(e) => e.part.as_ref(),
87292            Self::Big(e) => e.part.as_ref(),
87293            Self::Blink(e) => e.part.as_ref(),
87294            Self::Center(e) => e.part.as_ref(),
87295            Self::Dir(e) => e.part.as_ref(),
87296            Self::Font(e) => e.part.as_ref(),
87297            Self::Frame(e) => e.part.as_ref(),
87298            Self::Frameset(e) => e.part.as_ref(),
87299            Self::Image(e) => e.part.as_ref(),
87300            Self::Keygen(e) => e.part.as_ref(),
87301            Self::Marquee(e) => e.part.as_ref(),
87302            Self::Menuitem(e) => e.part.as_ref(),
87303            Self::Nobr(e) => e.part.as_ref(),
87304            Self::Noembed(e) => e.part.as_ref(),
87305            Self::Noframes(e) => e.part.as_ref(),
87306            Self::Param(e) => e.part.as_ref(),
87307            Self::Plaintext(e) => e.part.as_ref(),
87308            Self::Rb(e) => e.part.as_ref(),
87309            Self::Rtc(e) => e.part.as_ref(),
87310            Self::Spacer(e) => e.part.as_ref(),
87311            Self::Strike(e) => e.part.as_ref(),
87312            Self::Tt(e) => e.part.as_ref(),
87313            Self::Xmp(e) => e.part.as_ref(),
87314            Self::H1(e) => e.part.as_ref(),
87315            Self::H2(e) => e.part.as_ref(),
87316            Self::H3(e) => e.part.as_ref(),
87317            Self::H4(e) => e.part.as_ref(),
87318            Self::H5(e) => e.part.as_ref(),
87319            Self::H6(e) => e.part.as_ref(),
87320            Self::Unknown(e) => e.part.as_ref(),
87321        }
87322    }
87323
87324    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
87325    ///   
87326    #[cfg(feature = "alloc")]
87327    pub fn popover(&self) -> core::option::Option<&AttributeValueOwned> {
87328        match self {
87329            Self::Html(e) => e.popover.as_ref(),
87330            Self::Base(e) => e.popover.as_ref(),
87331            Self::Head(e) => e.popover.as_ref(),
87332            Self::Link(e) => e.popover.as_ref(),
87333            Self::Meta(e) => e.popover.as_ref(),
87334            Self::Style(e) => e.popover.as_ref(),
87335            Self::Title(e) => e.popover.as_ref(),
87336            Self::Body(e) => e.popover.as_ref(),
87337            Self::Address(e) => e.popover.as_ref(),
87338            Self::Article(e) => e.popover.as_ref(),
87339            Self::Aside(e) => e.popover.as_ref(),
87340            Self::Footer(e) => e.popover.as_ref(),
87341            Self::Header(e) => e.popover.as_ref(),
87342            Self::Hgroup(e) => e.popover.as_ref(),
87343            Self::Main(e) => e.popover.as_ref(),
87344            Self::Nav(e) => e.popover.as_ref(),
87345            Self::Section(e) => e.popover.as_ref(),
87346            Self::Blockquote(e) => e.popover.as_ref(),
87347            Self::Dd(e) => e.popover.as_ref(),
87348            Self::Div(e) => e.popover.as_ref(),
87349            Self::Dl(e) => e.popover.as_ref(),
87350            Self::Dt(e) => e.popover.as_ref(),
87351            Self::Figcaption(e) => e.popover.as_ref(),
87352            Self::Figure(e) => e.popover.as_ref(),
87353            Self::Hr(e) => e.popover.as_ref(),
87354            Self::Li(e) => e.popover.as_ref(),
87355            Self::Menu(e) => e.popover.as_ref(),
87356            Self::Ol(e) => e.popover.as_ref(),
87357            Self::P(e) => e.popover.as_ref(),
87358            Self::Pre(e) => e.popover.as_ref(),
87359            Self::Ul(e) => e.popover.as_ref(),
87360            Self::A(e) => e.popover.as_ref(),
87361            Self::Abbr(e) => e.popover.as_ref(),
87362            Self::B(e) => e.popover.as_ref(),
87363            Self::Bdi(e) => e.popover.as_ref(),
87364            Self::Bdo(e) => e.popover.as_ref(),
87365            Self::Br(e) => e.popover.as_ref(),
87366            Self::Cite(e) => e.popover.as_ref(),
87367            Self::Code(e) => e.popover.as_ref(),
87368            Self::Data(e) => e.popover.as_ref(),
87369            Self::Dfn(e) => e.popover.as_ref(),
87370            Self::Em(e) => e.popover.as_ref(),
87371            Self::I(e) => e.popover.as_ref(),
87372            Self::Kbd(e) => e.popover.as_ref(),
87373            Self::Mark(e) => e.popover.as_ref(),
87374            Self::Q(e) => e.popover.as_ref(),
87375            Self::Rp(e) => e.popover.as_ref(),
87376            Self::Rt(e) => e.popover.as_ref(),
87377            Self::Ruby(e) => e.popover.as_ref(),
87378            Self::S(e) => e.popover.as_ref(),
87379            Self::Samp(e) => e.popover.as_ref(),
87380            Self::Small(e) => e.popover.as_ref(),
87381            Self::Span(e) => e.popover.as_ref(),
87382            Self::Strong(e) => e.popover.as_ref(),
87383            Self::Sub(e) => e.popover.as_ref(),
87384            Self::Sup(e) => e.popover.as_ref(),
87385            Self::Time(e) => e.popover.as_ref(),
87386            Self::U(e) => e.popover.as_ref(),
87387            Self::Var(e) => e.popover.as_ref(),
87388            Self::Wbr(e) => e.popover.as_ref(),
87389            Self::Area(e) => e.popover.as_ref(),
87390            Self::Audio(e) => e.popover.as_ref(),
87391            Self::Img(e) => e.popover.as_ref(),
87392            Self::Map(e) => e.popover.as_ref(),
87393            Self::Track(e) => e.popover.as_ref(),
87394            Self::Video(e) => e.popover.as_ref(),
87395            Self::Embed(e) => e.popover.as_ref(),
87396            Self::Iframe(e) => e.popover.as_ref(),
87397            Self::Object(e) => e.popover.as_ref(),
87398            Self::Picture(e) => e.popover.as_ref(),
87399            Self::Portal(e) => e.popover.as_ref(),
87400            Self::Source(e) => e.popover.as_ref(),
87401            Self::Canvas(e) => e.popover.as_ref(),
87402            Self::Noscript(e) => e.popover.as_ref(),
87403            Self::Script(e) => e.popover.as_ref(),
87404            Self::Del(e) => e.popover.as_ref(),
87405            Self::Ins(e) => e.popover.as_ref(),
87406            Self::Caption(e) => e.popover.as_ref(),
87407            Self::Col(e) => e.popover.as_ref(),
87408            Self::Colgroup(e) => e.popover.as_ref(),
87409            Self::Table(e) => e.popover.as_ref(),
87410            Self::Tbody(e) => e.popover.as_ref(),
87411            Self::Td(e) => e.popover.as_ref(),
87412            Self::Tfoot(e) => e.popover.as_ref(),
87413            Self::Th(e) => e.popover.as_ref(),
87414            Self::Thead(e) => e.popover.as_ref(),
87415            Self::Tr(e) => e.popover.as_ref(),
87416            Self::Button(e) => e.popover.as_ref(),
87417            Self::Datalist(e) => e.popover.as_ref(),
87418            Self::Fieldset(e) => e.popover.as_ref(),
87419            Self::Form(e) => e.popover.as_ref(),
87420            Self::Input(e) => e.popover.as_ref(),
87421            Self::Label(e) => e.popover.as_ref(),
87422            Self::Legend(e) => e.popover.as_ref(),
87423            Self::Meter(e) => e.popover.as_ref(),
87424            Self::Optgroup(e) => e.popover.as_ref(),
87425            Self::Option(e) => e.popover.as_ref(),
87426            Self::Output(e) => e.popover.as_ref(),
87427            Self::Progress(e) => e.popover.as_ref(),
87428            Self::Select(e) => e.popover.as_ref(),
87429            Self::Textarea(e) => e.popover.as_ref(),
87430            Self::Details(e) => e.popover.as_ref(),
87431            Self::Dialog(e) => e.popover.as_ref(),
87432            Self::Summary(e) => e.popover.as_ref(),
87433            Self::Slot(e) => e.popover.as_ref(),
87434            Self::Template(e) => e.popover.as_ref(),
87435            Self::Acronym(e) => e.popover.as_ref(),
87436            Self::Applet(e) => e.popover.as_ref(),
87437            Self::Bgsound(e) => e.popover.as_ref(),
87438            Self::Big(e) => e.popover.as_ref(),
87439            Self::Blink(e) => e.popover.as_ref(),
87440            Self::Center(e) => e.popover.as_ref(),
87441            Self::Dir(e) => e.popover.as_ref(),
87442            Self::Font(e) => e.popover.as_ref(),
87443            Self::Frame(e) => e.popover.as_ref(),
87444            Self::Frameset(e) => e.popover.as_ref(),
87445            Self::Image(e) => e.popover.as_ref(),
87446            Self::Keygen(e) => e.popover.as_ref(),
87447            Self::Marquee(e) => e.popover.as_ref(),
87448            Self::Menuitem(e) => e.popover.as_ref(),
87449            Self::Nobr(e) => e.popover.as_ref(),
87450            Self::Noembed(e) => e.popover.as_ref(),
87451            Self::Noframes(e) => e.popover.as_ref(),
87452            Self::Param(e) => e.popover.as_ref(),
87453            Self::Plaintext(e) => e.popover.as_ref(),
87454            Self::Rb(e) => e.popover.as_ref(),
87455            Self::Rtc(e) => e.popover.as_ref(),
87456            Self::Spacer(e) => e.popover.as_ref(),
87457            Self::Strike(e) => e.popover.as_ref(),
87458            Self::Tt(e) => e.popover.as_ref(),
87459            Self::Xmp(e) => e.popover.as_ref(),
87460            Self::H1(e) => e.popover.as_ref(),
87461            Self::H2(e) => e.popover.as_ref(),
87462            Self::H3(e) => e.popover.as_ref(),
87463            Self::H4(e) => e.popover.as_ref(),
87464            Self::H5(e) => e.popover.as_ref(),
87465            Self::H6(e) => e.popover.as_ref(),
87466            Self::Unknown(e) => e.popover.as_ref(),
87467        }
87468    }
87469
87470    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
87471    ///   
87472    #[cfg(feature = "alloc")]
87473    pub fn role(&self) -> core::option::Option<&AttributeValueOwned> {
87474        match self {
87475            Self::Html(e) => e.role.as_ref(),
87476            Self::Base(e) => e.role.as_ref(),
87477            Self::Head(e) => e.role.as_ref(),
87478            Self::Link(e) => e.role.as_ref(),
87479            Self::Meta(e) => e.role.as_ref(),
87480            Self::Style(e) => e.role.as_ref(),
87481            Self::Title(e) => e.role.as_ref(),
87482            Self::Body(e) => e.role.as_ref(),
87483            Self::Address(e) => e.role.as_ref(),
87484            Self::Article(e) => e.role.as_ref(),
87485            Self::Aside(e) => e.role.as_ref(),
87486            Self::Footer(e) => e.role.as_ref(),
87487            Self::Header(e) => e.role.as_ref(),
87488            Self::Hgroup(e) => e.role.as_ref(),
87489            Self::Main(e) => e.role.as_ref(),
87490            Self::Nav(e) => e.role.as_ref(),
87491            Self::Section(e) => e.role.as_ref(),
87492            Self::Blockquote(e) => e.role.as_ref(),
87493            Self::Dd(e) => e.role.as_ref(),
87494            Self::Div(e) => e.role.as_ref(),
87495            Self::Dl(e) => e.role.as_ref(),
87496            Self::Dt(e) => e.role.as_ref(),
87497            Self::Figcaption(e) => e.role.as_ref(),
87498            Self::Figure(e) => e.role.as_ref(),
87499            Self::Hr(e) => e.role.as_ref(),
87500            Self::Li(e) => e.role.as_ref(),
87501            Self::Menu(e) => e.role.as_ref(),
87502            Self::Ol(e) => e.role.as_ref(),
87503            Self::P(e) => e.role.as_ref(),
87504            Self::Pre(e) => e.role.as_ref(),
87505            Self::Ul(e) => e.role.as_ref(),
87506            Self::A(e) => e.role.as_ref(),
87507            Self::Abbr(e) => e.role.as_ref(),
87508            Self::B(e) => e.role.as_ref(),
87509            Self::Bdi(e) => e.role.as_ref(),
87510            Self::Bdo(e) => e.role.as_ref(),
87511            Self::Br(e) => e.role.as_ref(),
87512            Self::Cite(e) => e.role.as_ref(),
87513            Self::Code(e) => e.role.as_ref(),
87514            Self::Data(e) => e.role.as_ref(),
87515            Self::Dfn(e) => e.role.as_ref(),
87516            Self::Em(e) => e.role.as_ref(),
87517            Self::I(e) => e.role.as_ref(),
87518            Self::Kbd(e) => e.role.as_ref(),
87519            Self::Mark(e) => e.role.as_ref(),
87520            Self::Q(e) => e.role.as_ref(),
87521            Self::Rp(e) => e.role.as_ref(),
87522            Self::Rt(e) => e.role.as_ref(),
87523            Self::Ruby(e) => e.role.as_ref(),
87524            Self::S(e) => e.role.as_ref(),
87525            Self::Samp(e) => e.role.as_ref(),
87526            Self::Small(e) => e.role.as_ref(),
87527            Self::Span(e) => e.role.as_ref(),
87528            Self::Strong(e) => e.role.as_ref(),
87529            Self::Sub(e) => e.role.as_ref(),
87530            Self::Sup(e) => e.role.as_ref(),
87531            Self::Time(e) => e.role.as_ref(),
87532            Self::U(e) => e.role.as_ref(),
87533            Self::Var(e) => e.role.as_ref(),
87534            Self::Wbr(e) => e.role.as_ref(),
87535            Self::Area(e) => e.role.as_ref(),
87536            Self::Audio(e) => e.role.as_ref(),
87537            Self::Img(e) => e.role.as_ref(),
87538            Self::Map(e) => e.role.as_ref(),
87539            Self::Track(e) => e.role.as_ref(),
87540            Self::Video(e) => e.role.as_ref(),
87541            Self::Embed(e) => e.role.as_ref(),
87542            Self::Iframe(e) => e.role.as_ref(),
87543            Self::Object(e) => e.role.as_ref(),
87544            Self::Picture(e) => e.role.as_ref(),
87545            Self::Portal(e) => e.role.as_ref(),
87546            Self::Source(e) => e.role.as_ref(),
87547            Self::Canvas(e) => e.role.as_ref(),
87548            Self::Noscript(e) => e.role.as_ref(),
87549            Self::Script(e) => e.role.as_ref(),
87550            Self::Del(e) => e.role.as_ref(),
87551            Self::Ins(e) => e.role.as_ref(),
87552            Self::Caption(e) => e.role.as_ref(),
87553            Self::Col(e) => e.role.as_ref(),
87554            Self::Colgroup(e) => e.role.as_ref(),
87555            Self::Table(e) => e.role.as_ref(),
87556            Self::Tbody(e) => e.role.as_ref(),
87557            Self::Td(e) => e.role.as_ref(),
87558            Self::Tfoot(e) => e.role.as_ref(),
87559            Self::Th(e) => e.role.as_ref(),
87560            Self::Thead(e) => e.role.as_ref(),
87561            Self::Tr(e) => e.role.as_ref(),
87562            Self::Button(e) => e.role.as_ref(),
87563            Self::Datalist(e) => e.role.as_ref(),
87564            Self::Fieldset(e) => e.role.as_ref(),
87565            Self::Form(e) => e.role.as_ref(),
87566            Self::Input(e) => e.role.as_ref(),
87567            Self::Label(e) => e.role.as_ref(),
87568            Self::Legend(e) => e.role.as_ref(),
87569            Self::Meter(e) => e.role.as_ref(),
87570            Self::Optgroup(e) => e.role.as_ref(),
87571            Self::Option(e) => e.role.as_ref(),
87572            Self::Output(e) => e.role.as_ref(),
87573            Self::Progress(e) => e.role.as_ref(),
87574            Self::Select(e) => e.role.as_ref(),
87575            Self::Textarea(e) => e.role.as_ref(),
87576            Self::Details(e) => e.role.as_ref(),
87577            Self::Dialog(e) => e.role.as_ref(),
87578            Self::Summary(e) => e.role.as_ref(),
87579            Self::Slot(e) => e.role.as_ref(),
87580            Self::Template(e) => e.role.as_ref(),
87581            Self::Acronym(e) => e.role.as_ref(),
87582            Self::Applet(e) => e.role.as_ref(),
87583            Self::Bgsound(e) => e.role.as_ref(),
87584            Self::Big(e) => e.role.as_ref(),
87585            Self::Blink(e) => e.role.as_ref(),
87586            Self::Center(e) => e.role.as_ref(),
87587            Self::Dir(e) => e.role.as_ref(),
87588            Self::Font(e) => e.role.as_ref(),
87589            Self::Frame(e) => e.role.as_ref(),
87590            Self::Frameset(e) => e.role.as_ref(),
87591            Self::Image(e) => e.role.as_ref(),
87592            Self::Keygen(e) => e.role.as_ref(),
87593            Self::Marquee(e) => e.role.as_ref(),
87594            Self::Menuitem(e) => e.role.as_ref(),
87595            Self::Nobr(e) => e.role.as_ref(),
87596            Self::Noembed(e) => e.role.as_ref(),
87597            Self::Noframes(e) => e.role.as_ref(),
87598            Self::Param(e) => e.role.as_ref(),
87599            Self::Plaintext(e) => e.role.as_ref(),
87600            Self::Rb(e) => e.role.as_ref(),
87601            Self::Rtc(e) => e.role.as_ref(),
87602            Self::Spacer(e) => e.role.as_ref(),
87603            Self::Strike(e) => e.role.as_ref(),
87604            Self::Tt(e) => e.role.as_ref(),
87605            Self::Xmp(e) => e.role.as_ref(),
87606            Self::H1(e) => e.role.as_ref(),
87607            Self::H2(e) => e.role.as_ref(),
87608            Self::H3(e) => e.role.as_ref(),
87609            Self::H4(e) => e.role.as_ref(),
87610            Self::H5(e) => e.role.as_ref(),
87611            Self::H6(e) => e.role.as_ref(),
87612            Self::Unknown(e) => e.role.as_ref(),
87613        }
87614    }
87615
87616    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
87617    ///   
87618    #[cfg(feature = "alloc")]
87619    pub fn slot(&self) -> core::option::Option<&AttributeValueOwned> {
87620        match self {
87621            Self::Html(e) => e.slot.as_ref(),
87622            Self::Base(e) => e.slot.as_ref(),
87623            Self::Head(e) => e.slot.as_ref(),
87624            Self::Link(e) => e.slot.as_ref(),
87625            Self::Meta(e) => e.slot.as_ref(),
87626            Self::Style(e) => e.slot.as_ref(),
87627            Self::Title(e) => e.slot.as_ref(),
87628            Self::Body(e) => e.slot.as_ref(),
87629            Self::Address(e) => e.slot.as_ref(),
87630            Self::Article(e) => e.slot.as_ref(),
87631            Self::Aside(e) => e.slot.as_ref(),
87632            Self::Footer(e) => e.slot.as_ref(),
87633            Self::Header(e) => e.slot.as_ref(),
87634            Self::Hgroup(e) => e.slot.as_ref(),
87635            Self::Main(e) => e.slot.as_ref(),
87636            Self::Nav(e) => e.slot.as_ref(),
87637            Self::Section(e) => e.slot.as_ref(),
87638            Self::Blockquote(e) => e.slot.as_ref(),
87639            Self::Dd(e) => e.slot.as_ref(),
87640            Self::Div(e) => e.slot.as_ref(),
87641            Self::Dl(e) => e.slot.as_ref(),
87642            Self::Dt(e) => e.slot.as_ref(),
87643            Self::Figcaption(e) => e.slot.as_ref(),
87644            Self::Figure(e) => e.slot.as_ref(),
87645            Self::Hr(e) => e.slot.as_ref(),
87646            Self::Li(e) => e.slot.as_ref(),
87647            Self::Menu(e) => e.slot.as_ref(),
87648            Self::Ol(e) => e.slot.as_ref(),
87649            Self::P(e) => e.slot.as_ref(),
87650            Self::Pre(e) => e.slot.as_ref(),
87651            Self::Ul(e) => e.slot.as_ref(),
87652            Self::A(e) => e.slot.as_ref(),
87653            Self::Abbr(e) => e.slot.as_ref(),
87654            Self::B(e) => e.slot.as_ref(),
87655            Self::Bdi(e) => e.slot.as_ref(),
87656            Self::Bdo(e) => e.slot.as_ref(),
87657            Self::Br(e) => e.slot.as_ref(),
87658            Self::Cite(e) => e.slot.as_ref(),
87659            Self::Code(e) => e.slot.as_ref(),
87660            Self::Data(e) => e.slot.as_ref(),
87661            Self::Dfn(e) => e.slot.as_ref(),
87662            Self::Em(e) => e.slot.as_ref(),
87663            Self::I(e) => e.slot.as_ref(),
87664            Self::Kbd(e) => e.slot.as_ref(),
87665            Self::Mark(e) => e.slot.as_ref(),
87666            Self::Q(e) => e.slot.as_ref(),
87667            Self::Rp(e) => e.slot.as_ref(),
87668            Self::Rt(e) => e.slot.as_ref(),
87669            Self::Ruby(e) => e.slot.as_ref(),
87670            Self::S(e) => e.slot.as_ref(),
87671            Self::Samp(e) => e.slot.as_ref(),
87672            Self::Small(e) => e.slot.as_ref(),
87673            Self::Span(e) => e.slot.as_ref(),
87674            Self::Strong(e) => e.slot.as_ref(),
87675            Self::Sub(e) => e.slot.as_ref(),
87676            Self::Sup(e) => e.slot.as_ref(),
87677            Self::Time(e) => e.slot.as_ref(),
87678            Self::U(e) => e.slot.as_ref(),
87679            Self::Var(e) => e.slot.as_ref(),
87680            Self::Wbr(e) => e.slot.as_ref(),
87681            Self::Area(e) => e.slot.as_ref(),
87682            Self::Audio(e) => e.slot.as_ref(),
87683            Self::Img(e) => e.slot.as_ref(),
87684            Self::Map(e) => e.slot.as_ref(),
87685            Self::Track(e) => e.slot.as_ref(),
87686            Self::Video(e) => e.slot.as_ref(),
87687            Self::Embed(e) => e.slot.as_ref(),
87688            Self::Iframe(e) => e.slot.as_ref(),
87689            Self::Object(e) => e.slot.as_ref(),
87690            Self::Picture(e) => e.slot.as_ref(),
87691            Self::Portal(e) => e.slot.as_ref(),
87692            Self::Source(e) => e.slot.as_ref(),
87693            Self::Canvas(e) => e.slot.as_ref(),
87694            Self::Noscript(e) => e.slot.as_ref(),
87695            Self::Script(e) => e.slot.as_ref(),
87696            Self::Del(e) => e.slot.as_ref(),
87697            Self::Ins(e) => e.slot.as_ref(),
87698            Self::Caption(e) => e.slot.as_ref(),
87699            Self::Col(e) => e.slot.as_ref(),
87700            Self::Colgroup(e) => e.slot.as_ref(),
87701            Self::Table(e) => e.slot.as_ref(),
87702            Self::Tbody(e) => e.slot.as_ref(),
87703            Self::Td(e) => e.slot.as_ref(),
87704            Self::Tfoot(e) => e.slot.as_ref(),
87705            Self::Th(e) => e.slot.as_ref(),
87706            Self::Thead(e) => e.slot.as_ref(),
87707            Self::Tr(e) => e.slot.as_ref(),
87708            Self::Button(e) => e.slot.as_ref(),
87709            Self::Datalist(e) => e.slot.as_ref(),
87710            Self::Fieldset(e) => e.slot.as_ref(),
87711            Self::Form(e) => e.slot.as_ref(),
87712            Self::Input(e) => e.slot.as_ref(),
87713            Self::Label(e) => e.slot.as_ref(),
87714            Self::Legend(e) => e.slot.as_ref(),
87715            Self::Meter(e) => e.slot.as_ref(),
87716            Self::Optgroup(e) => e.slot.as_ref(),
87717            Self::Option(e) => e.slot.as_ref(),
87718            Self::Output(e) => e.slot.as_ref(),
87719            Self::Progress(e) => e.slot.as_ref(),
87720            Self::Select(e) => e.slot.as_ref(),
87721            Self::Textarea(e) => e.slot.as_ref(),
87722            Self::Details(e) => e.slot.as_ref(),
87723            Self::Dialog(e) => e.slot.as_ref(),
87724            Self::Summary(e) => e.slot.as_ref(),
87725            Self::Slot(e) => e.slot.as_ref(),
87726            Self::Template(e) => e.slot.as_ref(),
87727            Self::Acronym(e) => e.slot.as_ref(),
87728            Self::Applet(e) => e.slot.as_ref(),
87729            Self::Bgsound(e) => e.slot.as_ref(),
87730            Self::Big(e) => e.slot.as_ref(),
87731            Self::Blink(e) => e.slot.as_ref(),
87732            Self::Center(e) => e.slot.as_ref(),
87733            Self::Dir(e) => e.slot.as_ref(),
87734            Self::Font(e) => e.slot.as_ref(),
87735            Self::Frame(e) => e.slot.as_ref(),
87736            Self::Frameset(e) => e.slot.as_ref(),
87737            Self::Image(e) => e.slot.as_ref(),
87738            Self::Keygen(e) => e.slot.as_ref(),
87739            Self::Marquee(e) => e.slot.as_ref(),
87740            Self::Menuitem(e) => e.slot.as_ref(),
87741            Self::Nobr(e) => e.slot.as_ref(),
87742            Self::Noembed(e) => e.slot.as_ref(),
87743            Self::Noframes(e) => e.slot.as_ref(),
87744            Self::Param(e) => e.slot.as_ref(),
87745            Self::Plaintext(e) => e.slot.as_ref(),
87746            Self::Rb(e) => e.slot.as_ref(),
87747            Self::Rtc(e) => e.slot.as_ref(),
87748            Self::Spacer(e) => e.slot.as_ref(),
87749            Self::Strike(e) => e.slot.as_ref(),
87750            Self::Tt(e) => e.slot.as_ref(),
87751            Self::Xmp(e) => e.slot.as_ref(),
87752            Self::H1(e) => e.slot.as_ref(),
87753            Self::H2(e) => e.slot.as_ref(),
87754            Self::H3(e) => e.slot.as_ref(),
87755            Self::H4(e) => e.slot.as_ref(),
87756            Self::H5(e) => e.slot.as_ref(),
87757            Self::H6(e) => e.slot.as_ref(),
87758            Self::Unknown(e) => e.slot.as_ref(),
87759        }
87760    }
87761
87762    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
87763    ///     <ul>
87764    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
87765    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
87766    ///     </ul>
87767    ///   
87768    #[cfg(feature = "alloc")]
87769    pub fn spellcheck(&self) -> core::option::Option<&AttributeValueOwned> {
87770        match self {
87771            Self::Html(e) => e.spellcheck.as_ref(),
87772            Self::Base(e) => e.spellcheck.as_ref(),
87773            Self::Head(e) => e.spellcheck.as_ref(),
87774            Self::Link(e) => e.spellcheck.as_ref(),
87775            Self::Meta(e) => e.spellcheck.as_ref(),
87776            Self::Style(e) => e.spellcheck.as_ref(),
87777            Self::Title(e) => e.spellcheck.as_ref(),
87778            Self::Body(e) => e.spellcheck.as_ref(),
87779            Self::Address(e) => e.spellcheck.as_ref(),
87780            Self::Article(e) => e.spellcheck.as_ref(),
87781            Self::Aside(e) => e.spellcheck.as_ref(),
87782            Self::Footer(e) => e.spellcheck.as_ref(),
87783            Self::Header(e) => e.spellcheck.as_ref(),
87784            Self::Hgroup(e) => e.spellcheck.as_ref(),
87785            Self::Main(e) => e.spellcheck.as_ref(),
87786            Self::Nav(e) => e.spellcheck.as_ref(),
87787            Self::Section(e) => e.spellcheck.as_ref(),
87788            Self::Blockquote(e) => e.spellcheck.as_ref(),
87789            Self::Dd(e) => e.spellcheck.as_ref(),
87790            Self::Div(e) => e.spellcheck.as_ref(),
87791            Self::Dl(e) => e.spellcheck.as_ref(),
87792            Self::Dt(e) => e.spellcheck.as_ref(),
87793            Self::Figcaption(e) => e.spellcheck.as_ref(),
87794            Self::Figure(e) => e.spellcheck.as_ref(),
87795            Self::Hr(e) => e.spellcheck.as_ref(),
87796            Self::Li(e) => e.spellcheck.as_ref(),
87797            Self::Menu(e) => e.spellcheck.as_ref(),
87798            Self::Ol(e) => e.spellcheck.as_ref(),
87799            Self::P(e) => e.spellcheck.as_ref(),
87800            Self::Pre(e) => e.spellcheck.as_ref(),
87801            Self::Ul(e) => e.spellcheck.as_ref(),
87802            Self::A(e) => e.spellcheck.as_ref(),
87803            Self::Abbr(e) => e.spellcheck.as_ref(),
87804            Self::B(e) => e.spellcheck.as_ref(),
87805            Self::Bdi(e) => e.spellcheck.as_ref(),
87806            Self::Bdo(e) => e.spellcheck.as_ref(),
87807            Self::Br(e) => e.spellcheck.as_ref(),
87808            Self::Cite(e) => e.spellcheck.as_ref(),
87809            Self::Code(e) => e.spellcheck.as_ref(),
87810            Self::Data(e) => e.spellcheck.as_ref(),
87811            Self::Dfn(e) => e.spellcheck.as_ref(),
87812            Self::Em(e) => e.spellcheck.as_ref(),
87813            Self::I(e) => e.spellcheck.as_ref(),
87814            Self::Kbd(e) => e.spellcheck.as_ref(),
87815            Self::Mark(e) => e.spellcheck.as_ref(),
87816            Self::Q(e) => e.spellcheck.as_ref(),
87817            Self::Rp(e) => e.spellcheck.as_ref(),
87818            Self::Rt(e) => e.spellcheck.as_ref(),
87819            Self::Ruby(e) => e.spellcheck.as_ref(),
87820            Self::S(e) => e.spellcheck.as_ref(),
87821            Self::Samp(e) => e.spellcheck.as_ref(),
87822            Self::Small(e) => e.spellcheck.as_ref(),
87823            Self::Span(e) => e.spellcheck.as_ref(),
87824            Self::Strong(e) => e.spellcheck.as_ref(),
87825            Self::Sub(e) => e.spellcheck.as_ref(),
87826            Self::Sup(e) => e.spellcheck.as_ref(),
87827            Self::Time(e) => e.spellcheck.as_ref(),
87828            Self::U(e) => e.spellcheck.as_ref(),
87829            Self::Var(e) => e.spellcheck.as_ref(),
87830            Self::Wbr(e) => e.spellcheck.as_ref(),
87831            Self::Area(e) => e.spellcheck.as_ref(),
87832            Self::Audio(e) => e.spellcheck.as_ref(),
87833            Self::Img(e) => e.spellcheck.as_ref(),
87834            Self::Map(e) => e.spellcheck.as_ref(),
87835            Self::Track(e) => e.spellcheck.as_ref(),
87836            Self::Video(e) => e.spellcheck.as_ref(),
87837            Self::Embed(e) => e.spellcheck.as_ref(),
87838            Self::Iframe(e) => e.spellcheck.as_ref(),
87839            Self::Object(e) => e.spellcheck.as_ref(),
87840            Self::Picture(e) => e.spellcheck.as_ref(),
87841            Self::Portal(e) => e.spellcheck.as_ref(),
87842            Self::Source(e) => e.spellcheck.as_ref(),
87843            Self::Canvas(e) => e.spellcheck.as_ref(),
87844            Self::Noscript(e) => e.spellcheck.as_ref(),
87845            Self::Script(e) => e.spellcheck.as_ref(),
87846            Self::Del(e) => e.spellcheck.as_ref(),
87847            Self::Ins(e) => e.spellcheck.as_ref(),
87848            Self::Caption(e) => e.spellcheck.as_ref(),
87849            Self::Col(e) => e.spellcheck.as_ref(),
87850            Self::Colgroup(e) => e.spellcheck.as_ref(),
87851            Self::Table(e) => e.spellcheck.as_ref(),
87852            Self::Tbody(e) => e.spellcheck.as_ref(),
87853            Self::Td(e) => e.spellcheck.as_ref(),
87854            Self::Tfoot(e) => e.spellcheck.as_ref(),
87855            Self::Th(e) => e.spellcheck.as_ref(),
87856            Self::Thead(e) => e.spellcheck.as_ref(),
87857            Self::Tr(e) => e.spellcheck.as_ref(),
87858            Self::Button(e) => e.spellcheck.as_ref(),
87859            Self::Datalist(e) => e.spellcheck.as_ref(),
87860            Self::Fieldset(e) => e.spellcheck.as_ref(),
87861            Self::Form(e) => e.spellcheck.as_ref(),
87862            Self::Input(e) => e.spellcheck.as_ref(),
87863            Self::Label(e) => e.spellcheck.as_ref(),
87864            Self::Legend(e) => e.spellcheck.as_ref(),
87865            Self::Meter(e) => e.spellcheck.as_ref(),
87866            Self::Optgroup(e) => e.spellcheck.as_ref(),
87867            Self::Option(e) => e.spellcheck.as_ref(),
87868            Self::Output(e) => e.spellcheck.as_ref(),
87869            Self::Progress(e) => e.spellcheck.as_ref(),
87870            Self::Select(e) => e.spellcheck.as_ref(),
87871            Self::Textarea(e) => e.spellcheck.as_ref(),
87872            Self::Details(e) => e.spellcheck.as_ref(),
87873            Self::Dialog(e) => e.spellcheck.as_ref(),
87874            Self::Summary(e) => e.spellcheck.as_ref(),
87875            Self::Slot(e) => e.spellcheck.as_ref(),
87876            Self::Template(e) => e.spellcheck.as_ref(),
87877            Self::Acronym(e) => e.spellcheck.as_ref(),
87878            Self::Applet(e) => e.spellcheck.as_ref(),
87879            Self::Bgsound(e) => e.spellcheck.as_ref(),
87880            Self::Big(e) => e.spellcheck.as_ref(),
87881            Self::Blink(e) => e.spellcheck.as_ref(),
87882            Self::Center(e) => e.spellcheck.as_ref(),
87883            Self::Dir(e) => e.spellcheck.as_ref(),
87884            Self::Font(e) => e.spellcheck.as_ref(),
87885            Self::Frame(e) => e.spellcheck.as_ref(),
87886            Self::Frameset(e) => e.spellcheck.as_ref(),
87887            Self::Image(e) => e.spellcheck.as_ref(),
87888            Self::Keygen(e) => e.spellcheck.as_ref(),
87889            Self::Marquee(e) => e.spellcheck.as_ref(),
87890            Self::Menuitem(e) => e.spellcheck.as_ref(),
87891            Self::Nobr(e) => e.spellcheck.as_ref(),
87892            Self::Noembed(e) => e.spellcheck.as_ref(),
87893            Self::Noframes(e) => e.spellcheck.as_ref(),
87894            Self::Param(e) => e.spellcheck.as_ref(),
87895            Self::Plaintext(e) => e.spellcheck.as_ref(),
87896            Self::Rb(e) => e.spellcheck.as_ref(),
87897            Self::Rtc(e) => e.spellcheck.as_ref(),
87898            Self::Spacer(e) => e.spellcheck.as_ref(),
87899            Self::Strike(e) => e.spellcheck.as_ref(),
87900            Self::Tt(e) => e.spellcheck.as_ref(),
87901            Self::Xmp(e) => e.spellcheck.as_ref(),
87902            Self::H1(e) => e.spellcheck.as_ref(),
87903            Self::H2(e) => e.spellcheck.as_ref(),
87904            Self::H3(e) => e.spellcheck.as_ref(),
87905            Self::H4(e) => e.spellcheck.as_ref(),
87906            Self::H5(e) => e.spellcheck.as_ref(),
87907            Self::H6(e) => e.spellcheck.as_ref(),
87908            Self::Unknown(e) => e.spellcheck.as_ref(),
87909        }
87910    }
87911
87912    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
87913    ///   
87914    #[cfg(feature = "alloc")]
87915    pub fn style(&self) -> core::option::Option<&AttributeValueOwned> {
87916        match self {
87917            Self::Html(e) => e.style.as_ref(),
87918            Self::Base(e) => e.style.as_ref(),
87919            Self::Head(e) => e.style.as_ref(),
87920            Self::Link(e) => e.style.as_ref(),
87921            Self::Meta(e) => e.style.as_ref(),
87922            Self::Style(e) => e.style.as_ref(),
87923            Self::Title(e) => e.style.as_ref(),
87924            Self::Body(e) => e.style.as_ref(),
87925            Self::Address(e) => e.style.as_ref(),
87926            Self::Article(e) => e.style.as_ref(),
87927            Self::Aside(e) => e.style.as_ref(),
87928            Self::Footer(e) => e.style.as_ref(),
87929            Self::Header(e) => e.style.as_ref(),
87930            Self::Hgroup(e) => e.style.as_ref(),
87931            Self::Main(e) => e.style.as_ref(),
87932            Self::Nav(e) => e.style.as_ref(),
87933            Self::Section(e) => e.style.as_ref(),
87934            Self::Blockquote(e) => e.style.as_ref(),
87935            Self::Dd(e) => e.style.as_ref(),
87936            Self::Div(e) => e.style.as_ref(),
87937            Self::Dl(e) => e.style.as_ref(),
87938            Self::Dt(e) => e.style.as_ref(),
87939            Self::Figcaption(e) => e.style.as_ref(),
87940            Self::Figure(e) => e.style.as_ref(),
87941            Self::Hr(e) => e.style.as_ref(),
87942            Self::Li(e) => e.style.as_ref(),
87943            Self::Menu(e) => e.style.as_ref(),
87944            Self::Ol(e) => e.style.as_ref(),
87945            Self::P(e) => e.style.as_ref(),
87946            Self::Pre(e) => e.style.as_ref(),
87947            Self::Ul(e) => e.style.as_ref(),
87948            Self::A(e) => e.style.as_ref(),
87949            Self::Abbr(e) => e.style.as_ref(),
87950            Self::B(e) => e.style.as_ref(),
87951            Self::Bdi(e) => e.style.as_ref(),
87952            Self::Bdo(e) => e.style.as_ref(),
87953            Self::Br(e) => e.style.as_ref(),
87954            Self::Cite(e) => e.style.as_ref(),
87955            Self::Code(e) => e.style.as_ref(),
87956            Self::Data(e) => e.style.as_ref(),
87957            Self::Dfn(e) => e.style.as_ref(),
87958            Self::Em(e) => e.style.as_ref(),
87959            Self::I(e) => e.style.as_ref(),
87960            Self::Kbd(e) => e.style.as_ref(),
87961            Self::Mark(e) => e.style.as_ref(),
87962            Self::Q(e) => e.style.as_ref(),
87963            Self::Rp(e) => e.style.as_ref(),
87964            Self::Rt(e) => e.style.as_ref(),
87965            Self::Ruby(e) => e.style.as_ref(),
87966            Self::S(e) => e.style.as_ref(),
87967            Self::Samp(e) => e.style.as_ref(),
87968            Self::Small(e) => e.style.as_ref(),
87969            Self::Span(e) => e.style.as_ref(),
87970            Self::Strong(e) => e.style.as_ref(),
87971            Self::Sub(e) => e.style.as_ref(),
87972            Self::Sup(e) => e.style.as_ref(),
87973            Self::Time(e) => e.style.as_ref(),
87974            Self::U(e) => e.style.as_ref(),
87975            Self::Var(e) => e.style.as_ref(),
87976            Self::Wbr(e) => e.style.as_ref(),
87977            Self::Area(e) => e.style.as_ref(),
87978            Self::Audio(e) => e.style.as_ref(),
87979            Self::Img(e) => e.style.as_ref(),
87980            Self::Map(e) => e.style.as_ref(),
87981            Self::Track(e) => e.style.as_ref(),
87982            Self::Video(e) => e.style.as_ref(),
87983            Self::Embed(e) => e.style.as_ref(),
87984            Self::Iframe(e) => e.style.as_ref(),
87985            Self::Object(e) => e.style.as_ref(),
87986            Self::Picture(e) => e.style.as_ref(),
87987            Self::Portal(e) => e.style.as_ref(),
87988            Self::Source(e) => e.style.as_ref(),
87989            Self::Canvas(e) => e.style.as_ref(),
87990            Self::Noscript(e) => e.style.as_ref(),
87991            Self::Script(e) => e.style.as_ref(),
87992            Self::Del(e) => e.style.as_ref(),
87993            Self::Ins(e) => e.style.as_ref(),
87994            Self::Caption(e) => e.style.as_ref(),
87995            Self::Col(e) => e.style.as_ref(),
87996            Self::Colgroup(e) => e.style.as_ref(),
87997            Self::Table(e) => e.style.as_ref(),
87998            Self::Tbody(e) => e.style.as_ref(),
87999            Self::Td(e) => e.style.as_ref(),
88000            Self::Tfoot(e) => e.style.as_ref(),
88001            Self::Th(e) => e.style.as_ref(),
88002            Self::Thead(e) => e.style.as_ref(),
88003            Self::Tr(e) => e.style.as_ref(),
88004            Self::Button(e) => e.style.as_ref(),
88005            Self::Datalist(e) => e.style.as_ref(),
88006            Self::Fieldset(e) => e.style.as_ref(),
88007            Self::Form(e) => e.style.as_ref(),
88008            Self::Input(e) => e.style.as_ref(),
88009            Self::Label(e) => e.style.as_ref(),
88010            Self::Legend(e) => e.style.as_ref(),
88011            Self::Meter(e) => e.style.as_ref(),
88012            Self::Optgroup(e) => e.style.as_ref(),
88013            Self::Option(e) => e.style.as_ref(),
88014            Self::Output(e) => e.style.as_ref(),
88015            Self::Progress(e) => e.style.as_ref(),
88016            Self::Select(e) => e.style.as_ref(),
88017            Self::Textarea(e) => e.style.as_ref(),
88018            Self::Details(e) => e.style.as_ref(),
88019            Self::Dialog(e) => e.style.as_ref(),
88020            Self::Summary(e) => e.style.as_ref(),
88021            Self::Slot(e) => e.style.as_ref(),
88022            Self::Template(e) => e.style.as_ref(),
88023            Self::Acronym(e) => e.style.as_ref(),
88024            Self::Applet(e) => e.style.as_ref(),
88025            Self::Bgsound(e) => e.style.as_ref(),
88026            Self::Big(e) => e.style.as_ref(),
88027            Self::Blink(e) => e.style.as_ref(),
88028            Self::Center(e) => e.style.as_ref(),
88029            Self::Dir(e) => e.style.as_ref(),
88030            Self::Font(e) => e.style.as_ref(),
88031            Self::Frame(e) => e.style.as_ref(),
88032            Self::Frameset(e) => e.style.as_ref(),
88033            Self::Image(e) => e.style.as_ref(),
88034            Self::Keygen(e) => e.style.as_ref(),
88035            Self::Marquee(e) => e.style.as_ref(),
88036            Self::Menuitem(e) => e.style.as_ref(),
88037            Self::Nobr(e) => e.style.as_ref(),
88038            Self::Noembed(e) => e.style.as_ref(),
88039            Self::Noframes(e) => e.style.as_ref(),
88040            Self::Param(e) => e.style.as_ref(),
88041            Self::Plaintext(e) => e.style.as_ref(),
88042            Self::Rb(e) => e.style.as_ref(),
88043            Self::Rtc(e) => e.style.as_ref(),
88044            Self::Spacer(e) => e.style.as_ref(),
88045            Self::Strike(e) => e.style.as_ref(),
88046            Self::Tt(e) => e.style.as_ref(),
88047            Self::Xmp(e) => e.style.as_ref(),
88048            Self::H1(e) => e.style.as_ref(),
88049            Self::H2(e) => e.style.as_ref(),
88050            Self::H3(e) => e.style.as_ref(),
88051            Self::H4(e) => e.style.as_ref(),
88052            Self::H5(e) => e.style.as_ref(),
88053            Self::H6(e) => e.style.as_ref(),
88054            Self::Unknown(e) => e.style.as_ref(),
88055        }
88056    }
88057
88058    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
88059    ///     <ul>
88060    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
88061    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
88062    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
88063    ///     </ul>
88064    ///   
88065    #[cfg(feature = "alloc")]
88066    pub fn tabindex(&self) -> core::option::Option<&AttributeValueOwned> {
88067        match self {
88068            Self::Html(e) => e.tabindex.as_ref(),
88069            Self::Base(e) => e.tabindex.as_ref(),
88070            Self::Head(e) => e.tabindex.as_ref(),
88071            Self::Link(e) => e.tabindex.as_ref(),
88072            Self::Meta(e) => e.tabindex.as_ref(),
88073            Self::Style(e) => e.tabindex.as_ref(),
88074            Self::Title(e) => e.tabindex.as_ref(),
88075            Self::Body(e) => e.tabindex.as_ref(),
88076            Self::Address(e) => e.tabindex.as_ref(),
88077            Self::Article(e) => e.tabindex.as_ref(),
88078            Self::Aside(e) => e.tabindex.as_ref(),
88079            Self::Footer(e) => e.tabindex.as_ref(),
88080            Self::Header(e) => e.tabindex.as_ref(),
88081            Self::Hgroup(e) => e.tabindex.as_ref(),
88082            Self::Main(e) => e.tabindex.as_ref(),
88083            Self::Nav(e) => e.tabindex.as_ref(),
88084            Self::Section(e) => e.tabindex.as_ref(),
88085            Self::Blockquote(e) => e.tabindex.as_ref(),
88086            Self::Dd(e) => e.tabindex.as_ref(),
88087            Self::Div(e) => e.tabindex.as_ref(),
88088            Self::Dl(e) => e.tabindex.as_ref(),
88089            Self::Dt(e) => e.tabindex.as_ref(),
88090            Self::Figcaption(e) => e.tabindex.as_ref(),
88091            Self::Figure(e) => e.tabindex.as_ref(),
88092            Self::Hr(e) => e.tabindex.as_ref(),
88093            Self::Li(e) => e.tabindex.as_ref(),
88094            Self::Menu(e) => e.tabindex.as_ref(),
88095            Self::Ol(e) => e.tabindex.as_ref(),
88096            Self::P(e) => e.tabindex.as_ref(),
88097            Self::Pre(e) => e.tabindex.as_ref(),
88098            Self::Ul(e) => e.tabindex.as_ref(),
88099            Self::A(e) => e.tabindex.as_ref(),
88100            Self::Abbr(e) => e.tabindex.as_ref(),
88101            Self::B(e) => e.tabindex.as_ref(),
88102            Self::Bdi(e) => e.tabindex.as_ref(),
88103            Self::Bdo(e) => e.tabindex.as_ref(),
88104            Self::Br(e) => e.tabindex.as_ref(),
88105            Self::Cite(e) => e.tabindex.as_ref(),
88106            Self::Code(e) => e.tabindex.as_ref(),
88107            Self::Data(e) => e.tabindex.as_ref(),
88108            Self::Dfn(e) => e.tabindex.as_ref(),
88109            Self::Em(e) => e.tabindex.as_ref(),
88110            Self::I(e) => e.tabindex.as_ref(),
88111            Self::Kbd(e) => e.tabindex.as_ref(),
88112            Self::Mark(e) => e.tabindex.as_ref(),
88113            Self::Q(e) => e.tabindex.as_ref(),
88114            Self::Rp(e) => e.tabindex.as_ref(),
88115            Self::Rt(e) => e.tabindex.as_ref(),
88116            Self::Ruby(e) => e.tabindex.as_ref(),
88117            Self::S(e) => e.tabindex.as_ref(),
88118            Self::Samp(e) => e.tabindex.as_ref(),
88119            Self::Small(e) => e.tabindex.as_ref(),
88120            Self::Span(e) => e.tabindex.as_ref(),
88121            Self::Strong(e) => e.tabindex.as_ref(),
88122            Self::Sub(e) => e.tabindex.as_ref(),
88123            Self::Sup(e) => e.tabindex.as_ref(),
88124            Self::Time(e) => e.tabindex.as_ref(),
88125            Self::U(e) => e.tabindex.as_ref(),
88126            Self::Var(e) => e.tabindex.as_ref(),
88127            Self::Wbr(e) => e.tabindex.as_ref(),
88128            Self::Area(e) => e.tabindex.as_ref(),
88129            Self::Audio(e) => e.tabindex.as_ref(),
88130            Self::Img(e) => e.tabindex.as_ref(),
88131            Self::Map(e) => e.tabindex.as_ref(),
88132            Self::Track(e) => e.tabindex.as_ref(),
88133            Self::Video(e) => e.tabindex.as_ref(),
88134            Self::Embed(e) => e.tabindex.as_ref(),
88135            Self::Iframe(e) => e.tabindex.as_ref(),
88136            Self::Object(e) => e.tabindex.as_ref(),
88137            Self::Picture(e) => e.tabindex.as_ref(),
88138            Self::Portal(e) => e.tabindex.as_ref(),
88139            Self::Source(e) => e.tabindex.as_ref(),
88140            Self::Canvas(e) => e.tabindex.as_ref(),
88141            Self::Noscript(e) => e.tabindex.as_ref(),
88142            Self::Script(e) => e.tabindex.as_ref(),
88143            Self::Del(e) => e.tabindex.as_ref(),
88144            Self::Ins(e) => e.tabindex.as_ref(),
88145            Self::Caption(e) => e.tabindex.as_ref(),
88146            Self::Col(e) => e.tabindex.as_ref(),
88147            Self::Colgroup(e) => e.tabindex.as_ref(),
88148            Self::Table(e) => e.tabindex.as_ref(),
88149            Self::Tbody(e) => e.tabindex.as_ref(),
88150            Self::Td(e) => e.tabindex.as_ref(),
88151            Self::Tfoot(e) => e.tabindex.as_ref(),
88152            Self::Th(e) => e.tabindex.as_ref(),
88153            Self::Thead(e) => e.tabindex.as_ref(),
88154            Self::Tr(e) => e.tabindex.as_ref(),
88155            Self::Button(e) => e.tabindex.as_ref(),
88156            Self::Datalist(e) => e.tabindex.as_ref(),
88157            Self::Fieldset(e) => e.tabindex.as_ref(),
88158            Self::Form(e) => e.tabindex.as_ref(),
88159            Self::Input(e) => e.tabindex.as_ref(),
88160            Self::Label(e) => e.tabindex.as_ref(),
88161            Self::Legend(e) => e.tabindex.as_ref(),
88162            Self::Meter(e) => e.tabindex.as_ref(),
88163            Self::Optgroup(e) => e.tabindex.as_ref(),
88164            Self::Option(e) => e.tabindex.as_ref(),
88165            Self::Output(e) => e.tabindex.as_ref(),
88166            Self::Progress(e) => e.tabindex.as_ref(),
88167            Self::Select(e) => e.tabindex.as_ref(),
88168            Self::Textarea(e) => e.tabindex.as_ref(),
88169            Self::Details(e) => e.tabindex.as_ref(),
88170            Self::Dialog(e) => e.tabindex.as_ref(),
88171            Self::Summary(e) => e.tabindex.as_ref(),
88172            Self::Slot(e) => e.tabindex.as_ref(),
88173            Self::Template(e) => e.tabindex.as_ref(),
88174            Self::Acronym(e) => e.tabindex.as_ref(),
88175            Self::Applet(e) => e.tabindex.as_ref(),
88176            Self::Bgsound(e) => e.tabindex.as_ref(),
88177            Self::Big(e) => e.tabindex.as_ref(),
88178            Self::Blink(e) => e.tabindex.as_ref(),
88179            Self::Center(e) => e.tabindex.as_ref(),
88180            Self::Dir(e) => e.tabindex.as_ref(),
88181            Self::Font(e) => e.tabindex.as_ref(),
88182            Self::Frame(e) => e.tabindex.as_ref(),
88183            Self::Frameset(e) => e.tabindex.as_ref(),
88184            Self::Image(e) => e.tabindex.as_ref(),
88185            Self::Keygen(e) => e.tabindex.as_ref(),
88186            Self::Marquee(e) => e.tabindex.as_ref(),
88187            Self::Menuitem(e) => e.tabindex.as_ref(),
88188            Self::Nobr(e) => e.tabindex.as_ref(),
88189            Self::Noembed(e) => e.tabindex.as_ref(),
88190            Self::Noframes(e) => e.tabindex.as_ref(),
88191            Self::Param(e) => e.tabindex.as_ref(),
88192            Self::Plaintext(e) => e.tabindex.as_ref(),
88193            Self::Rb(e) => e.tabindex.as_ref(),
88194            Self::Rtc(e) => e.tabindex.as_ref(),
88195            Self::Spacer(e) => e.tabindex.as_ref(),
88196            Self::Strike(e) => e.tabindex.as_ref(),
88197            Self::Tt(e) => e.tabindex.as_ref(),
88198            Self::Xmp(e) => e.tabindex.as_ref(),
88199            Self::H1(e) => e.tabindex.as_ref(),
88200            Self::H2(e) => e.tabindex.as_ref(),
88201            Self::H3(e) => e.tabindex.as_ref(),
88202            Self::H4(e) => e.tabindex.as_ref(),
88203            Self::H5(e) => e.tabindex.as_ref(),
88204            Self::H6(e) => e.tabindex.as_ref(),
88205            Self::Unknown(e) => e.tabindex.as_ref(),
88206        }
88207    }
88208
88209    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
88210    ///   
88211    #[cfg(feature = "alloc")]
88212    pub fn title(&self) -> core::option::Option<&AttributeValueOwned> {
88213        match self {
88214            Self::Html(e) => e.title.as_ref(),
88215            Self::Base(e) => e.title.as_ref(),
88216            Self::Head(e) => e.title.as_ref(),
88217            Self::Link(e) => e.title.as_ref(),
88218            Self::Meta(e) => e.title.as_ref(),
88219            Self::Style(e) => e.title.as_ref(),
88220            Self::Title(e) => e.title.as_ref(),
88221            Self::Body(e) => e.title.as_ref(),
88222            Self::Address(e) => e.title.as_ref(),
88223            Self::Article(e) => e.title.as_ref(),
88224            Self::Aside(e) => e.title.as_ref(),
88225            Self::Footer(e) => e.title.as_ref(),
88226            Self::Header(e) => e.title.as_ref(),
88227            Self::Hgroup(e) => e.title.as_ref(),
88228            Self::Main(e) => e.title.as_ref(),
88229            Self::Nav(e) => e.title.as_ref(),
88230            Self::Section(e) => e.title.as_ref(),
88231            Self::Blockquote(e) => e.title.as_ref(),
88232            Self::Dd(e) => e.title.as_ref(),
88233            Self::Div(e) => e.title.as_ref(),
88234            Self::Dl(e) => e.title.as_ref(),
88235            Self::Dt(e) => e.title.as_ref(),
88236            Self::Figcaption(e) => e.title.as_ref(),
88237            Self::Figure(e) => e.title.as_ref(),
88238            Self::Hr(e) => e.title.as_ref(),
88239            Self::Li(e) => e.title.as_ref(),
88240            Self::Menu(e) => e.title.as_ref(),
88241            Self::Ol(e) => e.title.as_ref(),
88242            Self::P(e) => e.title.as_ref(),
88243            Self::Pre(e) => e.title.as_ref(),
88244            Self::Ul(e) => e.title.as_ref(),
88245            Self::A(e) => e.title.as_ref(),
88246            Self::Abbr(e) => e.title.as_ref(),
88247            Self::B(e) => e.title.as_ref(),
88248            Self::Bdi(e) => e.title.as_ref(),
88249            Self::Bdo(e) => e.title.as_ref(),
88250            Self::Br(e) => e.title.as_ref(),
88251            Self::Cite(e) => e.title.as_ref(),
88252            Self::Code(e) => e.title.as_ref(),
88253            Self::Data(e) => e.title.as_ref(),
88254            Self::Dfn(e) => e.title.as_ref(),
88255            Self::Em(e) => e.title.as_ref(),
88256            Self::I(e) => e.title.as_ref(),
88257            Self::Kbd(e) => e.title.as_ref(),
88258            Self::Mark(e) => e.title.as_ref(),
88259            Self::Q(e) => e.title.as_ref(),
88260            Self::Rp(e) => e.title.as_ref(),
88261            Self::Rt(e) => e.title.as_ref(),
88262            Self::Ruby(e) => e.title.as_ref(),
88263            Self::S(e) => e.title.as_ref(),
88264            Self::Samp(e) => e.title.as_ref(),
88265            Self::Small(e) => e.title.as_ref(),
88266            Self::Span(e) => e.title.as_ref(),
88267            Self::Strong(e) => e.title.as_ref(),
88268            Self::Sub(e) => e.title.as_ref(),
88269            Self::Sup(e) => e.title.as_ref(),
88270            Self::Time(e) => e.title.as_ref(),
88271            Self::U(e) => e.title.as_ref(),
88272            Self::Var(e) => e.title.as_ref(),
88273            Self::Wbr(e) => e.title.as_ref(),
88274            Self::Area(e) => e.title.as_ref(),
88275            Self::Audio(e) => e.title.as_ref(),
88276            Self::Img(e) => e.title.as_ref(),
88277            Self::Map(e) => e.title.as_ref(),
88278            Self::Track(e) => e.title.as_ref(),
88279            Self::Video(e) => e.title.as_ref(),
88280            Self::Embed(e) => e.title.as_ref(),
88281            Self::Iframe(e) => e.title.as_ref(),
88282            Self::Object(e) => e.title.as_ref(),
88283            Self::Picture(e) => e.title.as_ref(),
88284            Self::Portal(e) => e.title.as_ref(),
88285            Self::Source(e) => e.title.as_ref(),
88286            Self::Canvas(e) => e.title.as_ref(),
88287            Self::Noscript(e) => e.title.as_ref(),
88288            Self::Script(e) => e.title.as_ref(),
88289            Self::Del(e) => e.title.as_ref(),
88290            Self::Ins(e) => e.title.as_ref(),
88291            Self::Caption(e) => e.title.as_ref(),
88292            Self::Col(e) => e.title.as_ref(),
88293            Self::Colgroup(e) => e.title.as_ref(),
88294            Self::Table(e) => e.title.as_ref(),
88295            Self::Tbody(e) => e.title.as_ref(),
88296            Self::Td(e) => e.title.as_ref(),
88297            Self::Tfoot(e) => e.title.as_ref(),
88298            Self::Th(e) => e.title.as_ref(),
88299            Self::Thead(e) => e.title.as_ref(),
88300            Self::Tr(e) => e.title.as_ref(),
88301            Self::Button(e) => e.title.as_ref(),
88302            Self::Datalist(e) => e.title.as_ref(),
88303            Self::Fieldset(e) => e.title.as_ref(),
88304            Self::Form(e) => e.title.as_ref(),
88305            Self::Input(e) => e.title.as_ref(),
88306            Self::Label(e) => e.title.as_ref(),
88307            Self::Legend(e) => e.title.as_ref(),
88308            Self::Meter(e) => e.title.as_ref(),
88309            Self::Optgroup(e) => e.title.as_ref(),
88310            Self::Option(e) => e.title.as_ref(),
88311            Self::Output(e) => e.title.as_ref(),
88312            Self::Progress(e) => e.title.as_ref(),
88313            Self::Select(e) => e.title.as_ref(),
88314            Self::Textarea(e) => e.title.as_ref(),
88315            Self::Details(e) => e.title.as_ref(),
88316            Self::Dialog(e) => e.title.as_ref(),
88317            Self::Summary(e) => e.title.as_ref(),
88318            Self::Slot(e) => e.title.as_ref(),
88319            Self::Template(e) => e.title.as_ref(),
88320            Self::Acronym(e) => e.title.as_ref(),
88321            Self::Applet(e) => e.title.as_ref(),
88322            Self::Bgsound(e) => e.title.as_ref(),
88323            Self::Big(e) => e.title.as_ref(),
88324            Self::Blink(e) => e.title.as_ref(),
88325            Self::Center(e) => e.title.as_ref(),
88326            Self::Dir(e) => e.title.as_ref(),
88327            Self::Font(e) => e.title.as_ref(),
88328            Self::Frame(e) => e.title.as_ref(),
88329            Self::Frameset(e) => e.title.as_ref(),
88330            Self::Image(e) => e.title.as_ref(),
88331            Self::Keygen(e) => e.title.as_ref(),
88332            Self::Marquee(e) => e.title.as_ref(),
88333            Self::Menuitem(e) => e.title.as_ref(),
88334            Self::Nobr(e) => e.title.as_ref(),
88335            Self::Noembed(e) => e.title.as_ref(),
88336            Self::Noframes(e) => e.title.as_ref(),
88337            Self::Param(e) => e.title.as_ref(),
88338            Self::Plaintext(e) => e.title.as_ref(),
88339            Self::Rb(e) => e.title.as_ref(),
88340            Self::Rtc(e) => e.title.as_ref(),
88341            Self::Spacer(e) => e.title.as_ref(),
88342            Self::Strike(e) => e.title.as_ref(),
88343            Self::Tt(e) => e.title.as_ref(),
88344            Self::Xmp(e) => e.title.as_ref(),
88345            Self::H1(e) => e.title.as_ref(),
88346            Self::H2(e) => e.title.as_ref(),
88347            Self::H3(e) => e.title.as_ref(),
88348            Self::H4(e) => e.title.as_ref(),
88349            Self::H5(e) => e.title.as_ref(),
88350            Self::H6(e) => e.title.as_ref(),
88351            Self::Unknown(e) => e.title.as_ref(),
88352        }
88353    }
88354
88355    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
88356    ///     <ul>
88357    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
88358    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
88359    ///     </ul>
88360    ///   
88361    #[cfg(feature = "alloc")]
88362    pub fn translate(&self) -> core::option::Option<&AttributeValueOwned> {
88363        match self {
88364            Self::Html(e) => e.translate.as_ref(),
88365            Self::Base(e) => e.translate.as_ref(),
88366            Self::Head(e) => e.translate.as_ref(),
88367            Self::Link(e) => e.translate.as_ref(),
88368            Self::Meta(e) => e.translate.as_ref(),
88369            Self::Style(e) => e.translate.as_ref(),
88370            Self::Title(e) => e.translate.as_ref(),
88371            Self::Body(e) => e.translate.as_ref(),
88372            Self::Address(e) => e.translate.as_ref(),
88373            Self::Article(e) => e.translate.as_ref(),
88374            Self::Aside(e) => e.translate.as_ref(),
88375            Self::Footer(e) => e.translate.as_ref(),
88376            Self::Header(e) => e.translate.as_ref(),
88377            Self::Hgroup(e) => e.translate.as_ref(),
88378            Self::Main(e) => e.translate.as_ref(),
88379            Self::Nav(e) => e.translate.as_ref(),
88380            Self::Section(e) => e.translate.as_ref(),
88381            Self::Blockquote(e) => e.translate.as_ref(),
88382            Self::Dd(e) => e.translate.as_ref(),
88383            Self::Div(e) => e.translate.as_ref(),
88384            Self::Dl(e) => e.translate.as_ref(),
88385            Self::Dt(e) => e.translate.as_ref(),
88386            Self::Figcaption(e) => e.translate.as_ref(),
88387            Self::Figure(e) => e.translate.as_ref(),
88388            Self::Hr(e) => e.translate.as_ref(),
88389            Self::Li(e) => e.translate.as_ref(),
88390            Self::Menu(e) => e.translate.as_ref(),
88391            Self::Ol(e) => e.translate.as_ref(),
88392            Self::P(e) => e.translate.as_ref(),
88393            Self::Pre(e) => e.translate.as_ref(),
88394            Self::Ul(e) => e.translate.as_ref(),
88395            Self::A(e) => e.translate.as_ref(),
88396            Self::Abbr(e) => e.translate.as_ref(),
88397            Self::B(e) => e.translate.as_ref(),
88398            Self::Bdi(e) => e.translate.as_ref(),
88399            Self::Bdo(e) => e.translate.as_ref(),
88400            Self::Br(e) => e.translate.as_ref(),
88401            Self::Cite(e) => e.translate.as_ref(),
88402            Self::Code(e) => e.translate.as_ref(),
88403            Self::Data(e) => e.translate.as_ref(),
88404            Self::Dfn(e) => e.translate.as_ref(),
88405            Self::Em(e) => e.translate.as_ref(),
88406            Self::I(e) => e.translate.as_ref(),
88407            Self::Kbd(e) => e.translate.as_ref(),
88408            Self::Mark(e) => e.translate.as_ref(),
88409            Self::Q(e) => e.translate.as_ref(),
88410            Self::Rp(e) => e.translate.as_ref(),
88411            Self::Rt(e) => e.translate.as_ref(),
88412            Self::Ruby(e) => e.translate.as_ref(),
88413            Self::S(e) => e.translate.as_ref(),
88414            Self::Samp(e) => e.translate.as_ref(),
88415            Self::Small(e) => e.translate.as_ref(),
88416            Self::Span(e) => e.translate.as_ref(),
88417            Self::Strong(e) => e.translate.as_ref(),
88418            Self::Sub(e) => e.translate.as_ref(),
88419            Self::Sup(e) => e.translate.as_ref(),
88420            Self::Time(e) => e.translate.as_ref(),
88421            Self::U(e) => e.translate.as_ref(),
88422            Self::Var(e) => e.translate.as_ref(),
88423            Self::Wbr(e) => e.translate.as_ref(),
88424            Self::Area(e) => e.translate.as_ref(),
88425            Self::Audio(e) => e.translate.as_ref(),
88426            Self::Img(e) => e.translate.as_ref(),
88427            Self::Map(e) => e.translate.as_ref(),
88428            Self::Track(e) => e.translate.as_ref(),
88429            Self::Video(e) => e.translate.as_ref(),
88430            Self::Embed(e) => e.translate.as_ref(),
88431            Self::Iframe(e) => e.translate.as_ref(),
88432            Self::Object(e) => e.translate.as_ref(),
88433            Self::Picture(e) => e.translate.as_ref(),
88434            Self::Portal(e) => e.translate.as_ref(),
88435            Self::Source(e) => e.translate.as_ref(),
88436            Self::Canvas(e) => e.translate.as_ref(),
88437            Self::Noscript(e) => e.translate.as_ref(),
88438            Self::Script(e) => e.translate.as_ref(),
88439            Self::Del(e) => e.translate.as_ref(),
88440            Self::Ins(e) => e.translate.as_ref(),
88441            Self::Caption(e) => e.translate.as_ref(),
88442            Self::Col(e) => e.translate.as_ref(),
88443            Self::Colgroup(e) => e.translate.as_ref(),
88444            Self::Table(e) => e.translate.as_ref(),
88445            Self::Tbody(e) => e.translate.as_ref(),
88446            Self::Td(e) => e.translate.as_ref(),
88447            Self::Tfoot(e) => e.translate.as_ref(),
88448            Self::Th(e) => e.translate.as_ref(),
88449            Self::Thead(e) => e.translate.as_ref(),
88450            Self::Tr(e) => e.translate.as_ref(),
88451            Self::Button(e) => e.translate.as_ref(),
88452            Self::Datalist(e) => e.translate.as_ref(),
88453            Self::Fieldset(e) => e.translate.as_ref(),
88454            Self::Form(e) => e.translate.as_ref(),
88455            Self::Input(e) => e.translate.as_ref(),
88456            Self::Label(e) => e.translate.as_ref(),
88457            Self::Legend(e) => e.translate.as_ref(),
88458            Self::Meter(e) => e.translate.as_ref(),
88459            Self::Optgroup(e) => e.translate.as_ref(),
88460            Self::Option(e) => e.translate.as_ref(),
88461            Self::Output(e) => e.translate.as_ref(),
88462            Self::Progress(e) => e.translate.as_ref(),
88463            Self::Select(e) => e.translate.as_ref(),
88464            Self::Textarea(e) => e.translate.as_ref(),
88465            Self::Details(e) => e.translate.as_ref(),
88466            Self::Dialog(e) => e.translate.as_ref(),
88467            Self::Summary(e) => e.translate.as_ref(),
88468            Self::Slot(e) => e.translate.as_ref(),
88469            Self::Template(e) => e.translate.as_ref(),
88470            Self::Acronym(e) => e.translate.as_ref(),
88471            Self::Applet(e) => e.translate.as_ref(),
88472            Self::Bgsound(e) => e.translate.as_ref(),
88473            Self::Big(e) => e.translate.as_ref(),
88474            Self::Blink(e) => e.translate.as_ref(),
88475            Self::Center(e) => e.translate.as_ref(),
88476            Self::Dir(e) => e.translate.as_ref(),
88477            Self::Font(e) => e.translate.as_ref(),
88478            Self::Frame(e) => e.translate.as_ref(),
88479            Self::Frameset(e) => e.translate.as_ref(),
88480            Self::Image(e) => e.translate.as_ref(),
88481            Self::Keygen(e) => e.translate.as_ref(),
88482            Self::Marquee(e) => e.translate.as_ref(),
88483            Self::Menuitem(e) => e.translate.as_ref(),
88484            Self::Nobr(e) => e.translate.as_ref(),
88485            Self::Noembed(e) => e.translate.as_ref(),
88486            Self::Noframes(e) => e.translate.as_ref(),
88487            Self::Param(e) => e.translate.as_ref(),
88488            Self::Plaintext(e) => e.translate.as_ref(),
88489            Self::Rb(e) => e.translate.as_ref(),
88490            Self::Rtc(e) => e.translate.as_ref(),
88491            Self::Spacer(e) => e.translate.as_ref(),
88492            Self::Strike(e) => e.translate.as_ref(),
88493            Self::Tt(e) => e.translate.as_ref(),
88494            Self::Xmp(e) => e.translate.as_ref(),
88495            Self::H1(e) => e.translate.as_ref(),
88496            Self::H2(e) => e.translate.as_ref(),
88497            Self::H3(e) => e.translate.as_ref(),
88498            Self::H4(e) => e.translate.as_ref(),
88499            Self::H5(e) => e.translate.as_ref(),
88500            Self::H6(e) => e.translate.as_ref(),
88501            Self::Unknown(e) => e.translate.as_ref(),
88502        }
88503    }
88504
88505    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
88506    ///     <ul>
88507    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
88508    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
88509    ///     </ul>
88510    ///   
88511    #[cfg(feature = "alloc")]
88512    pub fn virtualkeyboardpolicy(&self) -> core::option::Option<&AttributeValueOwned> {
88513        match self {
88514            Self::Html(e) => e.virtualkeyboardpolicy.as_ref(),
88515            Self::Base(e) => e.virtualkeyboardpolicy.as_ref(),
88516            Self::Head(e) => e.virtualkeyboardpolicy.as_ref(),
88517            Self::Link(e) => e.virtualkeyboardpolicy.as_ref(),
88518            Self::Meta(e) => e.virtualkeyboardpolicy.as_ref(),
88519            Self::Style(e) => e.virtualkeyboardpolicy.as_ref(),
88520            Self::Title(e) => e.virtualkeyboardpolicy.as_ref(),
88521            Self::Body(e) => e.virtualkeyboardpolicy.as_ref(),
88522            Self::Address(e) => e.virtualkeyboardpolicy.as_ref(),
88523            Self::Article(e) => e.virtualkeyboardpolicy.as_ref(),
88524            Self::Aside(e) => e.virtualkeyboardpolicy.as_ref(),
88525            Self::Footer(e) => e.virtualkeyboardpolicy.as_ref(),
88526            Self::Header(e) => e.virtualkeyboardpolicy.as_ref(),
88527            Self::Hgroup(e) => e.virtualkeyboardpolicy.as_ref(),
88528            Self::Main(e) => e.virtualkeyboardpolicy.as_ref(),
88529            Self::Nav(e) => e.virtualkeyboardpolicy.as_ref(),
88530            Self::Section(e) => e.virtualkeyboardpolicy.as_ref(),
88531            Self::Blockquote(e) => e.virtualkeyboardpolicy.as_ref(),
88532            Self::Dd(e) => e.virtualkeyboardpolicy.as_ref(),
88533            Self::Div(e) => e.virtualkeyboardpolicy.as_ref(),
88534            Self::Dl(e) => e.virtualkeyboardpolicy.as_ref(),
88535            Self::Dt(e) => e.virtualkeyboardpolicy.as_ref(),
88536            Self::Figcaption(e) => e.virtualkeyboardpolicy.as_ref(),
88537            Self::Figure(e) => e.virtualkeyboardpolicy.as_ref(),
88538            Self::Hr(e) => e.virtualkeyboardpolicy.as_ref(),
88539            Self::Li(e) => e.virtualkeyboardpolicy.as_ref(),
88540            Self::Menu(e) => e.virtualkeyboardpolicy.as_ref(),
88541            Self::Ol(e) => e.virtualkeyboardpolicy.as_ref(),
88542            Self::P(e) => e.virtualkeyboardpolicy.as_ref(),
88543            Self::Pre(e) => e.virtualkeyboardpolicy.as_ref(),
88544            Self::Ul(e) => e.virtualkeyboardpolicy.as_ref(),
88545            Self::A(e) => e.virtualkeyboardpolicy.as_ref(),
88546            Self::Abbr(e) => e.virtualkeyboardpolicy.as_ref(),
88547            Self::B(e) => e.virtualkeyboardpolicy.as_ref(),
88548            Self::Bdi(e) => e.virtualkeyboardpolicy.as_ref(),
88549            Self::Bdo(e) => e.virtualkeyboardpolicy.as_ref(),
88550            Self::Br(e) => e.virtualkeyboardpolicy.as_ref(),
88551            Self::Cite(e) => e.virtualkeyboardpolicy.as_ref(),
88552            Self::Code(e) => e.virtualkeyboardpolicy.as_ref(),
88553            Self::Data(e) => e.virtualkeyboardpolicy.as_ref(),
88554            Self::Dfn(e) => e.virtualkeyboardpolicy.as_ref(),
88555            Self::Em(e) => e.virtualkeyboardpolicy.as_ref(),
88556            Self::I(e) => e.virtualkeyboardpolicy.as_ref(),
88557            Self::Kbd(e) => e.virtualkeyboardpolicy.as_ref(),
88558            Self::Mark(e) => e.virtualkeyboardpolicy.as_ref(),
88559            Self::Q(e) => e.virtualkeyboardpolicy.as_ref(),
88560            Self::Rp(e) => e.virtualkeyboardpolicy.as_ref(),
88561            Self::Rt(e) => e.virtualkeyboardpolicy.as_ref(),
88562            Self::Ruby(e) => e.virtualkeyboardpolicy.as_ref(),
88563            Self::S(e) => e.virtualkeyboardpolicy.as_ref(),
88564            Self::Samp(e) => e.virtualkeyboardpolicy.as_ref(),
88565            Self::Small(e) => e.virtualkeyboardpolicy.as_ref(),
88566            Self::Span(e) => e.virtualkeyboardpolicy.as_ref(),
88567            Self::Strong(e) => e.virtualkeyboardpolicy.as_ref(),
88568            Self::Sub(e) => e.virtualkeyboardpolicy.as_ref(),
88569            Self::Sup(e) => e.virtualkeyboardpolicy.as_ref(),
88570            Self::Time(e) => e.virtualkeyboardpolicy.as_ref(),
88571            Self::U(e) => e.virtualkeyboardpolicy.as_ref(),
88572            Self::Var(e) => e.virtualkeyboardpolicy.as_ref(),
88573            Self::Wbr(e) => e.virtualkeyboardpolicy.as_ref(),
88574            Self::Area(e) => e.virtualkeyboardpolicy.as_ref(),
88575            Self::Audio(e) => e.virtualkeyboardpolicy.as_ref(),
88576            Self::Img(e) => e.virtualkeyboardpolicy.as_ref(),
88577            Self::Map(e) => e.virtualkeyboardpolicy.as_ref(),
88578            Self::Track(e) => e.virtualkeyboardpolicy.as_ref(),
88579            Self::Video(e) => e.virtualkeyboardpolicy.as_ref(),
88580            Self::Embed(e) => e.virtualkeyboardpolicy.as_ref(),
88581            Self::Iframe(e) => e.virtualkeyboardpolicy.as_ref(),
88582            Self::Object(e) => e.virtualkeyboardpolicy.as_ref(),
88583            Self::Picture(e) => e.virtualkeyboardpolicy.as_ref(),
88584            Self::Portal(e) => e.virtualkeyboardpolicy.as_ref(),
88585            Self::Source(e) => e.virtualkeyboardpolicy.as_ref(),
88586            Self::Canvas(e) => e.virtualkeyboardpolicy.as_ref(),
88587            Self::Noscript(e) => e.virtualkeyboardpolicy.as_ref(),
88588            Self::Script(e) => e.virtualkeyboardpolicy.as_ref(),
88589            Self::Del(e) => e.virtualkeyboardpolicy.as_ref(),
88590            Self::Ins(e) => e.virtualkeyboardpolicy.as_ref(),
88591            Self::Caption(e) => e.virtualkeyboardpolicy.as_ref(),
88592            Self::Col(e) => e.virtualkeyboardpolicy.as_ref(),
88593            Self::Colgroup(e) => e.virtualkeyboardpolicy.as_ref(),
88594            Self::Table(e) => e.virtualkeyboardpolicy.as_ref(),
88595            Self::Tbody(e) => e.virtualkeyboardpolicy.as_ref(),
88596            Self::Td(e) => e.virtualkeyboardpolicy.as_ref(),
88597            Self::Tfoot(e) => e.virtualkeyboardpolicy.as_ref(),
88598            Self::Th(e) => e.virtualkeyboardpolicy.as_ref(),
88599            Self::Thead(e) => e.virtualkeyboardpolicy.as_ref(),
88600            Self::Tr(e) => e.virtualkeyboardpolicy.as_ref(),
88601            Self::Button(e) => e.virtualkeyboardpolicy.as_ref(),
88602            Self::Datalist(e) => e.virtualkeyboardpolicy.as_ref(),
88603            Self::Fieldset(e) => e.virtualkeyboardpolicy.as_ref(),
88604            Self::Form(e) => e.virtualkeyboardpolicy.as_ref(),
88605            Self::Input(e) => e.virtualkeyboardpolicy.as_ref(),
88606            Self::Label(e) => e.virtualkeyboardpolicy.as_ref(),
88607            Self::Legend(e) => e.virtualkeyboardpolicy.as_ref(),
88608            Self::Meter(e) => e.virtualkeyboardpolicy.as_ref(),
88609            Self::Optgroup(e) => e.virtualkeyboardpolicy.as_ref(),
88610            Self::Option(e) => e.virtualkeyboardpolicy.as_ref(),
88611            Self::Output(e) => e.virtualkeyboardpolicy.as_ref(),
88612            Self::Progress(e) => e.virtualkeyboardpolicy.as_ref(),
88613            Self::Select(e) => e.virtualkeyboardpolicy.as_ref(),
88614            Self::Textarea(e) => e.virtualkeyboardpolicy.as_ref(),
88615            Self::Details(e) => e.virtualkeyboardpolicy.as_ref(),
88616            Self::Dialog(e) => e.virtualkeyboardpolicy.as_ref(),
88617            Self::Summary(e) => e.virtualkeyboardpolicy.as_ref(),
88618            Self::Slot(e) => e.virtualkeyboardpolicy.as_ref(),
88619            Self::Template(e) => e.virtualkeyboardpolicy.as_ref(),
88620            Self::Acronym(e) => e.virtualkeyboardpolicy.as_ref(),
88621            Self::Applet(e) => e.virtualkeyboardpolicy.as_ref(),
88622            Self::Bgsound(e) => e.virtualkeyboardpolicy.as_ref(),
88623            Self::Big(e) => e.virtualkeyboardpolicy.as_ref(),
88624            Self::Blink(e) => e.virtualkeyboardpolicy.as_ref(),
88625            Self::Center(e) => e.virtualkeyboardpolicy.as_ref(),
88626            Self::Dir(e) => e.virtualkeyboardpolicy.as_ref(),
88627            Self::Font(e) => e.virtualkeyboardpolicy.as_ref(),
88628            Self::Frame(e) => e.virtualkeyboardpolicy.as_ref(),
88629            Self::Frameset(e) => e.virtualkeyboardpolicy.as_ref(),
88630            Self::Image(e) => e.virtualkeyboardpolicy.as_ref(),
88631            Self::Keygen(e) => e.virtualkeyboardpolicy.as_ref(),
88632            Self::Marquee(e) => e.virtualkeyboardpolicy.as_ref(),
88633            Self::Menuitem(e) => e.virtualkeyboardpolicy.as_ref(),
88634            Self::Nobr(e) => e.virtualkeyboardpolicy.as_ref(),
88635            Self::Noembed(e) => e.virtualkeyboardpolicy.as_ref(),
88636            Self::Noframes(e) => e.virtualkeyboardpolicy.as_ref(),
88637            Self::Param(e) => e.virtualkeyboardpolicy.as_ref(),
88638            Self::Plaintext(e) => e.virtualkeyboardpolicy.as_ref(),
88639            Self::Rb(e) => e.virtualkeyboardpolicy.as_ref(),
88640            Self::Rtc(e) => e.virtualkeyboardpolicy.as_ref(),
88641            Self::Spacer(e) => e.virtualkeyboardpolicy.as_ref(),
88642            Self::Strike(e) => e.virtualkeyboardpolicy.as_ref(),
88643            Self::Tt(e) => e.virtualkeyboardpolicy.as_ref(),
88644            Self::Xmp(e) => e.virtualkeyboardpolicy.as_ref(),
88645            Self::H1(e) => e.virtualkeyboardpolicy.as_ref(),
88646            Self::H2(e) => e.virtualkeyboardpolicy.as_ref(),
88647            Self::H3(e) => e.virtualkeyboardpolicy.as_ref(),
88648            Self::H4(e) => e.virtualkeyboardpolicy.as_ref(),
88649            Self::H5(e) => e.virtualkeyboardpolicy.as_ref(),
88650            Self::H6(e) => e.virtualkeyboardpolicy.as_ref(),
88651            Self::Unknown(e) => e.virtualkeyboardpolicy.as_ref(),
88652        }
88653    }
88654
88655    ///     <p>Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.</p>
88656    ///   
88657    #[cfg(feature = "alloc")]
88658    pub fn set_accesskey(&mut self, val: AttributeValueOwned) {
88659        match self {
88660            Self::Html(e) => e.accesskey.replace(val),
88661            Self::Base(e) => e.accesskey.replace(val),
88662            Self::Head(e) => e.accesskey.replace(val),
88663            Self::Link(e) => e.accesskey.replace(val),
88664            Self::Meta(e) => e.accesskey.replace(val),
88665            Self::Style(e) => e.accesskey.replace(val),
88666            Self::Title(e) => e.accesskey.replace(val),
88667            Self::Body(e) => e.accesskey.replace(val),
88668            Self::Address(e) => e.accesskey.replace(val),
88669            Self::Article(e) => e.accesskey.replace(val),
88670            Self::Aside(e) => e.accesskey.replace(val),
88671            Self::Footer(e) => e.accesskey.replace(val),
88672            Self::Header(e) => e.accesskey.replace(val),
88673            Self::Hgroup(e) => e.accesskey.replace(val),
88674            Self::Main(e) => e.accesskey.replace(val),
88675            Self::Nav(e) => e.accesskey.replace(val),
88676            Self::Section(e) => e.accesskey.replace(val),
88677            Self::Blockquote(e) => e.accesskey.replace(val),
88678            Self::Dd(e) => e.accesskey.replace(val),
88679            Self::Div(e) => e.accesskey.replace(val),
88680            Self::Dl(e) => e.accesskey.replace(val),
88681            Self::Dt(e) => e.accesskey.replace(val),
88682            Self::Figcaption(e) => e.accesskey.replace(val),
88683            Self::Figure(e) => e.accesskey.replace(val),
88684            Self::Hr(e) => e.accesskey.replace(val),
88685            Self::Li(e) => e.accesskey.replace(val),
88686            Self::Menu(e) => e.accesskey.replace(val),
88687            Self::Ol(e) => e.accesskey.replace(val),
88688            Self::P(e) => e.accesskey.replace(val),
88689            Self::Pre(e) => e.accesskey.replace(val),
88690            Self::Ul(e) => e.accesskey.replace(val),
88691            Self::A(e) => e.accesskey.replace(val),
88692            Self::Abbr(e) => e.accesskey.replace(val),
88693            Self::B(e) => e.accesskey.replace(val),
88694            Self::Bdi(e) => e.accesskey.replace(val),
88695            Self::Bdo(e) => e.accesskey.replace(val),
88696            Self::Br(e) => e.accesskey.replace(val),
88697            Self::Cite(e) => e.accesskey.replace(val),
88698            Self::Code(e) => e.accesskey.replace(val),
88699            Self::Data(e) => e.accesskey.replace(val),
88700            Self::Dfn(e) => e.accesskey.replace(val),
88701            Self::Em(e) => e.accesskey.replace(val),
88702            Self::I(e) => e.accesskey.replace(val),
88703            Self::Kbd(e) => e.accesskey.replace(val),
88704            Self::Mark(e) => e.accesskey.replace(val),
88705            Self::Q(e) => e.accesskey.replace(val),
88706            Self::Rp(e) => e.accesskey.replace(val),
88707            Self::Rt(e) => e.accesskey.replace(val),
88708            Self::Ruby(e) => e.accesskey.replace(val),
88709            Self::S(e) => e.accesskey.replace(val),
88710            Self::Samp(e) => e.accesskey.replace(val),
88711            Self::Small(e) => e.accesskey.replace(val),
88712            Self::Span(e) => e.accesskey.replace(val),
88713            Self::Strong(e) => e.accesskey.replace(val),
88714            Self::Sub(e) => e.accesskey.replace(val),
88715            Self::Sup(e) => e.accesskey.replace(val),
88716            Self::Time(e) => e.accesskey.replace(val),
88717            Self::U(e) => e.accesskey.replace(val),
88718            Self::Var(e) => e.accesskey.replace(val),
88719            Self::Wbr(e) => e.accesskey.replace(val),
88720            Self::Area(e) => e.accesskey.replace(val),
88721            Self::Audio(e) => e.accesskey.replace(val),
88722            Self::Img(e) => e.accesskey.replace(val),
88723            Self::Map(e) => e.accesskey.replace(val),
88724            Self::Track(e) => e.accesskey.replace(val),
88725            Self::Video(e) => e.accesskey.replace(val),
88726            Self::Embed(e) => e.accesskey.replace(val),
88727            Self::Iframe(e) => e.accesskey.replace(val),
88728            Self::Object(e) => e.accesskey.replace(val),
88729            Self::Picture(e) => e.accesskey.replace(val),
88730            Self::Portal(e) => e.accesskey.replace(val),
88731            Self::Source(e) => e.accesskey.replace(val),
88732            Self::Canvas(e) => e.accesskey.replace(val),
88733            Self::Noscript(e) => e.accesskey.replace(val),
88734            Self::Script(e) => e.accesskey.replace(val),
88735            Self::Del(e) => e.accesskey.replace(val),
88736            Self::Ins(e) => e.accesskey.replace(val),
88737            Self::Caption(e) => e.accesskey.replace(val),
88738            Self::Col(e) => e.accesskey.replace(val),
88739            Self::Colgroup(e) => e.accesskey.replace(val),
88740            Self::Table(e) => e.accesskey.replace(val),
88741            Self::Tbody(e) => e.accesskey.replace(val),
88742            Self::Td(e) => e.accesskey.replace(val),
88743            Self::Tfoot(e) => e.accesskey.replace(val),
88744            Self::Th(e) => e.accesskey.replace(val),
88745            Self::Thead(e) => e.accesskey.replace(val),
88746            Self::Tr(e) => e.accesskey.replace(val),
88747            Self::Button(e) => e.accesskey.replace(val),
88748            Self::Datalist(e) => e.accesskey.replace(val),
88749            Self::Fieldset(e) => e.accesskey.replace(val),
88750            Self::Form(e) => e.accesskey.replace(val),
88751            Self::Input(e) => e.accesskey.replace(val),
88752            Self::Label(e) => e.accesskey.replace(val),
88753            Self::Legend(e) => e.accesskey.replace(val),
88754            Self::Meter(e) => e.accesskey.replace(val),
88755            Self::Optgroup(e) => e.accesskey.replace(val),
88756            Self::Option(e) => e.accesskey.replace(val),
88757            Self::Output(e) => e.accesskey.replace(val),
88758            Self::Progress(e) => e.accesskey.replace(val),
88759            Self::Select(e) => e.accesskey.replace(val),
88760            Self::Textarea(e) => e.accesskey.replace(val),
88761            Self::Details(e) => e.accesskey.replace(val),
88762            Self::Dialog(e) => e.accesskey.replace(val),
88763            Self::Summary(e) => e.accesskey.replace(val),
88764            Self::Slot(e) => e.accesskey.replace(val),
88765            Self::Template(e) => e.accesskey.replace(val),
88766            Self::Acronym(e) => e.accesskey.replace(val),
88767            Self::Applet(e) => e.accesskey.replace(val),
88768            Self::Bgsound(e) => e.accesskey.replace(val),
88769            Self::Big(e) => e.accesskey.replace(val),
88770            Self::Blink(e) => e.accesskey.replace(val),
88771            Self::Center(e) => e.accesskey.replace(val),
88772            Self::Dir(e) => e.accesskey.replace(val),
88773            Self::Font(e) => e.accesskey.replace(val),
88774            Self::Frame(e) => e.accesskey.replace(val),
88775            Self::Frameset(e) => e.accesskey.replace(val),
88776            Self::Image(e) => e.accesskey.replace(val),
88777            Self::Keygen(e) => e.accesskey.replace(val),
88778            Self::Marquee(e) => e.accesskey.replace(val),
88779            Self::Menuitem(e) => e.accesskey.replace(val),
88780            Self::Nobr(e) => e.accesskey.replace(val),
88781            Self::Noembed(e) => e.accesskey.replace(val),
88782            Self::Noframes(e) => e.accesskey.replace(val),
88783            Self::Param(e) => e.accesskey.replace(val),
88784            Self::Plaintext(e) => e.accesskey.replace(val),
88785            Self::Rb(e) => e.accesskey.replace(val),
88786            Self::Rtc(e) => e.accesskey.replace(val),
88787            Self::Spacer(e) => e.accesskey.replace(val),
88788            Self::Strike(e) => e.accesskey.replace(val),
88789            Self::Tt(e) => e.accesskey.replace(val),
88790            Self::Xmp(e) => e.accesskey.replace(val),
88791            Self::H1(e) => e.accesskey.replace(val),
88792            Self::H2(e) => e.accesskey.replace(val),
88793            Self::H3(e) => e.accesskey.replace(val),
88794            Self::H4(e) => e.accesskey.replace(val),
88795            Self::H5(e) => e.accesskey.replace(val),
88796            Self::H6(e) => e.accesskey.replace(val),
88797            Self::Unknown(e) => e.accesskey.replace(val),
88798        };
88799    }
88800
88801    ///     <p>Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:</p>
88802    ///     <ul>
88803    ///       <li><code>off</code> or <code>none</code>, no autocapitalization is applied (all letters default to lowercase)</li>
88804    ///       <li><code>on</code> or <code>sentences</code>, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase</li>
88805    ///       <li><code>words</code>, the first letter of each word defaults to a capital letter; all other letters default to lowercase</li>
88806    ///       <li><code>characters</code>, all letters should default to uppercase</li>
88807    ///     </ul>
88808    ///   
88809    #[cfg(feature = "alloc")]
88810    pub fn set_autocapitalize(&mut self, val: AttributeValueOwned) {
88811        match self {
88812            Self::Html(e) => e.autocapitalize.replace(val),
88813            Self::Base(e) => e.autocapitalize.replace(val),
88814            Self::Head(e) => e.autocapitalize.replace(val),
88815            Self::Link(e) => e.autocapitalize.replace(val),
88816            Self::Meta(e) => e.autocapitalize.replace(val),
88817            Self::Style(e) => e.autocapitalize.replace(val),
88818            Self::Title(e) => e.autocapitalize.replace(val),
88819            Self::Body(e) => e.autocapitalize.replace(val),
88820            Self::Address(e) => e.autocapitalize.replace(val),
88821            Self::Article(e) => e.autocapitalize.replace(val),
88822            Self::Aside(e) => e.autocapitalize.replace(val),
88823            Self::Footer(e) => e.autocapitalize.replace(val),
88824            Self::Header(e) => e.autocapitalize.replace(val),
88825            Self::Hgroup(e) => e.autocapitalize.replace(val),
88826            Self::Main(e) => e.autocapitalize.replace(val),
88827            Self::Nav(e) => e.autocapitalize.replace(val),
88828            Self::Section(e) => e.autocapitalize.replace(val),
88829            Self::Blockquote(e) => e.autocapitalize.replace(val),
88830            Self::Dd(e) => e.autocapitalize.replace(val),
88831            Self::Div(e) => e.autocapitalize.replace(val),
88832            Self::Dl(e) => e.autocapitalize.replace(val),
88833            Self::Dt(e) => e.autocapitalize.replace(val),
88834            Self::Figcaption(e) => e.autocapitalize.replace(val),
88835            Self::Figure(e) => e.autocapitalize.replace(val),
88836            Self::Hr(e) => e.autocapitalize.replace(val),
88837            Self::Li(e) => e.autocapitalize.replace(val),
88838            Self::Menu(e) => e.autocapitalize.replace(val),
88839            Self::Ol(e) => e.autocapitalize.replace(val),
88840            Self::P(e) => e.autocapitalize.replace(val),
88841            Self::Pre(e) => e.autocapitalize.replace(val),
88842            Self::Ul(e) => e.autocapitalize.replace(val),
88843            Self::A(e) => e.autocapitalize.replace(val),
88844            Self::Abbr(e) => e.autocapitalize.replace(val),
88845            Self::B(e) => e.autocapitalize.replace(val),
88846            Self::Bdi(e) => e.autocapitalize.replace(val),
88847            Self::Bdo(e) => e.autocapitalize.replace(val),
88848            Self::Br(e) => e.autocapitalize.replace(val),
88849            Self::Cite(e) => e.autocapitalize.replace(val),
88850            Self::Code(e) => e.autocapitalize.replace(val),
88851            Self::Data(e) => e.autocapitalize.replace(val),
88852            Self::Dfn(e) => e.autocapitalize.replace(val),
88853            Self::Em(e) => e.autocapitalize.replace(val),
88854            Self::I(e) => e.autocapitalize.replace(val),
88855            Self::Kbd(e) => e.autocapitalize.replace(val),
88856            Self::Mark(e) => e.autocapitalize.replace(val),
88857            Self::Q(e) => e.autocapitalize.replace(val),
88858            Self::Rp(e) => e.autocapitalize.replace(val),
88859            Self::Rt(e) => e.autocapitalize.replace(val),
88860            Self::Ruby(e) => e.autocapitalize.replace(val),
88861            Self::S(e) => e.autocapitalize.replace(val),
88862            Self::Samp(e) => e.autocapitalize.replace(val),
88863            Self::Small(e) => e.autocapitalize.replace(val),
88864            Self::Span(e) => e.autocapitalize.replace(val),
88865            Self::Strong(e) => e.autocapitalize.replace(val),
88866            Self::Sub(e) => e.autocapitalize.replace(val),
88867            Self::Sup(e) => e.autocapitalize.replace(val),
88868            Self::Time(e) => e.autocapitalize.replace(val),
88869            Self::U(e) => e.autocapitalize.replace(val),
88870            Self::Var(e) => e.autocapitalize.replace(val),
88871            Self::Wbr(e) => e.autocapitalize.replace(val),
88872            Self::Area(e) => e.autocapitalize.replace(val),
88873            Self::Audio(e) => e.autocapitalize.replace(val),
88874            Self::Img(e) => e.autocapitalize.replace(val),
88875            Self::Map(e) => e.autocapitalize.replace(val),
88876            Self::Track(e) => e.autocapitalize.replace(val),
88877            Self::Video(e) => e.autocapitalize.replace(val),
88878            Self::Embed(e) => e.autocapitalize.replace(val),
88879            Self::Iframe(e) => e.autocapitalize.replace(val),
88880            Self::Object(e) => e.autocapitalize.replace(val),
88881            Self::Picture(e) => e.autocapitalize.replace(val),
88882            Self::Portal(e) => e.autocapitalize.replace(val),
88883            Self::Source(e) => e.autocapitalize.replace(val),
88884            Self::Canvas(e) => e.autocapitalize.replace(val),
88885            Self::Noscript(e) => e.autocapitalize.replace(val),
88886            Self::Script(e) => e.autocapitalize.replace(val),
88887            Self::Del(e) => e.autocapitalize.replace(val),
88888            Self::Ins(e) => e.autocapitalize.replace(val),
88889            Self::Caption(e) => e.autocapitalize.replace(val),
88890            Self::Col(e) => e.autocapitalize.replace(val),
88891            Self::Colgroup(e) => e.autocapitalize.replace(val),
88892            Self::Table(e) => e.autocapitalize.replace(val),
88893            Self::Tbody(e) => e.autocapitalize.replace(val),
88894            Self::Td(e) => e.autocapitalize.replace(val),
88895            Self::Tfoot(e) => e.autocapitalize.replace(val),
88896            Self::Th(e) => e.autocapitalize.replace(val),
88897            Self::Thead(e) => e.autocapitalize.replace(val),
88898            Self::Tr(e) => e.autocapitalize.replace(val),
88899            Self::Button(e) => e.autocapitalize.replace(val),
88900            Self::Datalist(e) => e.autocapitalize.replace(val),
88901            Self::Fieldset(e) => e.autocapitalize.replace(val),
88902            Self::Form(e) => e.autocapitalize.replace(val),
88903            Self::Input(e) => e.autocapitalize.replace(val),
88904            Self::Label(e) => e.autocapitalize.replace(val),
88905            Self::Legend(e) => e.autocapitalize.replace(val),
88906            Self::Meter(e) => e.autocapitalize.replace(val),
88907            Self::Optgroup(e) => e.autocapitalize.replace(val),
88908            Self::Option(e) => e.autocapitalize.replace(val),
88909            Self::Output(e) => e.autocapitalize.replace(val),
88910            Self::Progress(e) => e.autocapitalize.replace(val),
88911            Self::Select(e) => e.autocapitalize.replace(val),
88912            Self::Textarea(e) => e.autocapitalize.replace(val),
88913            Self::Details(e) => e.autocapitalize.replace(val),
88914            Self::Dialog(e) => e.autocapitalize.replace(val),
88915            Self::Summary(e) => e.autocapitalize.replace(val),
88916            Self::Slot(e) => e.autocapitalize.replace(val),
88917            Self::Template(e) => e.autocapitalize.replace(val),
88918            Self::Acronym(e) => e.autocapitalize.replace(val),
88919            Self::Applet(e) => e.autocapitalize.replace(val),
88920            Self::Bgsound(e) => e.autocapitalize.replace(val),
88921            Self::Big(e) => e.autocapitalize.replace(val),
88922            Self::Blink(e) => e.autocapitalize.replace(val),
88923            Self::Center(e) => e.autocapitalize.replace(val),
88924            Self::Dir(e) => e.autocapitalize.replace(val),
88925            Self::Font(e) => e.autocapitalize.replace(val),
88926            Self::Frame(e) => e.autocapitalize.replace(val),
88927            Self::Frameset(e) => e.autocapitalize.replace(val),
88928            Self::Image(e) => e.autocapitalize.replace(val),
88929            Self::Keygen(e) => e.autocapitalize.replace(val),
88930            Self::Marquee(e) => e.autocapitalize.replace(val),
88931            Self::Menuitem(e) => e.autocapitalize.replace(val),
88932            Self::Nobr(e) => e.autocapitalize.replace(val),
88933            Self::Noembed(e) => e.autocapitalize.replace(val),
88934            Self::Noframes(e) => e.autocapitalize.replace(val),
88935            Self::Param(e) => e.autocapitalize.replace(val),
88936            Self::Plaintext(e) => e.autocapitalize.replace(val),
88937            Self::Rb(e) => e.autocapitalize.replace(val),
88938            Self::Rtc(e) => e.autocapitalize.replace(val),
88939            Self::Spacer(e) => e.autocapitalize.replace(val),
88940            Self::Strike(e) => e.autocapitalize.replace(val),
88941            Self::Tt(e) => e.autocapitalize.replace(val),
88942            Self::Xmp(e) => e.autocapitalize.replace(val),
88943            Self::H1(e) => e.autocapitalize.replace(val),
88944            Self::H2(e) => e.autocapitalize.replace(val),
88945            Self::H3(e) => e.autocapitalize.replace(val),
88946            Self::H4(e) => e.autocapitalize.replace(val),
88947            Self::H5(e) => e.autocapitalize.replace(val),
88948            Self::H6(e) => e.autocapitalize.replace(val),
88949            Self::Unknown(e) => e.autocapitalize.replace(val),
88950        };
88951    }
88952
88953    ///     <p>Indicates that an element is to be focused on page load, or as soon as the <a href="/en-US/docs/Web/HTML/Element/dialog"><code>&lt;dialog&gt;</code></a> it is part of is displayed. This attribute is a boolean, initially false.</p>
88954    ///   
88955    #[cfg(feature = "alloc")]
88956    pub fn set_autofocus(&mut self, val: AttributeValueOwned) {
88957        match self {
88958            Self::Html(e) => e.autofocus.replace(val),
88959            Self::Base(e) => e.autofocus.replace(val),
88960            Self::Head(e) => e.autofocus.replace(val),
88961            Self::Link(e) => e.autofocus.replace(val),
88962            Self::Meta(e) => e.autofocus.replace(val),
88963            Self::Style(e) => e.autofocus.replace(val),
88964            Self::Title(e) => e.autofocus.replace(val),
88965            Self::Body(e) => e.autofocus.replace(val),
88966            Self::Address(e) => e.autofocus.replace(val),
88967            Self::Article(e) => e.autofocus.replace(val),
88968            Self::Aside(e) => e.autofocus.replace(val),
88969            Self::Footer(e) => e.autofocus.replace(val),
88970            Self::Header(e) => e.autofocus.replace(val),
88971            Self::Hgroup(e) => e.autofocus.replace(val),
88972            Self::Main(e) => e.autofocus.replace(val),
88973            Self::Nav(e) => e.autofocus.replace(val),
88974            Self::Section(e) => e.autofocus.replace(val),
88975            Self::Blockquote(e) => e.autofocus.replace(val),
88976            Self::Dd(e) => e.autofocus.replace(val),
88977            Self::Div(e) => e.autofocus.replace(val),
88978            Self::Dl(e) => e.autofocus.replace(val),
88979            Self::Dt(e) => e.autofocus.replace(val),
88980            Self::Figcaption(e) => e.autofocus.replace(val),
88981            Self::Figure(e) => e.autofocus.replace(val),
88982            Self::Hr(e) => e.autofocus.replace(val),
88983            Self::Li(e) => e.autofocus.replace(val),
88984            Self::Menu(e) => e.autofocus.replace(val),
88985            Self::Ol(e) => e.autofocus.replace(val),
88986            Self::P(e) => e.autofocus.replace(val),
88987            Self::Pre(e) => e.autofocus.replace(val),
88988            Self::Ul(e) => e.autofocus.replace(val),
88989            Self::A(e) => e.autofocus.replace(val),
88990            Self::Abbr(e) => e.autofocus.replace(val),
88991            Self::B(e) => e.autofocus.replace(val),
88992            Self::Bdi(e) => e.autofocus.replace(val),
88993            Self::Bdo(e) => e.autofocus.replace(val),
88994            Self::Br(e) => e.autofocus.replace(val),
88995            Self::Cite(e) => e.autofocus.replace(val),
88996            Self::Code(e) => e.autofocus.replace(val),
88997            Self::Data(e) => e.autofocus.replace(val),
88998            Self::Dfn(e) => e.autofocus.replace(val),
88999            Self::Em(e) => e.autofocus.replace(val),
89000            Self::I(e) => e.autofocus.replace(val),
89001            Self::Kbd(e) => e.autofocus.replace(val),
89002            Self::Mark(e) => e.autofocus.replace(val),
89003            Self::Q(e) => e.autofocus.replace(val),
89004            Self::Rp(e) => e.autofocus.replace(val),
89005            Self::Rt(e) => e.autofocus.replace(val),
89006            Self::Ruby(e) => e.autofocus.replace(val),
89007            Self::S(e) => e.autofocus.replace(val),
89008            Self::Samp(e) => e.autofocus.replace(val),
89009            Self::Small(e) => e.autofocus.replace(val),
89010            Self::Span(e) => e.autofocus.replace(val),
89011            Self::Strong(e) => e.autofocus.replace(val),
89012            Self::Sub(e) => e.autofocus.replace(val),
89013            Self::Sup(e) => e.autofocus.replace(val),
89014            Self::Time(e) => e.autofocus.replace(val),
89015            Self::U(e) => e.autofocus.replace(val),
89016            Self::Var(e) => e.autofocus.replace(val),
89017            Self::Wbr(e) => e.autofocus.replace(val),
89018            Self::Area(e) => e.autofocus.replace(val),
89019            Self::Audio(e) => e.autofocus.replace(val),
89020            Self::Img(e) => e.autofocus.replace(val),
89021            Self::Map(e) => e.autofocus.replace(val),
89022            Self::Track(e) => e.autofocus.replace(val),
89023            Self::Video(e) => e.autofocus.replace(val),
89024            Self::Embed(e) => e.autofocus.replace(val),
89025            Self::Iframe(e) => e.autofocus.replace(val),
89026            Self::Object(e) => e.autofocus.replace(val),
89027            Self::Picture(e) => e.autofocus.replace(val),
89028            Self::Portal(e) => e.autofocus.replace(val),
89029            Self::Source(e) => e.autofocus.replace(val),
89030            Self::Canvas(e) => e.autofocus.replace(val),
89031            Self::Noscript(e) => e.autofocus.replace(val),
89032            Self::Script(e) => e.autofocus.replace(val),
89033            Self::Del(e) => e.autofocus.replace(val),
89034            Self::Ins(e) => e.autofocus.replace(val),
89035            Self::Caption(e) => e.autofocus.replace(val),
89036            Self::Col(e) => e.autofocus.replace(val),
89037            Self::Colgroup(e) => e.autofocus.replace(val),
89038            Self::Table(e) => e.autofocus.replace(val),
89039            Self::Tbody(e) => e.autofocus.replace(val),
89040            Self::Td(e) => e.autofocus.replace(val),
89041            Self::Tfoot(e) => e.autofocus.replace(val),
89042            Self::Th(e) => e.autofocus.replace(val),
89043            Self::Thead(e) => e.autofocus.replace(val),
89044            Self::Tr(e) => e.autofocus.replace(val),
89045            Self::Button(e) => e.autofocus.replace(val),
89046            Self::Datalist(e) => e.autofocus.replace(val),
89047            Self::Fieldset(e) => e.autofocus.replace(val),
89048            Self::Form(e) => e.autofocus.replace(val),
89049            Self::Input(e) => e.autofocus.replace(val),
89050            Self::Label(e) => e.autofocus.replace(val),
89051            Self::Legend(e) => e.autofocus.replace(val),
89052            Self::Meter(e) => e.autofocus.replace(val),
89053            Self::Optgroup(e) => e.autofocus.replace(val),
89054            Self::Option(e) => e.autofocus.replace(val),
89055            Self::Output(e) => e.autofocus.replace(val),
89056            Self::Progress(e) => e.autofocus.replace(val),
89057            Self::Select(e) => e.autofocus.replace(val),
89058            Self::Textarea(e) => e.autofocus.replace(val),
89059            Self::Details(e) => e.autofocus.replace(val),
89060            Self::Dialog(e) => e.autofocus.replace(val),
89061            Self::Summary(e) => e.autofocus.replace(val),
89062            Self::Slot(e) => e.autofocus.replace(val),
89063            Self::Template(e) => e.autofocus.replace(val),
89064            Self::Acronym(e) => e.autofocus.replace(val),
89065            Self::Applet(e) => e.autofocus.replace(val),
89066            Self::Bgsound(e) => e.autofocus.replace(val),
89067            Self::Big(e) => e.autofocus.replace(val),
89068            Self::Blink(e) => e.autofocus.replace(val),
89069            Self::Center(e) => e.autofocus.replace(val),
89070            Self::Dir(e) => e.autofocus.replace(val),
89071            Self::Font(e) => e.autofocus.replace(val),
89072            Self::Frame(e) => e.autofocus.replace(val),
89073            Self::Frameset(e) => e.autofocus.replace(val),
89074            Self::Image(e) => e.autofocus.replace(val),
89075            Self::Keygen(e) => e.autofocus.replace(val),
89076            Self::Marquee(e) => e.autofocus.replace(val),
89077            Self::Menuitem(e) => e.autofocus.replace(val),
89078            Self::Nobr(e) => e.autofocus.replace(val),
89079            Self::Noembed(e) => e.autofocus.replace(val),
89080            Self::Noframes(e) => e.autofocus.replace(val),
89081            Self::Param(e) => e.autofocus.replace(val),
89082            Self::Plaintext(e) => e.autofocus.replace(val),
89083            Self::Rb(e) => e.autofocus.replace(val),
89084            Self::Rtc(e) => e.autofocus.replace(val),
89085            Self::Spacer(e) => e.autofocus.replace(val),
89086            Self::Strike(e) => e.autofocus.replace(val),
89087            Self::Tt(e) => e.autofocus.replace(val),
89088            Self::Xmp(e) => e.autofocus.replace(val),
89089            Self::H1(e) => e.autofocus.replace(val),
89090            Self::H2(e) => e.autofocus.replace(val),
89091            Self::H3(e) => e.autofocus.replace(val),
89092            Self::H4(e) => e.autofocus.replace(val),
89093            Self::H5(e) => e.autofocus.replace(val),
89094            Self::H6(e) => e.autofocus.replace(val),
89095            Self::Unknown(e) => e.autofocus.replace(val),
89096        };
89097    }
89098
89099    ///     <p>A space-separated list of the classes of the element. Classes allow CSS and JavaScript to select and access specific elements via the <a href="/en-US/docs/Web/CSS/Class_selectors">class selectors</a> or functions like the method <a href="/en-US/docs/Web/API/Document/getElementsByClassName"><code>Document.getElementsByClassName()</code></a>.</p>
89100    ///   
89101    #[cfg(feature = "alloc")]
89102    pub fn set_class(&mut self, val: AttributeValueOwned) {
89103        match self {
89104            Self::Html(e) => e.class.replace(val),
89105            Self::Base(e) => e.class.replace(val),
89106            Self::Head(e) => e.class.replace(val),
89107            Self::Link(e) => e.class.replace(val),
89108            Self::Meta(e) => e.class.replace(val),
89109            Self::Style(e) => e.class.replace(val),
89110            Self::Title(e) => e.class.replace(val),
89111            Self::Body(e) => e.class.replace(val),
89112            Self::Address(e) => e.class.replace(val),
89113            Self::Article(e) => e.class.replace(val),
89114            Self::Aside(e) => e.class.replace(val),
89115            Self::Footer(e) => e.class.replace(val),
89116            Self::Header(e) => e.class.replace(val),
89117            Self::Hgroup(e) => e.class.replace(val),
89118            Self::Main(e) => e.class.replace(val),
89119            Self::Nav(e) => e.class.replace(val),
89120            Self::Section(e) => e.class.replace(val),
89121            Self::Blockquote(e) => e.class.replace(val),
89122            Self::Dd(e) => e.class.replace(val),
89123            Self::Div(e) => e.class.replace(val),
89124            Self::Dl(e) => e.class.replace(val),
89125            Self::Dt(e) => e.class.replace(val),
89126            Self::Figcaption(e) => e.class.replace(val),
89127            Self::Figure(e) => e.class.replace(val),
89128            Self::Hr(e) => e.class.replace(val),
89129            Self::Li(e) => e.class.replace(val),
89130            Self::Menu(e) => e.class.replace(val),
89131            Self::Ol(e) => e.class.replace(val),
89132            Self::P(e) => e.class.replace(val),
89133            Self::Pre(e) => e.class.replace(val),
89134            Self::Ul(e) => e.class.replace(val),
89135            Self::A(e) => e.class.replace(val),
89136            Self::Abbr(e) => e.class.replace(val),
89137            Self::B(e) => e.class.replace(val),
89138            Self::Bdi(e) => e.class.replace(val),
89139            Self::Bdo(e) => e.class.replace(val),
89140            Self::Br(e) => e.class.replace(val),
89141            Self::Cite(e) => e.class.replace(val),
89142            Self::Code(e) => e.class.replace(val),
89143            Self::Data(e) => e.class.replace(val),
89144            Self::Dfn(e) => e.class.replace(val),
89145            Self::Em(e) => e.class.replace(val),
89146            Self::I(e) => e.class.replace(val),
89147            Self::Kbd(e) => e.class.replace(val),
89148            Self::Mark(e) => e.class.replace(val),
89149            Self::Q(e) => e.class.replace(val),
89150            Self::Rp(e) => e.class.replace(val),
89151            Self::Rt(e) => e.class.replace(val),
89152            Self::Ruby(e) => e.class.replace(val),
89153            Self::S(e) => e.class.replace(val),
89154            Self::Samp(e) => e.class.replace(val),
89155            Self::Small(e) => e.class.replace(val),
89156            Self::Span(e) => e.class.replace(val),
89157            Self::Strong(e) => e.class.replace(val),
89158            Self::Sub(e) => e.class.replace(val),
89159            Self::Sup(e) => e.class.replace(val),
89160            Self::Time(e) => e.class.replace(val),
89161            Self::U(e) => e.class.replace(val),
89162            Self::Var(e) => e.class.replace(val),
89163            Self::Wbr(e) => e.class.replace(val),
89164            Self::Area(e) => e.class.replace(val),
89165            Self::Audio(e) => e.class.replace(val),
89166            Self::Img(e) => e.class.replace(val),
89167            Self::Map(e) => e.class.replace(val),
89168            Self::Track(e) => e.class.replace(val),
89169            Self::Video(e) => e.class.replace(val),
89170            Self::Embed(e) => e.class.replace(val),
89171            Self::Iframe(e) => e.class.replace(val),
89172            Self::Object(e) => e.class.replace(val),
89173            Self::Picture(e) => e.class.replace(val),
89174            Self::Portal(e) => e.class.replace(val),
89175            Self::Source(e) => e.class.replace(val),
89176            Self::Canvas(e) => e.class.replace(val),
89177            Self::Noscript(e) => e.class.replace(val),
89178            Self::Script(e) => e.class.replace(val),
89179            Self::Del(e) => e.class.replace(val),
89180            Self::Ins(e) => e.class.replace(val),
89181            Self::Caption(e) => e.class.replace(val),
89182            Self::Col(e) => e.class.replace(val),
89183            Self::Colgroup(e) => e.class.replace(val),
89184            Self::Table(e) => e.class.replace(val),
89185            Self::Tbody(e) => e.class.replace(val),
89186            Self::Td(e) => e.class.replace(val),
89187            Self::Tfoot(e) => e.class.replace(val),
89188            Self::Th(e) => e.class.replace(val),
89189            Self::Thead(e) => e.class.replace(val),
89190            Self::Tr(e) => e.class.replace(val),
89191            Self::Button(e) => e.class.replace(val),
89192            Self::Datalist(e) => e.class.replace(val),
89193            Self::Fieldset(e) => e.class.replace(val),
89194            Self::Form(e) => e.class.replace(val),
89195            Self::Input(e) => e.class.replace(val),
89196            Self::Label(e) => e.class.replace(val),
89197            Self::Legend(e) => e.class.replace(val),
89198            Self::Meter(e) => e.class.replace(val),
89199            Self::Optgroup(e) => e.class.replace(val),
89200            Self::Option(e) => e.class.replace(val),
89201            Self::Output(e) => e.class.replace(val),
89202            Self::Progress(e) => e.class.replace(val),
89203            Self::Select(e) => e.class.replace(val),
89204            Self::Textarea(e) => e.class.replace(val),
89205            Self::Details(e) => e.class.replace(val),
89206            Self::Dialog(e) => e.class.replace(val),
89207            Self::Summary(e) => e.class.replace(val),
89208            Self::Slot(e) => e.class.replace(val),
89209            Self::Template(e) => e.class.replace(val),
89210            Self::Acronym(e) => e.class.replace(val),
89211            Self::Applet(e) => e.class.replace(val),
89212            Self::Bgsound(e) => e.class.replace(val),
89213            Self::Big(e) => e.class.replace(val),
89214            Self::Blink(e) => e.class.replace(val),
89215            Self::Center(e) => e.class.replace(val),
89216            Self::Dir(e) => e.class.replace(val),
89217            Self::Font(e) => e.class.replace(val),
89218            Self::Frame(e) => e.class.replace(val),
89219            Self::Frameset(e) => e.class.replace(val),
89220            Self::Image(e) => e.class.replace(val),
89221            Self::Keygen(e) => e.class.replace(val),
89222            Self::Marquee(e) => e.class.replace(val),
89223            Self::Menuitem(e) => e.class.replace(val),
89224            Self::Nobr(e) => e.class.replace(val),
89225            Self::Noembed(e) => e.class.replace(val),
89226            Self::Noframes(e) => e.class.replace(val),
89227            Self::Param(e) => e.class.replace(val),
89228            Self::Plaintext(e) => e.class.replace(val),
89229            Self::Rb(e) => e.class.replace(val),
89230            Self::Rtc(e) => e.class.replace(val),
89231            Self::Spacer(e) => e.class.replace(val),
89232            Self::Strike(e) => e.class.replace(val),
89233            Self::Tt(e) => e.class.replace(val),
89234            Self::Xmp(e) => e.class.replace(val),
89235            Self::H1(e) => e.class.replace(val),
89236            Self::H2(e) => e.class.replace(val),
89237            Self::H3(e) => e.class.replace(val),
89238            Self::H4(e) => e.class.replace(val),
89239            Self::H5(e) => e.class.replace(val),
89240            Self::H6(e) => e.class.replace(val),
89241            Self::Unknown(e) => e.class.replace(val),
89242        };
89243    }
89244
89245    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:</p>
89246    ///     <ul>
89247    ///       <li><code>true</code> or the <em>empty string</em>, which indicates that the element must be editable;</li>
89248    ///       <li><code>false</code>, which indicates that the element must not be editable.</li>
89249    ///     </ul>
89250    ///   
89251    #[cfg(feature = "alloc")]
89252    pub fn set_contenteditable(&mut self, val: AttributeValueOwned) {
89253        match self {
89254            Self::Html(e) => e.contenteditable.replace(val),
89255            Self::Base(e) => e.contenteditable.replace(val),
89256            Self::Head(e) => e.contenteditable.replace(val),
89257            Self::Link(e) => e.contenteditable.replace(val),
89258            Self::Meta(e) => e.contenteditable.replace(val),
89259            Self::Style(e) => e.contenteditable.replace(val),
89260            Self::Title(e) => e.contenteditable.replace(val),
89261            Self::Body(e) => e.contenteditable.replace(val),
89262            Self::Address(e) => e.contenteditable.replace(val),
89263            Self::Article(e) => e.contenteditable.replace(val),
89264            Self::Aside(e) => e.contenteditable.replace(val),
89265            Self::Footer(e) => e.contenteditable.replace(val),
89266            Self::Header(e) => e.contenteditable.replace(val),
89267            Self::Hgroup(e) => e.contenteditable.replace(val),
89268            Self::Main(e) => e.contenteditable.replace(val),
89269            Self::Nav(e) => e.contenteditable.replace(val),
89270            Self::Section(e) => e.contenteditable.replace(val),
89271            Self::Blockquote(e) => e.contenteditable.replace(val),
89272            Self::Dd(e) => e.contenteditable.replace(val),
89273            Self::Div(e) => e.contenteditable.replace(val),
89274            Self::Dl(e) => e.contenteditable.replace(val),
89275            Self::Dt(e) => e.contenteditable.replace(val),
89276            Self::Figcaption(e) => e.contenteditable.replace(val),
89277            Self::Figure(e) => e.contenteditable.replace(val),
89278            Self::Hr(e) => e.contenteditable.replace(val),
89279            Self::Li(e) => e.contenteditable.replace(val),
89280            Self::Menu(e) => e.contenteditable.replace(val),
89281            Self::Ol(e) => e.contenteditable.replace(val),
89282            Self::P(e) => e.contenteditable.replace(val),
89283            Self::Pre(e) => e.contenteditable.replace(val),
89284            Self::Ul(e) => e.contenteditable.replace(val),
89285            Self::A(e) => e.contenteditable.replace(val),
89286            Self::Abbr(e) => e.contenteditable.replace(val),
89287            Self::B(e) => e.contenteditable.replace(val),
89288            Self::Bdi(e) => e.contenteditable.replace(val),
89289            Self::Bdo(e) => e.contenteditable.replace(val),
89290            Self::Br(e) => e.contenteditable.replace(val),
89291            Self::Cite(e) => e.contenteditable.replace(val),
89292            Self::Code(e) => e.contenteditable.replace(val),
89293            Self::Data(e) => e.contenteditable.replace(val),
89294            Self::Dfn(e) => e.contenteditable.replace(val),
89295            Self::Em(e) => e.contenteditable.replace(val),
89296            Self::I(e) => e.contenteditable.replace(val),
89297            Self::Kbd(e) => e.contenteditable.replace(val),
89298            Self::Mark(e) => e.contenteditable.replace(val),
89299            Self::Q(e) => e.contenteditable.replace(val),
89300            Self::Rp(e) => e.contenteditable.replace(val),
89301            Self::Rt(e) => e.contenteditable.replace(val),
89302            Self::Ruby(e) => e.contenteditable.replace(val),
89303            Self::S(e) => e.contenteditable.replace(val),
89304            Self::Samp(e) => e.contenteditable.replace(val),
89305            Self::Small(e) => e.contenteditable.replace(val),
89306            Self::Span(e) => e.contenteditable.replace(val),
89307            Self::Strong(e) => e.contenteditable.replace(val),
89308            Self::Sub(e) => e.contenteditable.replace(val),
89309            Self::Sup(e) => e.contenteditable.replace(val),
89310            Self::Time(e) => e.contenteditable.replace(val),
89311            Self::U(e) => e.contenteditable.replace(val),
89312            Self::Var(e) => e.contenteditable.replace(val),
89313            Self::Wbr(e) => e.contenteditable.replace(val),
89314            Self::Area(e) => e.contenteditable.replace(val),
89315            Self::Audio(e) => e.contenteditable.replace(val),
89316            Self::Img(e) => e.contenteditable.replace(val),
89317            Self::Map(e) => e.contenteditable.replace(val),
89318            Self::Track(e) => e.contenteditable.replace(val),
89319            Self::Video(e) => e.contenteditable.replace(val),
89320            Self::Embed(e) => e.contenteditable.replace(val),
89321            Self::Iframe(e) => e.contenteditable.replace(val),
89322            Self::Object(e) => e.contenteditable.replace(val),
89323            Self::Picture(e) => e.contenteditable.replace(val),
89324            Self::Portal(e) => e.contenteditable.replace(val),
89325            Self::Source(e) => e.contenteditable.replace(val),
89326            Self::Canvas(e) => e.contenteditable.replace(val),
89327            Self::Noscript(e) => e.contenteditable.replace(val),
89328            Self::Script(e) => e.contenteditable.replace(val),
89329            Self::Del(e) => e.contenteditable.replace(val),
89330            Self::Ins(e) => e.contenteditable.replace(val),
89331            Self::Caption(e) => e.contenteditable.replace(val),
89332            Self::Col(e) => e.contenteditable.replace(val),
89333            Self::Colgroup(e) => e.contenteditable.replace(val),
89334            Self::Table(e) => e.contenteditable.replace(val),
89335            Self::Tbody(e) => e.contenteditable.replace(val),
89336            Self::Td(e) => e.contenteditable.replace(val),
89337            Self::Tfoot(e) => e.contenteditable.replace(val),
89338            Self::Th(e) => e.contenteditable.replace(val),
89339            Self::Thead(e) => e.contenteditable.replace(val),
89340            Self::Tr(e) => e.contenteditable.replace(val),
89341            Self::Button(e) => e.contenteditable.replace(val),
89342            Self::Datalist(e) => e.contenteditable.replace(val),
89343            Self::Fieldset(e) => e.contenteditable.replace(val),
89344            Self::Form(e) => e.contenteditable.replace(val),
89345            Self::Input(e) => e.contenteditable.replace(val),
89346            Self::Label(e) => e.contenteditable.replace(val),
89347            Self::Legend(e) => e.contenteditable.replace(val),
89348            Self::Meter(e) => e.contenteditable.replace(val),
89349            Self::Optgroup(e) => e.contenteditable.replace(val),
89350            Self::Option(e) => e.contenteditable.replace(val),
89351            Self::Output(e) => e.contenteditable.replace(val),
89352            Self::Progress(e) => e.contenteditable.replace(val),
89353            Self::Select(e) => e.contenteditable.replace(val),
89354            Self::Textarea(e) => e.contenteditable.replace(val),
89355            Self::Details(e) => e.contenteditable.replace(val),
89356            Self::Dialog(e) => e.contenteditable.replace(val),
89357            Self::Summary(e) => e.contenteditable.replace(val),
89358            Self::Slot(e) => e.contenteditable.replace(val),
89359            Self::Template(e) => e.contenteditable.replace(val),
89360            Self::Acronym(e) => e.contenteditable.replace(val),
89361            Self::Applet(e) => e.contenteditable.replace(val),
89362            Self::Bgsound(e) => e.contenteditable.replace(val),
89363            Self::Big(e) => e.contenteditable.replace(val),
89364            Self::Blink(e) => e.contenteditable.replace(val),
89365            Self::Center(e) => e.contenteditable.replace(val),
89366            Self::Dir(e) => e.contenteditable.replace(val),
89367            Self::Font(e) => e.contenteditable.replace(val),
89368            Self::Frame(e) => e.contenteditable.replace(val),
89369            Self::Frameset(e) => e.contenteditable.replace(val),
89370            Self::Image(e) => e.contenteditable.replace(val),
89371            Self::Keygen(e) => e.contenteditable.replace(val),
89372            Self::Marquee(e) => e.contenteditable.replace(val),
89373            Self::Menuitem(e) => e.contenteditable.replace(val),
89374            Self::Nobr(e) => e.contenteditable.replace(val),
89375            Self::Noembed(e) => e.contenteditable.replace(val),
89376            Self::Noframes(e) => e.contenteditable.replace(val),
89377            Self::Param(e) => e.contenteditable.replace(val),
89378            Self::Plaintext(e) => e.contenteditable.replace(val),
89379            Self::Rb(e) => e.contenteditable.replace(val),
89380            Self::Rtc(e) => e.contenteditable.replace(val),
89381            Self::Spacer(e) => e.contenteditable.replace(val),
89382            Self::Strike(e) => e.contenteditable.replace(val),
89383            Self::Tt(e) => e.contenteditable.replace(val),
89384            Self::Xmp(e) => e.contenteditable.replace(val),
89385            Self::H1(e) => e.contenteditable.replace(val),
89386            Self::H2(e) => e.contenteditable.replace(val),
89387            Self::H3(e) => e.contenteditable.replace(val),
89388            Self::H4(e) => e.contenteditable.replace(val),
89389            Self::H5(e) => e.contenteditable.replace(val),
89390            Self::H6(e) => e.contenteditable.replace(val),
89391            Self::Unknown(e) => e.contenteditable.replace(val),
89392        };
89393    }
89394
89395    ///     <p>The <a href="#id"><strong><code>id</code></strong></a> of a <a href="/en-US/docs/Web/HTML/Element/menu"><code>&lt;menu&gt;</code></a> to use as the contextual menu for this element.</p>
89396    ///   
89397    #[cfg(feature = "alloc")]
89398    pub fn set_contextmenu(&mut self, val: AttributeValueOwned) {
89399        match self {
89400            Self::Html(e) => e.contextmenu.replace(val),
89401            Self::Base(e) => e.contextmenu.replace(val),
89402            Self::Head(e) => e.contextmenu.replace(val),
89403            Self::Link(e) => e.contextmenu.replace(val),
89404            Self::Meta(e) => e.contextmenu.replace(val),
89405            Self::Style(e) => e.contextmenu.replace(val),
89406            Self::Title(e) => e.contextmenu.replace(val),
89407            Self::Body(e) => e.contextmenu.replace(val),
89408            Self::Address(e) => e.contextmenu.replace(val),
89409            Self::Article(e) => e.contextmenu.replace(val),
89410            Self::Aside(e) => e.contextmenu.replace(val),
89411            Self::Footer(e) => e.contextmenu.replace(val),
89412            Self::Header(e) => e.contextmenu.replace(val),
89413            Self::Hgroup(e) => e.contextmenu.replace(val),
89414            Self::Main(e) => e.contextmenu.replace(val),
89415            Self::Nav(e) => e.contextmenu.replace(val),
89416            Self::Section(e) => e.contextmenu.replace(val),
89417            Self::Blockquote(e) => e.contextmenu.replace(val),
89418            Self::Dd(e) => e.contextmenu.replace(val),
89419            Self::Div(e) => e.contextmenu.replace(val),
89420            Self::Dl(e) => e.contextmenu.replace(val),
89421            Self::Dt(e) => e.contextmenu.replace(val),
89422            Self::Figcaption(e) => e.contextmenu.replace(val),
89423            Self::Figure(e) => e.contextmenu.replace(val),
89424            Self::Hr(e) => e.contextmenu.replace(val),
89425            Self::Li(e) => e.contextmenu.replace(val),
89426            Self::Menu(e) => e.contextmenu.replace(val),
89427            Self::Ol(e) => e.contextmenu.replace(val),
89428            Self::P(e) => e.contextmenu.replace(val),
89429            Self::Pre(e) => e.contextmenu.replace(val),
89430            Self::Ul(e) => e.contextmenu.replace(val),
89431            Self::A(e) => e.contextmenu.replace(val),
89432            Self::Abbr(e) => e.contextmenu.replace(val),
89433            Self::B(e) => e.contextmenu.replace(val),
89434            Self::Bdi(e) => e.contextmenu.replace(val),
89435            Self::Bdo(e) => e.contextmenu.replace(val),
89436            Self::Br(e) => e.contextmenu.replace(val),
89437            Self::Cite(e) => e.contextmenu.replace(val),
89438            Self::Code(e) => e.contextmenu.replace(val),
89439            Self::Data(e) => e.contextmenu.replace(val),
89440            Self::Dfn(e) => e.contextmenu.replace(val),
89441            Self::Em(e) => e.contextmenu.replace(val),
89442            Self::I(e) => e.contextmenu.replace(val),
89443            Self::Kbd(e) => e.contextmenu.replace(val),
89444            Self::Mark(e) => e.contextmenu.replace(val),
89445            Self::Q(e) => e.contextmenu.replace(val),
89446            Self::Rp(e) => e.contextmenu.replace(val),
89447            Self::Rt(e) => e.contextmenu.replace(val),
89448            Self::Ruby(e) => e.contextmenu.replace(val),
89449            Self::S(e) => e.contextmenu.replace(val),
89450            Self::Samp(e) => e.contextmenu.replace(val),
89451            Self::Small(e) => e.contextmenu.replace(val),
89452            Self::Span(e) => e.contextmenu.replace(val),
89453            Self::Strong(e) => e.contextmenu.replace(val),
89454            Self::Sub(e) => e.contextmenu.replace(val),
89455            Self::Sup(e) => e.contextmenu.replace(val),
89456            Self::Time(e) => e.contextmenu.replace(val),
89457            Self::U(e) => e.contextmenu.replace(val),
89458            Self::Var(e) => e.contextmenu.replace(val),
89459            Self::Wbr(e) => e.contextmenu.replace(val),
89460            Self::Area(e) => e.contextmenu.replace(val),
89461            Self::Audio(e) => e.contextmenu.replace(val),
89462            Self::Img(e) => e.contextmenu.replace(val),
89463            Self::Map(e) => e.contextmenu.replace(val),
89464            Self::Track(e) => e.contextmenu.replace(val),
89465            Self::Video(e) => e.contextmenu.replace(val),
89466            Self::Embed(e) => e.contextmenu.replace(val),
89467            Self::Iframe(e) => e.contextmenu.replace(val),
89468            Self::Object(e) => e.contextmenu.replace(val),
89469            Self::Picture(e) => e.contextmenu.replace(val),
89470            Self::Portal(e) => e.contextmenu.replace(val),
89471            Self::Source(e) => e.contextmenu.replace(val),
89472            Self::Canvas(e) => e.contextmenu.replace(val),
89473            Self::Noscript(e) => e.contextmenu.replace(val),
89474            Self::Script(e) => e.contextmenu.replace(val),
89475            Self::Del(e) => e.contextmenu.replace(val),
89476            Self::Ins(e) => e.contextmenu.replace(val),
89477            Self::Caption(e) => e.contextmenu.replace(val),
89478            Self::Col(e) => e.contextmenu.replace(val),
89479            Self::Colgroup(e) => e.contextmenu.replace(val),
89480            Self::Table(e) => e.contextmenu.replace(val),
89481            Self::Tbody(e) => e.contextmenu.replace(val),
89482            Self::Td(e) => e.contextmenu.replace(val),
89483            Self::Tfoot(e) => e.contextmenu.replace(val),
89484            Self::Th(e) => e.contextmenu.replace(val),
89485            Self::Thead(e) => e.contextmenu.replace(val),
89486            Self::Tr(e) => e.contextmenu.replace(val),
89487            Self::Button(e) => e.contextmenu.replace(val),
89488            Self::Datalist(e) => e.contextmenu.replace(val),
89489            Self::Fieldset(e) => e.contextmenu.replace(val),
89490            Self::Form(e) => e.contextmenu.replace(val),
89491            Self::Input(e) => e.contextmenu.replace(val),
89492            Self::Label(e) => e.contextmenu.replace(val),
89493            Self::Legend(e) => e.contextmenu.replace(val),
89494            Self::Meter(e) => e.contextmenu.replace(val),
89495            Self::Optgroup(e) => e.contextmenu.replace(val),
89496            Self::Option(e) => e.contextmenu.replace(val),
89497            Self::Output(e) => e.contextmenu.replace(val),
89498            Self::Progress(e) => e.contextmenu.replace(val),
89499            Self::Select(e) => e.contextmenu.replace(val),
89500            Self::Textarea(e) => e.contextmenu.replace(val),
89501            Self::Details(e) => e.contextmenu.replace(val),
89502            Self::Dialog(e) => e.contextmenu.replace(val),
89503            Self::Summary(e) => e.contextmenu.replace(val),
89504            Self::Slot(e) => e.contextmenu.replace(val),
89505            Self::Template(e) => e.contextmenu.replace(val),
89506            Self::Acronym(e) => e.contextmenu.replace(val),
89507            Self::Applet(e) => e.contextmenu.replace(val),
89508            Self::Bgsound(e) => e.contextmenu.replace(val),
89509            Self::Big(e) => e.contextmenu.replace(val),
89510            Self::Blink(e) => e.contextmenu.replace(val),
89511            Self::Center(e) => e.contextmenu.replace(val),
89512            Self::Dir(e) => e.contextmenu.replace(val),
89513            Self::Font(e) => e.contextmenu.replace(val),
89514            Self::Frame(e) => e.contextmenu.replace(val),
89515            Self::Frameset(e) => e.contextmenu.replace(val),
89516            Self::Image(e) => e.contextmenu.replace(val),
89517            Self::Keygen(e) => e.contextmenu.replace(val),
89518            Self::Marquee(e) => e.contextmenu.replace(val),
89519            Self::Menuitem(e) => e.contextmenu.replace(val),
89520            Self::Nobr(e) => e.contextmenu.replace(val),
89521            Self::Noembed(e) => e.contextmenu.replace(val),
89522            Self::Noframes(e) => e.contextmenu.replace(val),
89523            Self::Param(e) => e.contextmenu.replace(val),
89524            Self::Plaintext(e) => e.contextmenu.replace(val),
89525            Self::Rb(e) => e.contextmenu.replace(val),
89526            Self::Rtc(e) => e.contextmenu.replace(val),
89527            Self::Spacer(e) => e.contextmenu.replace(val),
89528            Self::Strike(e) => e.contextmenu.replace(val),
89529            Self::Tt(e) => e.contextmenu.replace(val),
89530            Self::Xmp(e) => e.contextmenu.replace(val),
89531            Self::H1(e) => e.contextmenu.replace(val),
89532            Self::H2(e) => e.contextmenu.replace(val),
89533            Self::H3(e) => e.contextmenu.replace(val),
89534            Self::H4(e) => e.contextmenu.replace(val),
89535            Self::H5(e) => e.contextmenu.replace(val),
89536            Self::H6(e) => e.contextmenu.replace(val),
89537            Self::Unknown(e) => e.contextmenu.replace(val),
89538        };
89539    }
89540
89541    ///     <p>An enumerated attribute indicating the directionality of the element's text. It can have the following values:</p>
89542    ///     <ul>
89543    ///       <li><code>ltr</code>, which means <em>left to right</em> and is to be used for languages that are written from the left to the right (like English);</li>
89544    ///       <li><code>rtl</code>, which means <em>right to left</em> and is to be used for languages that are written from the right to the left (like Arabic);</li>
89545    ///       <li><code>auto</code>, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.</li>
89546    ///     </ul>
89547    ///   
89548    #[cfg(feature = "alloc")]
89549    pub fn set_dir(&mut self, val: AttributeValueOwned) {
89550        match self {
89551            Self::Html(e) => e.dir.replace(val),
89552            Self::Base(e) => e.dir.replace(val),
89553            Self::Head(e) => e.dir.replace(val),
89554            Self::Link(e) => e.dir.replace(val),
89555            Self::Meta(e) => e.dir.replace(val),
89556            Self::Style(e) => e.dir.replace(val),
89557            Self::Title(e) => e.dir.replace(val),
89558            Self::Body(e) => e.dir.replace(val),
89559            Self::Address(e) => e.dir.replace(val),
89560            Self::Article(e) => e.dir.replace(val),
89561            Self::Aside(e) => e.dir.replace(val),
89562            Self::Footer(e) => e.dir.replace(val),
89563            Self::Header(e) => e.dir.replace(val),
89564            Self::Hgroup(e) => e.dir.replace(val),
89565            Self::Main(e) => e.dir.replace(val),
89566            Self::Nav(e) => e.dir.replace(val),
89567            Self::Section(e) => e.dir.replace(val),
89568            Self::Blockquote(e) => e.dir.replace(val),
89569            Self::Dd(e) => e.dir.replace(val),
89570            Self::Div(e) => e.dir.replace(val),
89571            Self::Dl(e) => e.dir.replace(val),
89572            Self::Dt(e) => e.dir.replace(val),
89573            Self::Figcaption(e) => e.dir.replace(val),
89574            Self::Figure(e) => e.dir.replace(val),
89575            Self::Hr(e) => e.dir.replace(val),
89576            Self::Li(e) => e.dir.replace(val),
89577            Self::Menu(e) => e.dir.replace(val),
89578            Self::Ol(e) => e.dir.replace(val),
89579            Self::P(e) => e.dir.replace(val),
89580            Self::Pre(e) => e.dir.replace(val),
89581            Self::Ul(e) => e.dir.replace(val),
89582            Self::A(e) => e.dir.replace(val),
89583            Self::Abbr(e) => e.dir.replace(val),
89584            Self::B(e) => e.dir.replace(val),
89585            Self::Bdi(e) => e.dir.replace(val),
89586            Self::Bdo(e) => e.dir.replace(val),
89587            Self::Br(e) => e.dir.replace(val),
89588            Self::Cite(e) => e.dir.replace(val),
89589            Self::Code(e) => e.dir.replace(val),
89590            Self::Data(e) => e.dir.replace(val),
89591            Self::Dfn(e) => e.dir.replace(val),
89592            Self::Em(e) => e.dir.replace(val),
89593            Self::I(e) => e.dir.replace(val),
89594            Self::Kbd(e) => e.dir.replace(val),
89595            Self::Mark(e) => e.dir.replace(val),
89596            Self::Q(e) => e.dir.replace(val),
89597            Self::Rp(e) => e.dir.replace(val),
89598            Self::Rt(e) => e.dir.replace(val),
89599            Self::Ruby(e) => e.dir.replace(val),
89600            Self::S(e) => e.dir.replace(val),
89601            Self::Samp(e) => e.dir.replace(val),
89602            Self::Small(e) => e.dir.replace(val),
89603            Self::Span(e) => e.dir.replace(val),
89604            Self::Strong(e) => e.dir.replace(val),
89605            Self::Sub(e) => e.dir.replace(val),
89606            Self::Sup(e) => e.dir.replace(val),
89607            Self::Time(e) => e.dir.replace(val),
89608            Self::U(e) => e.dir.replace(val),
89609            Self::Var(e) => e.dir.replace(val),
89610            Self::Wbr(e) => e.dir.replace(val),
89611            Self::Area(e) => e.dir.replace(val),
89612            Self::Audio(e) => e.dir.replace(val),
89613            Self::Img(e) => e.dir.replace(val),
89614            Self::Map(e) => e.dir.replace(val),
89615            Self::Track(e) => e.dir.replace(val),
89616            Self::Video(e) => e.dir.replace(val),
89617            Self::Embed(e) => e.dir.replace(val),
89618            Self::Iframe(e) => e.dir.replace(val),
89619            Self::Object(e) => e.dir.replace(val),
89620            Self::Picture(e) => e.dir.replace(val),
89621            Self::Portal(e) => e.dir.replace(val),
89622            Self::Source(e) => e.dir.replace(val),
89623            Self::Canvas(e) => e.dir.replace(val),
89624            Self::Noscript(e) => e.dir.replace(val),
89625            Self::Script(e) => e.dir.replace(val),
89626            Self::Del(e) => e.dir.replace(val),
89627            Self::Ins(e) => e.dir.replace(val),
89628            Self::Caption(e) => e.dir.replace(val),
89629            Self::Col(e) => e.dir.replace(val),
89630            Self::Colgroup(e) => e.dir.replace(val),
89631            Self::Table(e) => e.dir.replace(val),
89632            Self::Tbody(e) => e.dir.replace(val),
89633            Self::Td(e) => e.dir.replace(val),
89634            Self::Tfoot(e) => e.dir.replace(val),
89635            Self::Th(e) => e.dir.replace(val),
89636            Self::Thead(e) => e.dir.replace(val),
89637            Self::Tr(e) => e.dir.replace(val),
89638            Self::Button(e) => e.dir.replace(val),
89639            Self::Datalist(e) => e.dir.replace(val),
89640            Self::Fieldset(e) => e.dir.replace(val),
89641            Self::Form(e) => e.dir.replace(val),
89642            Self::Input(e) => e.dir.replace(val),
89643            Self::Label(e) => e.dir.replace(val),
89644            Self::Legend(e) => e.dir.replace(val),
89645            Self::Meter(e) => e.dir.replace(val),
89646            Self::Optgroup(e) => e.dir.replace(val),
89647            Self::Option(e) => e.dir.replace(val),
89648            Self::Output(e) => e.dir.replace(val),
89649            Self::Progress(e) => e.dir.replace(val),
89650            Self::Select(e) => e.dir.replace(val),
89651            Self::Textarea(e) => e.dir.replace(val),
89652            Self::Details(e) => e.dir.replace(val),
89653            Self::Dialog(e) => e.dir.replace(val),
89654            Self::Summary(e) => e.dir.replace(val),
89655            Self::Slot(e) => e.dir.replace(val),
89656            Self::Template(e) => e.dir.replace(val),
89657            Self::Acronym(e) => e.dir.replace(val),
89658            Self::Applet(e) => e.dir.replace(val),
89659            Self::Bgsound(e) => e.dir.replace(val),
89660            Self::Big(e) => e.dir.replace(val),
89661            Self::Blink(e) => e.dir.replace(val),
89662            Self::Center(e) => e.dir.replace(val),
89663            Self::Dir(e) => e.dir.replace(val),
89664            Self::Font(e) => e.dir.replace(val),
89665            Self::Frame(e) => e.dir.replace(val),
89666            Self::Frameset(e) => e.dir.replace(val),
89667            Self::Image(e) => e.dir.replace(val),
89668            Self::Keygen(e) => e.dir.replace(val),
89669            Self::Marquee(e) => e.dir.replace(val),
89670            Self::Menuitem(e) => e.dir.replace(val),
89671            Self::Nobr(e) => e.dir.replace(val),
89672            Self::Noembed(e) => e.dir.replace(val),
89673            Self::Noframes(e) => e.dir.replace(val),
89674            Self::Param(e) => e.dir.replace(val),
89675            Self::Plaintext(e) => e.dir.replace(val),
89676            Self::Rb(e) => e.dir.replace(val),
89677            Self::Rtc(e) => e.dir.replace(val),
89678            Self::Spacer(e) => e.dir.replace(val),
89679            Self::Strike(e) => e.dir.replace(val),
89680            Self::Tt(e) => e.dir.replace(val),
89681            Self::Xmp(e) => e.dir.replace(val),
89682            Self::H1(e) => e.dir.replace(val),
89683            Self::H2(e) => e.dir.replace(val),
89684            Self::H3(e) => e.dir.replace(val),
89685            Self::H4(e) => e.dir.replace(val),
89686            Self::H5(e) => e.dir.replace(val),
89687            Self::H6(e) => e.dir.replace(val),
89688            Self::Unknown(e) => e.dir.replace(val),
89689        };
89690    }
89691
89692    ///     <p>An enumerated attribute indicating whether the element can be dragged, using the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">Drag and Drop API</a>. It can have the following values:</p>
89693    ///     <ul>
89694    ///       <li><code>true</code>, which indicates that the element may be dragged</li>
89695    ///       <li><code>false</code>, which indicates that the element may not be dragged.</li>
89696    ///     </ul>
89697    ///   
89698    #[cfg(feature = "alloc")]
89699    pub fn set_draggable(&mut self, val: AttributeValueOwned) {
89700        match self {
89701            Self::Html(e) => e.draggable.replace(val),
89702            Self::Base(e) => e.draggable.replace(val),
89703            Self::Head(e) => e.draggable.replace(val),
89704            Self::Link(e) => e.draggable.replace(val),
89705            Self::Meta(e) => e.draggable.replace(val),
89706            Self::Style(e) => e.draggable.replace(val),
89707            Self::Title(e) => e.draggable.replace(val),
89708            Self::Body(e) => e.draggable.replace(val),
89709            Self::Address(e) => e.draggable.replace(val),
89710            Self::Article(e) => e.draggable.replace(val),
89711            Self::Aside(e) => e.draggable.replace(val),
89712            Self::Footer(e) => e.draggable.replace(val),
89713            Self::Header(e) => e.draggable.replace(val),
89714            Self::Hgroup(e) => e.draggable.replace(val),
89715            Self::Main(e) => e.draggable.replace(val),
89716            Self::Nav(e) => e.draggable.replace(val),
89717            Self::Section(e) => e.draggable.replace(val),
89718            Self::Blockquote(e) => e.draggable.replace(val),
89719            Self::Dd(e) => e.draggable.replace(val),
89720            Self::Div(e) => e.draggable.replace(val),
89721            Self::Dl(e) => e.draggable.replace(val),
89722            Self::Dt(e) => e.draggable.replace(val),
89723            Self::Figcaption(e) => e.draggable.replace(val),
89724            Self::Figure(e) => e.draggable.replace(val),
89725            Self::Hr(e) => e.draggable.replace(val),
89726            Self::Li(e) => e.draggable.replace(val),
89727            Self::Menu(e) => e.draggable.replace(val),
89728            Self::Ol(e) => e.draggable.replace(val),
89729            Self::P(e) => e.draggable.replace(val),
89730            Self::Pre(e) => e.draggable.replace(val),
89731            Self::Ul(e) => e.draggable.replace(val),
89732            Self::A(e) => e.draggable.replace(val),
89733            Self::Abbr(e) => e.draggable.replace(val),
89734            Self::B(e) => e.draggable.replace(val),
89735            Self::Bdi(e) => e.draggable.replace(val),
89736            Self::Bdo(e) => e.draggable.replace(val),
89737            Self::Br(e) => e.draggable.replace(val),
89738            Self::Cite(e) => e.draggable.replace(val),
89739            Self::Code(e) => e.draggable.replace(val),
89740            Self::Data(e) => e.draggable.replace(val),
89741            Self::Dfn(e) => e.draggable.replace(val),
89742            Self::Em(e) => e.draggable.replace(val),
89743            Self::I(e) => e.draggable.replace(val),
89744            Self::Kbd(e) => e.draggable.replace(val),
89745            Self::Mark(e) => e.draggable.replace(val),
89746            Self::Q(e) => e.draggable.replace(val),
89747            Self::Rp(e) => e.draggable.replace(val),
89748            Self::Rt(e) => e.draggable.replace(val),
89749            Self::Ruby(e) => e.draggable.replace(val),
89750            Self::S(e) => e.draggable.replace(val),
89751            Self::Samp(e) => e.draggable.replace(val),
89752            Self::Small(e) => e.draggable.replace(val),
89753            Self::Span(e) => e.draggable.replace(val),
89754            Self::Strong(e) => e.draggable.replace(val),
89755            Self::Sub(e) => e.draggable.replace(val),
89756            Self::Sup(e) => e.draggable.replace(val),
89757            Self::Time(e) => e.draggable.replace(val),
89758            Self::U(e) => e.draggable.replace(val),
89759            Self::Var(e) => e.draggable.replace(val),
89760            Self::Wbr(e) => e.draggable.replace(val),
89761            Self::Area(e) => e.draggable.replace(val),
89762            Self::Audio(e) => e.draggable.replace(val),
89763            Self::Img(e) => e.draggable.replace(val),
89764            Self::Map(e) => e.draggable.replace(val),
89765            Self::Track(e) => e.draggable.replace(val),
89766            Self::Video(e) => e.draggable.replace(val),
89767            Self::Embed(e) => e.draggable.replace(val),
89768            Self::Iframe(e) => e.draggable.replace(val),
89769            Self::Object(e) => e.draggable.replace(val),
89770            Self::Picture(e) => e.draggable.replace(val),
89771            Self::Portal(e) => e.draggable.replace(val),
89772            Self::Source(e) => e.draggable.replace(val),
89773            Self::Canvas(e) => e.draggable.replace(val),
89774            Self::Noscript(e) => e.draggable.replace(val),
89775            Self::Script(e) => e.draggable.replace(val),
89776            Self::Del(e) => e.draggable.replace(val),
89777            Self::Ins(e) => e.draggable.replace(val),
89778            Self::Caption(e) => e.draggable.replace(val),
89779            Self::Col(e) => e.draggable.replace(val),
89780            Self::Colgroup(e) => e.draggable.replace(val),
89781            Self::Table(e) => e.draggable.replace(val),
89782            Self::Tbody(e) => e.draggable.replace(val),
89783            Self::Td(e) => e.draggable.replace(val),
89784            Self::Tfoot(e) => e.draggable.replace(val),
89785            Self::Th(e) => e.draggable.replace(val),
89786            Self::Thead(e) => e.draggable.replace(val),
89787            Self::Tr(e) => e.draggable.replace(val),
89788            Self::Button(e) => e.draggable.replace(val),
89789            Self::Datalist(e) => e.draggable.replace(val),
89790            Self::Fieldset(e) => e.draggable.replace(val),
89791            Self::Form(e) => e.draggable.replace(val),
89792            Self::Input(e) => e.draggable.replace(val),
89793            Self::Label(e) => e.draggable.replace(val),
89794            Self::Legend(e) => e.draggable.replace(val),
89795            Self::Meter(e) => e.draggable.replace(val),
89796            Self::Optgroup(e) => e.draggable.replace(val),
89797            Self::Option(e) => e.draggable.replace(val),
89798            Self::Output(e) => e.draggable.replace(val),
89799            Self::Progress(e) => e.draggable.replace(val),
89800            Self::Select(e) => e.draggable.replace(val),
89801            Self::Textarea(e) => e.draggable.replace(val),
89802            Self::Details(e) => e.draggable.replace(val),
89803            Self::Dialog(e) => e.draggable.replace(val),
89804            Self::Summary(e) => e.draggable.replace(val),
89805            Self::Slot(e) => e.draggable.replace(val),
89806            Self::Template(e) => e.draggable.replace(val),
89807            Self::Acronym(e) => e.draggable.replace(val),
89808            Self::Applet(e) => e.draggable.replace(val),
89809            Self::Bgsound(e) => e.draggable.replace(val),
89810            Self::Big(e) => e.draggable.replace(val),
89811            Self::Blink(e) => e.draggable.replace(val),
89812            Self::Center(e) => e.draggable.replace(val),
89813            Self::Dir(e) => e.draggable.replace(val),
89814            Self::Font(e) => e.draggable.replace(val),
89815            Self::Frame(e) => e.draggable.replace(val),
89816            Self::Frameset(e) => e.draggable.replace(val),
89817            Self::Image(e) => e.draggable.replace(val),
89818            Self::Keygen(e) => e.draggable.replace(val),
89819            Self::Marquee(e) => e.draggable.replace(val),
89820            Self::Menuitem(e) => e.draggable.replace(val),
89821            Self::Nobr(e) => e.draggable.replace(val),
89822            Self::Noembed(e) => e.draggable.replace(val),
89823            Self::Noframes(e) => e.draggable.replace(val),
89824            Self::Param(e) => e.draggable.replace(val),
89825            Self::Plaintext(e) => e.draggable.replace(val),
89826            Self::Rb(e) => e.draggable.replace(val),
89827            Self::Rtc(e) => e.draggable.replace(val),
89828            Self::Spacer(e) => e.draggable.replace(val),
89829            Self::Strike(e) => e.draggable.replace(val),
89830            Self::Tt(e) => e.draggable.replace(val),
89831            Self::Xmp(e) => e.draggable.replace(val),
89832            Self::H1(e) => e.draggable.replace(val),
89833            Self::H2(e) => e.draggable.replace(val),
89834            Self::H3(e) => e.draggable.replace(val),
89835            Self::H4(e) => e.draggable.replace(val),
89836            Self::H5(e) => e.draggable.replace(val),
89837            Self::H6(e) => e.draggable.replace(val),
89838            Self::Unknown(e) => e.draggable.replace(val),
89839        };
89840    }
89841
89842    ///     <p>Hints what action label (or icon) to present for the enter key on virtual keyboards.</p>
89843    ///   
89844    #[cfg(feature = "alloc")]
89845    pub fn set_enterkeyhint(&mut self, val: AttributeValueOwned) {
89846        match self {
89847            Self::Html(e) => e.enterkeyhint.replace(val),
89848            Self::Base(e) => e.enterkeyhint.replace(val),
89849            Self::Head(e) => e.enterkeyhint.replace(val),
89850            Self::Link(e) => e.enterkeyhint.replace(val),
89851            Self::Meta(e) => e.enterkeyhint.replace(val),
89852            Self::Style(e) => e.enterkeyhint.replace(val),
89853            Self::Title(e) => e.enterkeyhint.replace(val),
89854            Self::Body(e) => e.enterkeyhint.replace(val),
89855            Self::Address(e) => e.enterkeyhint.replace(val),
89856            Self::Article(e) => e.enterkeyhint.replace(val),
89857            Self::Aside(e) => e.enterkeyhint.replace(val),
89858            Self::Footer(e) => e.enterkeyhint.replace(val),
89859            Self::Header(e) => e.enterkeyhint.replace(val),
89860            Self::Hgroup(e) => e.enterkeyhint.replace(val),
89861            Self::Main(e) => e.enterkeyhint.replace(val),
89862            Self::Nav(e) => e.enterkeyhint.replace(val),
89863            Self::Section(e) => e.enterkeyhint.replace(val),
89864            Self::Blockquote(e) => e.enterkeyhint.replace(val),
89865            Self::Dd(e) => e.enterkeyhint.replace(val),
89866            Self::Div(e) => e.enterkeyhint.replace(val),
89867            Self::Dl(e) => e.enterkeyhint.replace(val),
89868            Self::Dt(e) => e.enterkeyhint.replace(val),
89869            Self::Figcaption(e) => e.enterkeyhint.replace(val),
89870            Self::Figure(e) => e.enterkeyhint.replace(val),
89871            Self::Hr(e) => e.enterkeyhint.replace(val),
89872            Self::Li(e) => e.enterkeyhint.replace(val),
89873            Self::Menu(e) => e.enterkeyhint.replace(val),
89874            Self::Ol(e) => e.enterkeyhint.replace(val),
89875            Self::P(e) => e.enterkeyhint.replace(val),
89876            Self::Pre(e) => e.enterkeyhint.replace(val),
89877            Self::Ul(e) => e.enterkeyhint.replace(val),
89878            Self::A(e) => e.enterkeyhint.replace(val),
89879            Self::Abbr(e) => e.enterkeyhint.replace(val),
89880            Self::B(e) => e.enterkeyhint.replace(val),
89881            Self::Bdi(e) => e.enterkeyhint.replace(val),
89882            Self::Bdo(e) => e.enterkeyhint.replace(val),
89883            Self::Br(e) => e.enterkeyhint.replace(val),
89884            Self::Cite(e) => e.enterkeyhint.replace(val),
89885            Self::Code(e) => e.enterkeyhint.replace(val),
89886            Self::Data(e) => e.enterkeyhint.replace(val),
89887            Self::Dfn(e) => e.enterkeyhint.replace(val),
89888            Self::Em(e) => e.enterkeyhint.replace(val),
89889            Self::I(e) => e.enterkeyhint.replace(val),
89890            Self::Kbd(e) => e.enterkeyhint.replace(val),
89891            Self::Mark(e) => e.enterkeyhint.replace(val),
89892            Self::Q(e) => e.enterkeyhint.replace(val),
89893            Self::Rp(e) => e.enterkeyhint.replace(val),
89894            Self::Rt(e) => e.enterkeyhint.replace(val),
89895            Self::Ruby(e) => e.enterkeyhint.replace(val),
89896            Self::S(e) => e.enterkeyhint.replace(val),
89897            Self::Samp(e) => e.enterkeyhint.replace(val),
89898            Self::Small(e) => e.enterkeyhint.replace(val),
89899            Self::Span(e) => e.enterkeyhint.replace(val),
89900            Self::Strong(e) => e.enterkeyhint.replace(val),
89901            Self::Sub(e) => e.enterkeyhint.replace(val),
89902            Self::Sup(e) => e.enterkeyhint.replace(val),
89903            Self::Time(e) => e.enterkeyhint.replace(val),
89904            Self::U(e) => e.enterkeyhint.replace(val),
89905            Self::Var(e) => e.enterkeyhint.replace(val),
89906            Self::Wbr(e) => e.enterkeyhint.replace(val),
89907            Self::Area(e) => e.enterkeyhint.replace(val),
89908            Self::Audio(e) => e.enterkeyhint.replace(val),
89909            Self::Img(e) => e.enterkeyhint.replace(val),
89910            Self::Map(e) => e.enterkeyhint.replace(val),
89911            Self::Track(e) => e.enterkeyhint.replace(val),
89912            Self::Video(e) => e.enterkeyhint.replace(val),
89913            Self::Embed(e) => e.enterkeyhint.replace(val),
89914            Self::Iframe(e) => e.enterkeyhint.replace(val),
89915            Self::Object(e) => e.enterkeyhint.replace(val),
89916            Self::Picture(e) => e.enterkeyhint.replace(val),
89917            Self::Portal(e) => e.enterkeyhint.replace(val),
89918            Self::Source(e) => e.enterkeyhint.replace(val),
89919            Self::Canvas(e) => e.enterkeyhint.replace(val),
89920            Self::Noscript(e) => e.enterkeyhint.replace(val),
89921            Self::Script(e) => e.enterkeyhint.replace(val),
89922            Self::Del(e) => e.enterkeyhint.replace(val),
89923            Self::Ins(e) => e.enterkeyhint.replace(val),
89924            Self::Caption(e) => e.enterkeyhint.replace(val),
89925            Self::Col(e) => e.enterkeyhint.replace(val),
89926            Self::Colgroup(e) => e.enterkeyhint.replace(val),
89927            Self::Table(e) => e.enterkeyhint.replace(val),
89928            Self::Tbody(e) => e.enterkeyhint.replace(val),
89929            Self::Td(e) => e.enterkeyhint.replace(val),
89930            Self::Tfoot(e) => e.enterkeyhint.replace(val),
89931            Self::Th(e) => e.enterkeyhint.replace(val),
89932            Self::Thead(e) => e.enterkeyhint.replace(val),
89933            Self::Tr(e) => e.enterkeyhint.replace(val),
89934            Self::Button(e) => e.enterkeyhint.replace(val),
89935            Self::Datalist(e) => e.enterkeyhint.replace(val),
89936            Self::Fieldset(e) => e.enterkeyhint.replace(val),
89937            Self::Form(e) => e.enterkeyhint.replace(val),
89938            Self::Input(e) => e.enterkeyhint.replace(val),
89939            Self::Label(e) => e.enterkeyhint.replace(val),
89940            Self::Legend(e) => e.enterkeyhint.replace(val),
89941            Self::Meter(e) => e.enterkeyhint.replace(val),
89942            Self::Optgroup(e) => e.enterkeyhint.replace(val),
89943            Self::Option(e) => e.enterkeyhint.replace(val),
89944            Self::Output(e) => e.enterkeyhint.replace(val),
89945            Self::Progress(e) => e.enterkeyhint.replace(val),
89946            Self::Select(e) => e.enterkeyhint.replace(val),
89947            Self::Textarea(e) => e.enterkeyhint.replace(val),
89948            Self::Details(e) => e.enterkeyhint.replace(val),
89949            Self::Dialog(e) => e.enterkeyhint.replace(val),
89950            Self::Summary(e) => e.enterkeyhint.replace(val),
89951            Self::Slot(e) => e.enterkeyhint.replace(val),
89952            Self::Template(e) => e.enterkeyhint.replace(val),
89953            Self::Acronym(e) => e.enterkeyhint.replace(val),
89954            Self::Applet(e) => e.enterkeyhint.replace(val),
89955            Self::Bgsound(e) => e.enterkeyhint.replace(val),
89956            Self::Big(e) => e.enterkeyhint.replace(val),
89957            Self::Blink(e) => e.enterkeyhint.replace(val),
89958            Self::Center(e) => e.enterkeyhint.replace(val),
89959            Self::Dir(e) => e.enterkeyhint.replace(val),
89960            Self::Font(e) => e.enterkeyhint.replace(val),
89961            Self::Frame(e) => e.enterkeyhint.replace(val),
89962            Self::Frameset(e) => e.enterkeyhint.replace(val),
89963            Self::Image(e) => e.enterkeyhint.replace(val),
89964            Self::Keygen(e) => e.enterkeyhint.replace(val),
89965            Self::Marquee(e) => e.enterkeyhint.replace(val),
89966            Self::Menuitem(e) => e.enterkeyhint.replace(val),
89967            Self::Nobr(e) => e.enterkeyhint.replace(val),
89968            Self::Noembed(e) => e.enterkeyhint.replace(val),
89969            Self::Noframes(e) => e.enterkeyhint.replace(val),
89970            Self::Param(e) => e.enterkeyhint.replace(val),
89971            Self::Plaintext(e) => e.enterkeyhint.replace(val),
89972            Self::Rb(e) => e.enterkeyhint.replace(val),
89973            Self::Rtc(e) => e.enterkeyhint.replace(val),
89974            Self::Spacer(e) => e.enterkeyhint.replace(val),
89975            Self::Strike(e) => e.enterkeyhint.replace(val),
89976            Self::Tt(e) => e.enterkeyhint.replace(val),
89977            Self::Xmp(e) => e.enterkeyhint.replace(val),
89978            Self::H1(e) => e.enterkeyhint.replace(val),
89979            Self::H2(e) => e.enterkeyhint.replace(val),
89980            Self::H3(e) => e.enterkeyhint.replace(val),
89981            Self::H4(e) => e.enterkeyhint.replace(val),
89982            Self::H5(e) => e.enterkeyhint.replace(val),
89983            Self::H6(e) => e.enterkeyhint.replace(val),
89984            Self::Unknown(e) => e.enterkeyhint.replace(val),
89985        };
89986    }
89987
89988    ///     <p>Used to transitively export shadow parts from a nested shadow tree into a containing light tree.</p>
89989    ///   
89990    #[cfg(feature = "alloc")]
89991    pub fn set_exportparts(&mut self, val: AttributeValueOwned) {
89992        match self {
89993            Self::Html(e) => e.exportparts.replace(val),
89994            Self::Base(e) => e.exportparts.replace(val),
89995            Self::Head(e) => e.exportparts.replace(val),
89996            Self::Link(e) => e.exportparts.replace(val),
89997            Self::Meta(e) => e.exportparts.replace(val),
89998            Self::Style(e) => e.exportparts.replace(val),
89999            Self::Title(e) => e.exportparts.replace(val),
90000            Self::Body(e) => e.exportparts.replace(val),
90001            Self::Address(e) => e.exportparts.replace(val),
90002            Self::Article(e) => e.exportparts.replace(val),
90003            Self::Aside(e) => e.exportparts.replace(val),
90004            Self::Footer(e) => e.exportparts.replace(val),
90005            Self::Header(e) => e.exportparts.replace(val),
90006            Self::Hgroup(e) => e.exportparts.replace(val),
90007            Self::Main(e) => e.exportparts.replace(val),
90008            Self::Nav(e) => e.exportparts.replace(val),
90009            Self::Section(e) => e.exportparts.replace(val),
90010            Self::Blockquote(e) => e.exportparts.replace(val),
90011            Self::Dd(e) => e.exportparts.replace(val),
90012            Self::Div(e) => e.exportparts.replace(val),
90013            Self::Dl(e) => e.exportparts.replace(val),
90014            Self::Dt(e) => e.exportparts.replace(val),
90015            Self::Figcaption(e) => e.exportparts.replace(val),
90016            Self::Figure(e) => e.exportparts.replace(val),
90017            Self::Hr(e) => e.exportparts.replace(val),
90018            Self::Li(e) => e.exportparts.replace(val),
90019            Self::Menu(e) => e.exportparts.replace(val),
90020            Self::Ol(e) => e.exportparts.replace(val),
90021            Self::P(e) => e.exportparts.replace(val),
90022            Self::Pre(e) => e.exportparts.replace(val),
90023            Self::Ul(e) => e.exportparts.replace(val),
90024            Self::A(e) => e.exportparts.replace(val),
90025            Self::Abbr(e) => e.exportparts.replace(val),
90026            Self::B(e) => e.exportparts.replace(val),
90027            Self::Bdi(e) => e.exportparts.replace(val),
90028            Self::Bdo(e) => e.exportparts.replace(val),
90029            Self::Br(e) => e.exportparts.replace(val),
90030            Self::Cite(e) => e.exportparts.replace(val),
90031            Self::Code(e) => e.exportparts.replace(val),
90032            Self::Data(e) => e.exportparts.replace(val),
90033            Self::Dfn(e) => e.exportparts.replace(val),
90034            Self::Em(e) => e.exportparts.replace(val),
90035            Self::I(e) => e.exportparts.replace(val),
90036            Self::Kbd(e) => e.exportparts.replace(val),
90037            Self::Mark(e) => e.exportparts.replace(val),
90038            Self::Q(e) => e.exportparts.replace(val),
90039            Self::Rp(e) => e.exportparts.replace(val),
90040            Self::Rt(e) => e.exportparts.replace(val),
90041            Self::Ruby(e) => e.exportparts.replace(val),
90042            Self::S(e) => e.exportparts.replace(val),
90043            Self::Samp(e) => e.exportparts.replace(val),
90044            Self::Small(e) => e.exportparts.replace(val),
90045            Self::Span(e) => e.exportparts.replace(val),
90046            Self::Strong(e) => e.exportparts.replace(val),
90047            Self::Sub(e) => e.exportparts.replace(val),
90048            Self::Sup(e) => e.exportparts.replace(val),
90049            Self::Time(e) => e.exportparts.replace(val),
90050            Self::U(e) => e.exportparts.replace(val),
90051            Self::Var(e) => e.exportparts.replace(val),
90052            Self::Wbr(e) => e.exportparts.replace(val),
90053            Self::Area(e) => e.exportparts.replace(val),
90054            Self::Audio(e) => e.exportparts.replace(val),
90055            Self::Img(e) => e.exportparts.replace(val),
90056            Self::Map(e) => e.exportparts.replace(val),
90057            Self::Track(e) => e.exportparts.replace(val),
90058            Self::Video(e) => e.exportparts.replace(val),
90059            Self::Embed(e) => e.exportparts.replace(val),
90060            Self::Iframe(e) => e.exportparts.replace(val),
90061            Self::Object(e) => e.exportparts.replace(val),
90062            Self::Picture(e) => e.exportparts.replace(val),
90063            Self::Portal(e) => e.exportparts.replace(val),
90064            Self::Source(e) => e.exportparts.replace(val),
90065            Self::Canvas(e) => e.exportparts.replace(val),
90066            Self::Noscript(e) => e.exportparts.replace(val),
90067            Self::Script(e) => e.exportparts.replace(val),
90068            Self::Del(e) => e.exportparts.replace(val),
90069            Self::Ins(e) => e.exportparts.replace(val),
90070            Self::Caption(e) => e.exportparts.replace(val),
90071            Self::Col(e) => e.exportparts.replace(val),
90072            Self::Colgroup(e) => e.exportparts.replace(val),
90073            Self::Table(e) => e.exportparts.replace(val),
90074            Self::Tbody(e) => e.exportparts.replace(val),
90075            Self::Td(e) => e.exportparts.replace(val),
90076            Self::Tfoot(e) => e.exportparts.replace(val),
90077            Self::Th(e) => e.exportparts.replace(val),
90078            Self::Thead(e) => e.exportparts.replace(val),
90079            Self::Tr(e) => e.exportparts.replace(val),
90080            Self::Button(e) => e.exportparts.replace(val),
90081            Self::Datalist(e) => e.exportparts.replace(val),
90082            Self::Fieldset(e) => e.exportparts.replace(val),
90083            Self::Form(e) => e.exportparts.replace(val),
90084            Self::Input(e) => e.exportparts.replace(val),
90085            Self::Label(e) => e.exportparts.replace(val),
90086            Self::Legend(e) => e.exportparts.replace(val),
90087            Self::Meter(e) => e.exportparts.replace(val),
90088            Self::Optgroup(e) => e.exportparts.replace(val),
90089            Self::Option(e) => e.exportparts.replace(val),
90090            Self::Output(e) => e.exportparts.replace(val),
90091            Self::Progress(e) => e.exportparts.replace(val),
90092            Self::Select(e) => e.exportparts.replace(val),
90093            Self::Textarea(e) => e.exportparts.replace(val),
90094            Self::Details(e) => e.exportparts.replace(val),
90095            Self::Dialog(e) => e.exportparts.replace(val),
90096            Self::Summary(e) => e.exportparts.replace(val),
90097            Self::Slot(e) => e.exportparts.replace(val),
90098            Self::Template(e) => e.exportparts.replace(val),
90099            Self::Acronym(e) => e.exportparts.replace(val),
90100            Self::Applet(e) => e.exportparts.replace(val),
90101            Self::Bgsound(e) => e.exportparts.replace(val),
90102            Self::Big(e) => e.exportparts.replace(val),
90103            Self::Blink(e) => e.exportparts.replace(val),
90104            Self::Center(e) => e.exportparts.replace(val),
90105            Self::Dir(e) => e.exportparts.replace(val),
90106            Self::Font(e) => e.exportparts.replace(val),
90107            Self::Frame(e) => e.exportparts.replace(val),
90108            Self::Frameset(e) => e.exportparts.replace(val),
90109            Self::Image(e) => e.exportparts.replace(val),
90110            Self::Keygen(e) => e.exportparts.replace(val),
90111            Self::Marquee(e) => e.exportparts.replace(val),
90112            Self::Menuitem(e) => e.exportparts.replace(val),
90113            Self::Nobr(e) => e.exportparts.replace(val),
90114            Self::Noembed(e) => e.exportparts.replace(val),
90115            Self::Noframes(e) => e.exportparts.replace(val),
90116            Self::Param(e) => e.exportparts.replace(val),
90117            Self::Plaintext(e) => e.exportparts.replace(val),
90118            Self::Rb(e) => e.exportparts.replace(val),
90119            Self::Rtc(e) => e.exportparts.replace(val),
90120            Self::Spacer(e) => e.exportparts.replace(val),
90121            Self::Strike(e) => e.exportparts.replace(val),
90122            Self::Tt(e) => e.exportparts.replace(val),
90123            Self::Xmp(e) => e.exportparts.replace(val),
90124            Self::H1(e) => e.exportparts.replace(val),
90125            Self::H2(e) => e.exportparts.replace(val),
90126            Self::H3(e) => e.exportparts.replace(val),
90127            Self::H4(e) => e.exportparts.replace(val),
90128            Self::H5(e) => e.exportparts.replace(val),
90129            Self::H6(e) => e.exportparts.replace(val),
90130            Self::Unknown(e) => e.exportparts.replace(val),
90131        };
90132    }
90133
90134    ///     <p>An enumerated attribute indicating that the element is not yet, or is no longer, <em>relevant</em>. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.</p>
90135    ///   
90136    #[cfg(feature = "alloc")]
90137    pub fn set_hidden(&mut self, val: AttributeValueOwned) {
90138        match self {
90139            Self::Html(e) => e.hidden.replace(val),
90140            Self::Base(e) => e.hidden.replace(val),
90141            Self::Head(e) => e.hidden.replace(val),
90142            Self::Link(e) => e.hidden.replace(val),
90143            Self::Meta(e) => e.hidden.replace(val),
90144            Self::Style(e) => e.hidden.replace(val),
90145            Self::Title(e) => e.hidden.replace(val),
90146            Self::Body(e) => e.hidden.replace(val),
90147            Self::Address(e) => e.hidden.replace(val),
90148            Self::Article(e) => e.hidden.replace(val),
90149            Self::Aside(e) => e.hidden.replace(val),
90150            Self::Footer(e) => e.hidden.replace(val),
90151            Self::Header(e) => e.hidden.replace(val),
90152            Self::Hgroup(e) => e.hidden.replace(val),
90153            Self::Main(e) => e.hidden.replace(val),
90154            Self::Nav(e) => e.hidden.replace(val),
90155            Self::Section(e) => e.hidden.replace(val),
90156            Self::Blockquote(e) => e.hidden.replace(val),
90157            Self::Dd(e) => e.hidden.replace(val),
90158            Self::Div(e) => e.hidden.replace(val),
90159            Self::Dl(e) => e.hidden.replace(val),
90160            Self::Dt(e) => e.hidden.replace(val),
90161            Self::Figcaption(e) => e.hidden.replace(val),
90162            Self::Figure(e) => e.hidden.replace(val),
90163            Self::Hr(e) => e.hidden.replace(val),
90164            Self::Li(e) => e.hidden.replace(val),
90165            Self::Menu(e) => e.hidden.replace(val),
90166            Self::Ol(e) => e.hidden.replace(val),
90167            Self::P(e) => e.hidden.replace(val),
90168            Self::Pre(e) => e.hidden.replace(val),
90169            Self::Ul(e) => e.hidden.replace(val),
90170            Self::A(e) => e.hidden.replace(val),
90171            Self::Abbr(e) => e.hidden.replace(val),
90172            Self::B(e) => e.hidden.replace(val),
90173            Self::Bdi(e) => e.hidden.replace(val),
90174            Self::Bdo(e) => e.hidden.replace(val),
90175            Self::Br(e) => e.hidden.replace(val),
90176            Self::Cite(e) => e.hidden.replace(val),
90177            Self::Code(e) => e.hidden.replace(val),
90178            Self::Data(e) => e.hidden.replace(val),
90179            Self::Dfn(e) => e.hidden.replace(val),
90180            Self::Em(e) => e.hidden.replace(val),
90181            Self::I(e) => e.hidden.replace(val),
90182            Self::Kbd(e) => e.hidden.replace(val),
90183            Self::Mark(e) => e.hidden.replace(val),
90184            Self::Q(e) => e.hidden.replace(val),
90185            Self::Rp(e) => e.hidden.replace(val),
90186            Self::Rt(e) => e.hidden.replace(val),
90187            Self::Ruby(e) => e.hidden.replace(val),
90188            Self::S(e) => e.hidden.replace(val),
90189            Self::Samp(e) => e.hidden.replace(val),
90190            Self::Small(e) => e.hidden.replace(val),
90191            Self::Span(e) => e.hidden.replace(val),
90192            Self::Strong(e) => e.hidden.replace(val),
90193            Self::Sub(e) => e.hidden.replace(val),
90194            Self::Sup(e) => e.hidden.replace(val),
90195            Self::Time(e) => e.hidden.replace(val),
90196            Self::U(e) => e.hidden.replace(val),
90197            Self::Var(e) => e.hidden.replace(val),
90198            Self::Wbr(e) => e.hidden.replace(val),
90199            Self::Area(e) => e.hidden.replace(val),
90200            Self::Audio(e) => e.hidden.replace(val),
90201            Self::Img(e) => e.hidden.replace(val),
90202            Self::Map(e) => e.hidden.replace(val),
90203            Self::Track(e) => e.hidden.replace(val),
90204            Self::Video(e) => e.hidden.replace(val),
90205            Self::Embed(e) => e.hidden.replace(val),
90206            Self::Iframe(e) => e.hidden.replace(val),
90207            Self::Object(e) => e.hidden.replace(val),
90208            Self::Picture(e) => e.hidden.replace(val),
90209            Self::Portal(e) => e.hidden.replace(val),
90210            Self::Source(e) => e.hidden.replace(val),
90211            Self::Canvas(e) => e.hidden.replace(val),
90212            Self::Noscript(e) => e.hidden.replace(val),
90213            Self::Script(e) => e.hidden.replace(val),
90214            Self::Del(e) => e.hidden.replace(val),
90215            Self::Ins(e) => e.hidden.replace(val),
90216            Self::Caption(e) => e.hidden.replace(val),
90217            Self::Col(e) => e.hidden.replace(val),
90218            Self::Colgroup(e) => e.hidden.replace(val),
90219            Self::Table(e) => e.hidden.replace(val),
90220            Self::Tbody(e) => e.hidden.replace(val),
90221            Self::Td(e) => e.hidden.replace(val),
90222            Self::Tfoot(e) => e.hidden.replace(val),
90223            Self::Th(e) => e.hidden.replace(val),
90224            Self::Thead(e) => e.hidden.replace(val),
90225            Self::Tr(e) => e.hidden.replace(val),
90226            Self::Button(e) => e.hidden.replace(val),
90227            Self::Datalist(e) => e.hidden.replace(val),
90228            Self::Fieldset(e) => e.hidden.replace(val),
90229            Self::Form(e) => e.hidden.replace(val),
90230            Self::Input(e) => e.hidden.replace(val),
90231            Self::Label(e) => e.hidden.replace(val),
90232            Self::Legend(e) => e.hidden.replace(val),
90233            Self::Meter(e) => e.hidden.replace(val),
90234            Self::Optgroup(e) => e.hidden.replace(val),
90235            Self::Option(e) => e.hidden.replace(val),
90236            Self::Output(e) => e.hidden.replace(val),
90237            Self::Progress(e) => e.hidden.replace(val),
90238            Self::Select(e) => e.hidden.replace(val),
90239            Self::Textarea(e) => e.hidden.replace(val),
90240            Self::Details(e) => e.hidden.replace(val),
90241            Self::Dialog(e) => e.hidden.replace(val),
90242            Self::Summary(e) => e.hidden.replace(val),
90243            Self::Slot(e) => e.hidden.replace(val),
90244            Self::Template(e) => e.hidden.replace(val),
90245            Self::Acronym(e) => e.hidden.replace(val),
90246            Self::Applet(e) => e.hidden.replace(val),
90247            Self::Bgsound(e) => e.hidden.replace(val),
90248            Self::Big(e) => e.hidden.replace(val),
90249            Self::Blink(e) => e.hidden.replace(val),
90250            Self::Center(e) => e.hidden.replace(val),
90251            Self::Dir(e) => e.hidden.replace(val),
90252            Self::Font(e) => e.hidden.replace(val),
90253            Self::Frame(e) => e.hidden.replace(val),
90254            Self::Frameset(e) => e.hidden.replace(val),
90255            Self::Image(e) => e.hidden.replace(val),
90256            Self::Keygen(e) => e.hidden.replace(val),
90257            Self::Marquee(e) => e.hidden.replace(val),
90258            Self::Menuitem(e) => e.hidden.replace(val),
90259            Self::Nobr(e) => e.hidden.replace(val),
90260            Self::Noembed(e) => e.hidden.replace(val),
90261            Self::Noframes(e) => e.hidden.replace(val),
90262            Self::Param(e) => e.hidden.replace(val),
90263            Self::Plaintext(e) => e.hidden.replace(val),
90264            Self::Rb(e) => e.hidden.replace(val),
90265            Self::Rtc(e) => e.hidden.replace(val),
90266            Self::Spacer(e) => e.hidden.replace(val),
90267            Self::Strike(e) => e.hidden.replace(val),
90268            Self::Tt(e) => e.hidden.replace(val),
90269            Self::Xmp(e) => e.hidden.replace(val),
90270            Self::H1(e) => e.hidden.replace(val),
90271            Self::H2(e) => e.hidden.replace(val),
90272            Self::H3(e) => e.hidden.replace(val),
90273            Self::H4(e) => e.hidden.replace(val),
90274            Self::H5(e) => e.hidden.replace(val),
90275            Self::H6(e) => e.hidden.replace(val),
90276            Self::Unknown(e) => e.hidden.replace(val),
90277        };
90278    }
90279
90280    ///     <p>Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).</p>
90281    ///   
90282    #[cfg(feature = "alloc")]
90283    pub fn set_id(&mut self, val: AttributeValueOwned) {
90284        match self {
90285            Self::Html(e) => e.id.replace(val),
90286            Self::Base(e) => e.id.replace(val),
90287            Self::Head(e) => e.id.replace(val),
90288            Self::Link(e) => e.id.replace(val),
90289            Self::Meta(e) => e.id.replace(val),
90290            Self::Style(e) => e.id.replace(val),
90291            Self::Title(e) => e.id.replace(val),
90292            Self::Body(e) => e.id.replace(val),
90293            Self::Address(e) => e.id.replace(val),
90294            Self::Article(e) => e.id.replace(val),
90295            Self::Aside(e) => e.id.replace(val),
90296            Self::Footer(e) => e.id.replace(val),
90297            Self::Header(e) => e.id.replace(val),
90298            Self::Hgroup(e) => e.id.replace(val),
90299            Self::Main(e) => e.id.replace(val),
90300            Self::Nav(e) => e.id.replace(val),
90301            Self::Section(e) => e.id.replace(val),
90302            Self::Blockquote(e) => e.id.replace(val),
90303            Self::Dd(e) => e.id.replace(val),
90304            Self::Div(e) => e.id.replace(val),
90305            Self::Dl(e) => e.id.replace(val),
90306            Self::Dt(e) => e.id.replace(val),
90307            Self::Figcaption(e) => e.id.replace(val),
90308            Self::Figure(e) => e.id.replace(val),
90309            Self::Hr(e) => e.id.replace(val),
90310            Self::Li(e) => e.id.replace(val),
90311            Self::Menu(e) => e.id.replace(val),
90312            Self::Ol(e) => e.id.replace(val),
90313            Self::P(e) => e.id.replace(val),
90314            Self::Pre(e) => e.id.replace(val),
90315            Self::Ul(e) => e.id.replace(val),
90316            Self::A(e) => e.id.replace(val),
90317            Self::Abbr(e) => e.id.replace(val),
90318            Self::B(e) => e.id.replace(val),
90319            Self::Bdi(e) => e.id.replace(val),
90320            Self::Bdo(e) => e.id.replace(val),
90321            Self::Br(e) => e.id.replace(val),
90322            Self::Cite(e) => e.id.replace(val),
90323            Self::Code(e) => e.id.replace(val),
90324            Self::Data(e) => e.id.replace(val),
90325            Self::Dfn(e) => e.id.replace(val),
90326            Self::Em(e) => e.id.replace(val),
90327            Self::I(e) => e.id.replace(val),
90328            Self::Kbd(e) => e.id.replace(val),
90329            Self::Mark(e) => e.id.replace(val),
90330            Self::Q(e) => e.id.replace(val),
90331            Self::Rp(e) => e.id.replace(val),
90332            Self::Rt(e) => e.id.replace(val),
90333            Self::Ruby(e) => e.id.replace(val),
90334            Self::S(e) => e.id.replace(val),
90335            Self::Samp(e) => e.id.replace(val),
90336            Self::Small(e) => e.id.replace(val),
90337            Self::Span(e) => e.id.replace(val),
90338            Self::Strong(e) => e.id.replace(val),
90339            Self::Sub(e) => e.id.replace(val),
90340            Self::Sup(e) => e.id.replace(val),
90341            Self::Time(e) => e.id.replace(val),
90342            Self::U(e) => e.id.replace(val),
90343            Self::Var(e) => e.id.replace(val),
90344            Self::Wbr(e) => e.id.replace(val),
90345            Self::Area(e) => e.id.replace(val),
90346            Self::Audio(e) => e.id.replace(val),
90347            Self::Img(e) => e.id.replace(val),
90348            Self::Map(e) => e.id.replace(val),
90349            Self::Track(e) => e.id.replace(val),
90350            Self::Video(e) => e.id.replace(val),
90351            Self::Embed(e) => e.id.replace(val),
90352            Self::Iframe(e) => e.id.replace(val),
90353            Self::Object(e) => e.id.replace(val),
90354            Self::Picture(e) => e.id.replace(val),
90355            Self::Portal(e) => e.id.replace(val),
90356            Self::Source(e) => e.id.replace(val),
90357            Self::Canvas(e) => e.id.replace(val),
90358            Self::Noscript(e) => e.id.replace(val),
90359            Self::Script(e) => e.id.replace(val),
90360            Self::Del(e) => e.id.replace(val),
90361            Self::Ins(e) => e.id.replace(val),
90362            Self::Caption(e) => e.id.replace(val),
90363            Self::Col(e) => e.id.replace(val),
90364            Self::Colgroup(e) => e.id.replace(val),
90365            Self::Table(e) => e.id.replace(val),
90366            Self::Tbody(e) => e.id.replace(val),
90367            Self::Td(e) => e.id.replace(val),
90368            Self::Tfoot(e) => e.id.replace(val),
90369            Self::Th(e) => e.id.replace(val),
90370            Self::Thead(e) => e.id.replace(val),
90371            Self::Tr(e) => e.id.replace(val),
90372            Self::Button(e) => e.id.replace(val),
90373            Self::Datalist(e) => e.id.replace(val),
90374            Self::Fieldset(e) => e.id.replace(val),
90375            Self::Form(e) => e.id.replace(val),
90376            Self::Input(e) => e.id.replace(val),
90377            Self::Label(e) => e.id.replace(val),
90378            Self::Legend(e) => e.id.replace(val),
90379            Self::Meter(e) => e.id.replace(val),
90380            Self::Optgroup(e) => e.id.replace(val),
90381            Self::Option(e) => e.id.replace(val),
90382            Self::Output(e) => e.id.replace(val),
90383            Self::Progress(e) => e.id.replace(val),
90384            Self::Select(e) => e.id.replace(val),
90385            Self::Textarea(e) => e.id.replace(val),
90386            Self::Details(e) => e.id.replace(val),
90387            Self::Dialog(e) => e.id.replace(val),
90388            Self::Summary(e) => e.id.replace(val),
90389            Self::Slot(e) => e.id.replace(val),
90390            Self::Template(e) => e.id.replace(val),
90391            Self::Acronym(e) => e.id.replace(val),
90392            Self::Applet(e) => e.id.replace(val),
90393            Self::Bgsound(e) => e.id.replace(val),
90394            Self::Big(e) => e.id.replace(val),
90395            Self::Blink(e) => e.id.replace(val),
90396            Self::Center(e) => e.id.replace(val),
90397            Self::Dir(e) => e.id.replace(val),
90398            Self::Font(e) => e.id.replace(val),
90399            Self::Frame(e) => e.id.replace(val),
90400            Self::Frameset(e) => e.id.replace(val),
90401            Self::Image(e) => e.id.replace(val),
90402            Self::Keygen(e) => e.id.replace(val),
90403            Self::Marquee(e) => e.id.replace(val),
90404            Self::Menuitem(e) => e.id.replace(val),
90405            Self::Nobr(e) => e.id.replace(val),
90406            Self::Noembed(e) => e.id.replace(val),
90407            Self::Noframes(e) => e.id.replace(val),
90408            Self::Param(e) => e.id.replace(val),
90409            Self::Plaintext(e) => e.id.replace(val),
90410            Self::Rb(e) => e.id.replace(val),
90411            Self::Rtc(e) => e.id.replace(val),
90412            Self::Spacer(e) => e.id.replace(val),
90413            Self::Strike(e) => e.id.replace(val),
90414            Self::Tt(e) => e.id.replace(val),
90415            Self::Xmp(e) => e.id.replace(val),
90416            Self::H1(e) => e.id.replace(val),
90417            Self::H2(e) => e.id.replace(val),
90418            Self::H3(e) => e.id.replace(val),
90419            Self::H4(e) => e.id.replace(val),
90420            Self::H5(e) => e.id.replace(val),
90421            Self::H6(e) => e.id.replace(val),
90422            Self::Unknown(e) => e.id.replace(val),
90423        };
90424    }
90425
90426    ///     <p>A boolean value that makes the browser disregard user input events for the element. Useful when click events are present.</p>
90427    ///   
90428    #[cfg(feature = "alloc")]
90429    pub fn set_inert(&mut self, val: AttributeValueOwned) {
90430        match self {
90431            Self::Html(e) => e.inert.replace(val),
90432            Self::Base(e) => e.inert.replace(val),
90433            Self::Head(e) => e.inert.replace(val),
90434            Self::Link(e) => e.inert.replace(val),
90435            Self::Meta(e) => e.inert.replace(val),
90436            Self::Style(e) => e.inert.replace(val),
90437            Self::Title(e) => e.inert.replace(val),
90438            Self::Body(e) => e.inert.replace(val),
90439            Self::Address(e) => e.inert.replace(val),
90440            Self::Article(e) => e.inert.replace(val),
90441            Self::Aside(e) => e.inert.replace(val),
90442            Self::Footer(e) => e.inert.replace(val),
90443            Self::Header(e) => e.inert.replace(val),
90444            Self::Hgroup(e) => e.inert.replace(val),
90445            Self::Main(e) => e.inert.replace(val),
90446            Self::Nav(e) => e.inert.replace(val),
90447            Self::Section(e) => e.inert.replace(val),
90448            Self::Blockquote(e) => e.inert.replace(val),
90449            Self::Dd(e) => e.inert.replace(val),
90450            Self::Div(e) => e.inert.replace(val),
90451            Self::Dl(e) => e.inert.replace(val),
90452            Self::Dt(e) => e.inert.replace(val),
90453            Self::Figcaption(e) => e.inert.replace(val),
90454            Self::Figure(e) => e.inert.replace(val),
90455            Self::Hr(e) => e.inert.replace(val),
90456            Self::Li(e) => e.inert.replace(val),
90457            Self::Menu(e) => e.inert.replace(val),
90458            Self::Ol(e) => e.inert.replace(val),
90459            Self::P(e) => e.inert.replace(val),
90460            Self::Pre(e) => e.inert.replace(val),
90461            Self::Ul(e) => e.inert.replace(val),
90462            Self::A(e) => e.inert.replace(val),
90463            Self::Abbr(e) => e.inert.replace(val),
90464            Self::B(e) => e.inert.replace(val),
90465            Self::Bdi(e) => e.inert.replace(val),
90466            Self::Bdo(e) => e.inert.replace(val),
90467            Self::Br(e) => e.inert.replace(val),
90468            Self::Cite(e) => e.inert.replace(val),
90469            Self::Code(e) => e.inert.replace(val),
90470            Self::Data(e) => e.inert.replace(val),
90471            Self::Dfn(e) => e.inert.replace(val),
90472            Self::Em(e) => e.inert.replace(val),
90473            Self::I(e) => e.inert.replace(val),
90474            Self::Kbd(e) => e.inert.replace(val),
90475            Self::Mark(e) => e.inert.replace(val),
90476            Self::Q(e) => e.inert.replace(val),
90477            Self::Rp(e) => e.inert.replace(val),
90478            Self::Rt(e) => e.inert.replace(val),
90479            Self::Ruby(e) => e.inert.replace(val),
90480            Self::S(e) => e.inert.replace(val),
90481            Self::Samp(e) => e.inert.replace(val),
90482            Self::Small(e) => e.inert.replace(val),
90483            Self::Span(e) => e.inert.replace(val),
90484            Self::Strong(e) => e.inert.replace(val),
90485            Self::Sub(e) => e.inert.replace(val),
90486            Self::Sup(e) => e.inert.replace(val),
90487            Self::Time(e) => e.inert.replace(val),
90488            Self::U(e) => e.inert.replace(val),
90489            Self::Var(e) => e.inert.replace(val),
90490            Self::Wbr(e) => e.inert.replace(val),
90491            Self::Area(e) => e.inert.replace(val),
90492            Self::Audio(e) => e.inert.replace(val),
90493            Self::Img(e) => e.inert.replace(val),
90494            Self::Map(e) => e.inert.replace(val),
90495            Self::Track(e) => e.inert.replace(val),
90496            Self::Video(e) => e.inert.replace(val),
90497            Self::Embed(e) => e.inert.replace(val),
90498            Self::Iframe(e) => e.inert.replace(val),
90499            Self::Object(e) => e.inert.replace(val),
90500            Self::Picture(e) => e.inert.replace(val),
90501            Self::Portal(e) => e.inert.replace(val),
90502            Self::Source(e) => e.inert.replace(val),
90503            Self::Canvas(e) => e.inert.replace(val),
90504            Self::Noscript(e) => e.inert.replace(val),
90505            Self::Script(e) => e.inert.replace(val),
90506            Self::Del(e) => e.inert.replace(val),
90507            Self::Ins(e) => e.inert.replace(val),
90508            Self::Caption(e) => e.inert.replace(val),
90509            Self::Col(e) => e.inert.replace(val),
90510            Self::Colgroup(e) => e.inert.replace(val),
90511            Self::Table(e) => e.inert.replace(val),
90512            Self::Tbody(e) => e.inert.replace(val),
90513            Self::Td(e) => e.inert.replace(val),
90514            Self::Tfoot(e) => e.inert.replace(val),
90515            Self::Th(e) => e.inert.replace(val),
90516            Self::Thead(e) => e.inert.replace(val),
90517            Self::Tr(e) => e.inert.replace(val),
90518            Self::Button(e) => e.inert.replace(val),
90519            Self::Datalist(e) => e.inert.replace(val),
90520            Self::Fieldset(e) => e.inert.replace(val),
90521            Self::Form(e) => e.inert.replace(val),
90522            Self::Input(e) => e.inert.replace(val),
90523            Self::Label(e) => e.inert.replace(val),
90524            Self::Legend(e) => e.inert.replace(val),
90525            Self::Meter(e) => e.inert.replace(val),
90526            Self::Optgroup(e) => e.inert.replace(val),
90527            Self::Option(e) => e.inert.replace(val),
90528            Self::Output(e) => e.inert.replace(val),
90529            Self::Progress(e) => e.inert.replace(val),
90530            Self::Select(e) => e.inert.replace(val),
90531            Self::Textarea(e) => e.inert.replace(val),
90532            Self::Details(e) => e.inert.replace(val),
90533            Self::Dialog(e) => e.inert.replace(val),
90534            Self::Summary(e) => e.inert.replace(val),
90535            Self::Slot(e) => e.inert.replace(val),
90536            Self::Template(e) => e.inert.replace(val),
90537            Self::Acronym(e) => e.inert.replace(val),
90538            Self::Applet(e) => e.inert.replace(val),
90539            Self::Bgsound(e) => e.inert.replace(val),
90540            Self::Big(e) => e.inert.replace(val),
90541            Self::Blink(e) => e.inert.replace(val),
90542            Self::Center(e) => e.inert.replace(val),
90543            Self::Dir(e) => e.inert.replace(val),
90544            Self::Font(e) => e.inert.replace(val),
90545            Self::Frame(e) => e.inert.replace(val),
90546            Self::Frameset(e) => e.inert.replace(val),
90547            Self::Image(e) => e.inert.replace(val),
90548            Self::Keygen(e) => e.inert.replace(val),
90549            Self::Marquee(e) => e.inert.replace(val),
90550            Self::Menuitem(e) => e.inert.replace(val),
90551            Self::Nobr(e) => e.inert.replace(val),
90552            Self::Noembed(e) => e.inert.replace(val),
90553            Self::Noframes(e) => e.inert.replace(val),
90554            Self::Param(e) => e.inert.replace(val),
90555            Self::Plaintext(e) => e.inert.replace(val),
90556            Self::Rb(e) => e.inert.replace(val),
90557            Self::Rtc(e) => e.inert.replace(val),
90558            Self::Spacer(e) => e.inert.replace(val),
90559            Self::Strike(e) => e.inert.replace(val),
90560            Self::Tt(e) => e.inert.replace(val),
90561            Self::Xmp(e) => e.inert.replace(val),
90562            Self::H1(e) => e.inert.replace(val),
90563            Self::H2(e) => e.inert.replace(val),
90564            Self::H3(e) => e.inert.replace(val),
90565            Self::H4(e) => e.inert.replace(val),
90566            Self::H5(e) => e.inert.replace(val),
90567            Self::H6(e) => e.inert.replace(val),
90568            Self::Unknown(e) => e.inert.replace(val),
90569        };
90570    }
90571
90572    ///     <p>Provides a hint to browsers about the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on <a href="/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code></a> elements, but is usable on any element while in <a href="#contenteditable"><code>contenteditable</code></a> mode.</p>
90573    ///   
90574    #[cfg(feature = "alloc")]
90575    pub fn set_inputmode(&mut self, val: AttributeValueOwned) {
90576        match self {
90577            Self::Html(e) => e.inputmode.replace(val),
90578            Self::Base(e) => e.inputmode.replace(val),
90579            Self::Head(e) => e.inputmode.replace(val),
90580            Self::Link(e) => e.inputmode.replace(val),
90581            Self::Meta(e) => e.inputmode.replace(val),
90582            Self::Style(e) => e.inputmode.replace(val),
90583            Self::Title(e) => e.inputmode.replace(val),
90584            Self::Body(e) => e.inputmode.replace(val),
90585            Self::Address(e) => e.inputmode.replace(val),
90586            Self::Article(e) => e.inputmode.replace(val),
90587            Self::Aside(e) => e.inputmode.replace(val),
90588            Self::Footer(e) => e.inputmode.replace(val),
90589            Self::Header(e) => e.inputmode.replace(val),
90590            Self::Hgroup(e) => e.inputmode.replace(val),
90591            Self::Main(e) => e.inputmode.replace(val),
90592            Self::Nav(e) => e.inputmode.replace(val),
90593            Self::Section(e) => e.inputmode.replace(val),
90594            Self::Blockquote(e) => e.inputmode.replace(val),
90595            Self::Dd(e) => e.inputmode.replace(val),
90596            Self::Div(e) => e.inputmode.replace(val),
90597            Self::Dl(e) => e.inputmode.replace(val),
90598            Self::Dt(e) => e.inputmode.replace(val),
90599            Self::Figcaption(e) => e.inputmode.replace(val),
90600            Self::Figure(e) => e.inputmode.replace(val),
90601            Self::Hr(e) => e.inputmode.replace(val),
90602            Self::Li(e) => e.inputmode.replace(val),
90603            Self::Menu(e) => e.inputmode.replace(val),
90604            Self::Ol(e) => e.inputmode.replace(val),
90605            Self::P(e) => e.inputmode.replace(val),
90606            Self::Pre(e) => e.inputmode.replace(val),
90607            Self::Ul(e) => e.inputmode.replace(val),
90608            Self::A(e) => e.inputmode.replace(val),
90609            Self::Abbr(e) => e.inputmode.replace(val),
90610            Self::B(e) => e.inputmode.replace(val),
90611            Self::Bdi(e) => e.inputmode.replace(val),
90612            Self::Bdo(e) => e.inputmode.replace(val),
90613            Self::Br(e) => e.inputmode.replace(val),
90614            Self::Cite(e) => e.inputmode.replace(val),
90615            Self::Code(e) => e.inputmode.replace(val),
90616            Self::Data(e) => e.inputmode.replace(val),
90617            Self::Dfn(e) => e.inputmode.replace(val),
90618            Self::Em(e) => e.inputmode.replace(val),
90619            Self::I(e) => e.inputmode.replace(val),
90620            Self::Kbd(e) => e.inputmode.replace(val),
90621            Self::Mark(e) => e.inputmode.replace(val),
90622            Self::Q(e) => e.inputmode.replace(val),
90623            Self::Rp(e) => e.inputmode.replace(val),
90624            Self::Rt(e) => e.inputmode.replace(val),
90625            Self::Ruby(e) => e.inputmode.replace(val),
90626            Self::S(e) => e.inputmode.replace(val),
90627            Self::Samp(e) => e.inputmode.replace(val),
90628            Self::Small(e) => e.inputmode.replace(val),
90629            Self::Span(e) => e.inputmode.replace(val),
90630            Self::Strong(e) => e.inputmode.replace(val),
90631            Self::Sub(e) => e.inputmode.replace(val),
90632            Self::Sup(e) => e.inputmode.replace(val),
90633            Self::Time(e) => e.inputmode.replace(val),
90634            Self::U(e) => e.inputmode.replace(val),
90635            Self::Var(e) => e.inputmode.replace(val),
90636            Self::Wbr(e) => e.inputmode.replace(val),
90637            Self::Area(e) => e.inputmode.replace(val),
90638            Self::Audio(e) => e.inputmode.replace(val),
90639            Self::Img(e) => e.inputmode.replace(val),
90640            Self::Map(e) => e.inputmode.replace(val),
90641            Self::Track(e) => e.inputmode.replace(val),
90642            Self::Video(e) => e.inputmode.replace(val),
90643            Self::Embed(e) => e.inputmode.replace(val),
90644            Self::Iframe(e) => e.inputmode.replace(val),
90645            Self::Object(e) => e.inputmode.replace(val),
90646            Self::Picture(e) => e.inputmode.replace(val),
90647            Self::Portal(e) => e.inputmode.replace(val),
90648            Self::Source(e) => e.inputmode.replace(val),
90649            Self::Canvas(e) => e.inputmode.replace(val),
90650            Self::Noscript(e) => e.inputmode.replace(val),
90651            Self::Script(e) => e.inputmode.replace(val),
90652            Self::Del(e) => e.inputmode.replace(val),
90653            Self::Ins(e) => e.inputmode.replace(val),
90654            Self::Caption(e) => e.inputmode.replace(val),
90655            Self::Col(e) => e.inputmode.replace(val),
90656            Self::Colgroup(e) => e.inputmode.replace(val),
90657            Self::Table(e) => e.inputmode.replace(val),
90658            Self::Tbody(e) => e.inputmode.replace(val),
90659            Self::Td(e) => e.inputmode.replace(val),
90660            Self::Tfoot(e) => e.inputmode.replace(val),
90661            Self::Th(e) => e.inputmode.replace(val),
90662            Self::Thead(e) => e.inputmode.replace(val),
90663            Self::Tr(e) => e.inputmode.replace(val),
90664            Self::Button(e) => e.inputmode.replace(val),
90665            Self::Datalist(e) => e.inputmode.replace(val),
90666            Self::Fieldset(e) => e.inputmode.replace(val),
90667            Self::Form(e) => e.inputmode.replace(val),
90668            Self::Input(e) => e.inputmode.replace(val),
90669            Self::Label(e) => e.inputmode.replace(val),
90670            Self::Legend(e) => e.inputmode.replace(val),
90671            Self::Meter(e) => e.inputmode.replace(val),
90672            Self::Optgroup(e) => e.inputmode.replace(val),
90673            Self::Option(e) => e.inputmode.replace(val),
90674            Self::Output(e) => e.inputmode.replace(val),
90675            Self::Progress(e) => e.inputmode.replace(val),
90676            Self::Select(e) => e.inputmode.replace(val),
90677            Self::Textarea(e) => e.inputmode.replace(val),
90678            Self::Details(e) => e.inputmode.replace(val),
90679            Self::Dialog(e) => e.inputmode.replace(val),
90680            Self::Summary(e) => e.inputmode.replace(val),
90681            Self::Slot(e) => e.inputmode.replace(val),
90682            Self::Template(e) => e.inputmode.replace(val),
90683            Self::Acronym(e) => e.inputmode.replace(val),
90684            Self::Applet(e) => e.inputmode.replace(val),
90685            Self::Bgsound(e) => e.inputmode.replace(val),
90686            Self::Big(e) => e.inputmode.replace(val),
90687            Self::Blink(e) => e.inputmode.replace(val),
90688            Self::Center(e) => e.inputmode.replace(val),
90689            Self::Dir(e) => e.inputmode.replace(val),
90690            Self::Font(e) => e.inputmode.replace(val),
90691            Self::Frame(e) => e.inputmode.replace(val),
90692            Self::Frameset(e) => e.inputmode.replace(val),
90693            Self::Image(e) => e.inputmode.replace(val),
90694            Self::Keygen(e) => e.inputmode.replace(val),
90695            Self::Marquee(e) => e.inputmode.replace(val),
90696            Self::Menuitem(e) => e.inputmode.replace(val),
90697            Self::Nobr(e) => e.inputmode.replace(val),
90698            Self::Noembed(e) => e.inputmode.replace(val),
90699            Self::Noframes(e) => e.inputmode.replace(val),
90700            Self::Param(e) => e.inputmode.replace(val),
90701            Self::Plaintext(e) => e.inputmode.replace(val),
90702            Self::Rb(e) => e.inputmode.replace(val),
90703            Self::Rtc(e) => e.inputmode.replace(val),
90704            Self::Spacer(e) => e.inputmode.replace(val),
90705            Self::Strike(e) => e.inputmode.replace(val),
90706            Self::Tt(e) => e.inputmode.replace(val),
90707            Self::Xmp(e) => e.inputmode.replace(val),
90708            Self::H1(e) => e.inputmode.replace(val),
90709            Self::H2(e) => e.inputmode.replace(val),
90710            Self::H3(e) => e.inputmode.replace(val),
90711            Self::H4(e) => e.inputmode.replace(val),
90712            Self::H5(e) => e.inputmode.replace(val),
90713            Self::H6(e) => e.inputmode.replace(val),
90714            Self::Unknown(e) => e.inputmode.replace(val),
90715        };
90716    }
90717
90718    ///     <p>Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see <a href="/en-US/docs/Web/API/Web_components/Using_custom_elements">Using custom elements</a> for more details).</p>
90719    ///   
90720    #[cfg(feature = "alloc")]
90721    pub fn set_is(&mut self, val: AttributeValueOwned) {
90722        match self {
90723            Self::Html(e) => e.is.replace(val),
90724            Self::Base(e) => e.is.replace(val),
90725            Self::Head(e) => e.is.replace(val),
90726            Self::Link(e) => e.is.replace(val),
90727            Self::Meta(e) => e.is.replace(val),
90728            Self::Style(e) => e.is.replace(val),
90729            Self::Title(e) => e.is.replace(val),
90730            Self::Body(e) => e.is.replace(val),
90731            Self::Address(e) => e.is.replace(val),
90732            Self::Article(e) => e.is.replace(val),
90733            Self::Aside(e) => e.is.replace(val),
90734            Self::Footer(e) => e.is.replace(val),
90735            Self::Header(e) => e.is.replace(val),
90736            Self::Hgroup(e) => e.is.replace(val),
90737            Self::Main(e) => e.is.replace(val),
90738            Self::Nav(e) => e.is.replace(val),
90739            Self::Section(e) => e.is.replace(val),
90740            Self::Blockquote(e) => e.is.replace(val),
90741            Self::Dd(e) => e.is.replace(val),
90742            Self::Div(e) => e.is.replace(val),
90743            Self::Dl(e) => e.is.replace(val),
90744            Self::Dt(e) => e.is.replace(val),
90745            Self::Figcaption(e) => e.is.replace(val),
90746            Self::Figure(e) => e.is.replace(val),
90747            Self::Hr(e) => e.is.replace(val),
90748            Self::Li(e) => e.is.replace(val),
90749            Self::Menu(e) => e.is.replace(val),
90750            Self::Ol(e) => e.is.replace(val),
90751            Self::P(e) => e.is.replace(val),
90752            Self::Pre(e) => e.is.replace(val),
90753            Self::Ul(e) => e.is.replace(val),
90754            Self::A(e) => e.is.replace(val),
90755            Self::Abbr(e) => e.is.replace(val),
90756            Self::B(e) => e.is.replace(val),
90757            Self::Bdi(e) => e.is.replace(val),
90758            Self::Bdo(e) => e.is.replace(val),
90759            Self::Br(e) => e.is.replace(val),
90760            Self::Cite(e) => e.is.replace(val),
90761            Self::Code(e) => e.is.replace(val),
90762            Self::Data(e) => e.is.replace(val),
90763            Self::Dfn(e) => e.is.replace(val),
90764            Self::Em(e) => e.is.replace(val),
90765            Self::I(e) => e.is.replace(val),
90766            Self::Kbd(e) => e.is.replace(val),
90767            Self::Mark(e) => e.is.replace(val),
90768            Self::Q(e) => e.is.replace(val),
90769            Self::Rp(e) => e.is.replace(val),
90770            Self::Rt(e) => e.is.replace(val),
90771            Self::Ruby(e) => e.is.replace(val),
90772            Self::S(e) => e.is.replace(val),
90773            Self::Samp(e) => e.is.replace(val),
90774            Self::Small(e) => e.is.replace(val),
90775            Self::Span(e) => e.is.replace(val),
90776            Self::Strong(e) => e.is.replace(val),
90777            Self::Sub(e) => e.is.replace(val),
90778            Self::Sup(e) => e.is.replace(val),
90779            Self::Time(e) => e.is.replace(val),
90780            Self::U(e) => e.is.replace(val),
90781            Self::Var(e) => e.is.replace(val),
90782            Self::Wbr(e) => e.is.replace(val),
90783            Self::Area(e) => e.is.replace(val),
90784            Self::Audio(e) => e.is.replace(val),
90785            Self::Img(e) => e.is.replace(val),
90786            Self::Map(e) => e.is.replace(val),
90787            Self::Track(e) => e.is.replace(val),
90788            Self::Video(e) => e.is.replace(val),
90789            Self::Embed(e) => e.is.replace(val),
90790            Self::Iframe(e) => e.is.replace(val),
90791            Self::Object(e) => e.is.replace(val),
90792            Self::Picture(e) => e.is.replace(val),
90793            Self::Portal(e) => e.is.replace(val),
90794            Self::Source(e) => e.is.replace(val),
90795            Self::Canvas(e) => e.is.replace(val),
90796            Self::Noscript(e) => e.is.replace(val),
90797            Self::Script(e) => e.is.replace(val),
90798            Self::Del(e) => e.is.replace(val),
90799            Self::Ins(e) => e.is.replace(val),
90800            Self::Caption(e) => e.is.replace(val),
90801            Self::Col(e) => e.is.replace(val),
90802            Self::Colgroup(e) => e.is.replace(val),
90803            Self::Table(e) => e.is.replace(val),
90804            Self::Tbody(e) => e.is.replace(val),
90805            Self::Td(e) => e.is.replace(val),
90806            Self::Tfoot(e) => e.is.replace(val),
90807            Self::Th(e) => e.is.replace(val),
90808            Self::Thead(e) => e.is.replace(val),
90809            Self::Tr(e) => e.is.replace(val),
90810            Self::Button(e) => e.is.replace(val),
90811            Self::Datalist(e) => e.is.replace(val),
90812            Self::Fieldset(e) => e.is.replace(val),
90813            Self::Form(e) => e.is.replace(val),
90814            Self::Input(e) => e.is.replace(val),
90815            Self::Label(e) => e.is.replace(val),
90816            Self::Legend(e) => e.is.replace(val),
90817            Self::Meter(e) => e.is.replace(val),
90818            Self::Optgroup(e) => e.is.replace(val),
90819            Self::Option(e) => e.is.replace(val),
90820            Self::Output(e) => e.is.replace(val),
90821            Self::Progress(e) => e.is.replace(val),
90822            Self::Select(e) => e.is.replace(val),
90823            Self::Textarea(e) => e.is.replace(val),
90824            Self::Details(e) => e.is.replace(val),
90825            Self::Dialog(e) => e.is.replace(val),
90826            Self::Summary(e) => e.is.replace(val),
90827            Self::Slot(e) => e.is.replace(val),
90828            Self::Template(e) => e.is.replace(val),
90829            Self::Acronym(e) => e.is.replace(val),
90830            Self::Applet(e) => e.is.replace(val),
90831            Self::Bgsound(e) => e.is.replace(val),
90832            Self::Big(e) => e.is.replace(val),
90833            Self::Blink(e) => e.is.replace(val),
90834            Self::Center(e) => e.is.replace(val),
90835            Self::Dir(e) => e.is.replace(val),
90836            Self::Font(e) => e.is.replace(val),
90837            Self::Frame(e) => e.is.replace(val),
90838            Self::Frameset(e) => e.is.replace(val),
90839            Self::Image(e) => e.is.replace(val),
90840            Self::Keygen(e) => e.is.replace(val),
90841            Self::Marquee(e) => e.is.replace(val),
90842            Self::Menuitem(e) => e.is.replace(val),
90843            Self::Nobr(e) => e.is.replace(val),
90844            Self::Noembed(e) => e.is.replace(val),
90845            Self::Noframes(e) => e.is.replace(val),
90846            Self::Param(e) => e.is.replace(val),
90847            Self::Plaintext(e) => e.is.replace(val),
90848            Self::Rb(e) => e.is.replace(val),
90849            Self::Rtc(e) => e.is.replace(val),
90850            Self::Spacer(e) => e.is.replace(val),
90851            Self::Strike(e) => e.is.replace(val),
90852            Self::Tt(e) => e.is.replace(val),
90853            Self::Xmp(e) => e.is.replace(val),
90854            Self::H1(e) => e.is.replace(val),
90855            Self::H2(e) => e.is.replace(val),
90856            Self::H3(e) => e.is.replace(val),
90857            Self::H4(e) => e.is.replace(val),
90858            Self::H5(e) => e.is.replace(val),
90859            Self::H6(e) => e.is.replace(val),
90860            Self::Unknown(e) => e.is.replace(val),
90861        };
90862    }
90863
90864    ///     <p>The unique, global identifier of an item.</p>
90865    ///   
90866    #[cfg(feature = "alloc")]
90867    pub fn set_itemid(&mut self, val: AttributeValueOwned) {
90868        match self {
90869            Self::Html(e) => e.itemid.replace(val),
90870            Self::Base(e) => e.itemid.replace(val),
90871            Self::Head(e) => e.itemid.replace(val),
90872            Self::Link(e) => e.itemid.replace(val),
90873            Self::Meta(e) => e.itemid.replace(val),
90874            Self::Style(e) => e.itemid.replace(val),
90875            Self::Title(e) => e.itemid.replace(val),
90876            Self::Body(e) => e.itemid.replace(val),
90877            Self::Address(e) => e.itemid.replace(val),
90878            Self::Article(e) => e.itemid.replace(val),
90879            Self::Aside(e) => e.itemid.replace(val),
90880            Self::Footer(e) => e.itemid.replace(val),
90881            Self::Header(e) => e.itemid.replace(val),
90882            Self::Hgroup(e) => e.itemid.replace(val),
90883            Self::Main(e) => e.itemid.replace(val),
90884            Self::Nav(e) => e.itemid.replace(val),
90885            Self::Section(e) => e.itemid.replace(val),
90886            Self::Blockquote(e) => e.itemid.replace(val),
90887            Self::Dd(e) => e.itemid.replace(val),
90888            Self::Div(e) => e.itemid.replace(val),
90889            Self::Dl(e) => e.itemid.replace(val),
90890            Self::Dt(e) => e.itemid.replace(val),
90891            Self::Figcaption(e) => e.itemid.replace(val),
90892            Self::Figure(e) => e.itemid.replace(val),
90893            Self::Hr(e) => e.itemid.replace(val),
90894            Self::Li(e) => e.itemid.replace(val),
90895            Self::Menu(e) => e.itemid.replace(val),
90896            Self::Ol(e) => e.itemid.replace(val),
90897            Self::P(e) => e.itemid.replace(val),
90898            Self::Pre(e) => e.itemid.replace(val),
90899            Self::Ul(e) => e.itemid.replace(val),
90900            Self::A(e) => e.itemid.replace(val),
90901            Self::Abbr(e) => e.itemid.replace(val),
90902            Self::B(e) => e.itemid.replace(val),
90903            Self::Bdi(e) => e.itemid.replace(val),
90904            Self::Bdo(e) => e.itemid.replace(val),
90905            Self::Br(e) => e.itemid.replace(val),
90906            Self::Cite(e) => e.itemid.replace(val),
90907            Self::Code(e) => e.itemid.replace(val),
90908            Self::Data(e) => e.itemid.replace(val),
90909            Self::Dfn(e) => e.itemid.replace(val),
90910            Self::Em(e) => e.itemid.replace(val),
90911            Self::I(e) => e.itemid.replace(val),
90912            Self::Kbd(e) => e.itemid.replace(val),
90913            Self::Mark(e) => e.itemid.replace(val),
90914            Self::Q(e) => e.itemid.replace(val),
90915            Self::Rp(e) => e.itemid.replace(val),
90916            Self::Rt(e) => e.itemid.replace(val),
90917            Self::Ruby(e) => e.itemid.replace(val),
90918            Self::S(e) => e.itemid.replace(val),
90919            Self::Samp(e) => e.itemid.replace(val),
90920            Self::Small(e) => e.itemid.replace(val),
90921            Self::Span(e) => e.itemid.replace(val),
90922            Self::Strong(e) => e.itemid.replace(val),
90923            Self::Sub(e) => e.itemid.replace(val),
90924            Self::Sup(e) => e.itemid.replace(val),
90925            Self::Time(e) => e.itemid.replace(val),
90926            Self::U(e) => e.itemid.replace(val),
90927            Self::Var(e) => e.itemid.replace(val),
90928            Self::Wbr(e) => e.itemid.replace(val),
90929            Self::Area(e) => e.itemid.replace(val),
90930            Self::Audio(e) => e.itemid.replace(val),
90931            Self::Img(e) => e.itemid.replace(val),
90932            Self::Map(e) => e.itemid.replace(val),
90933            Self::Track(e) => e.itemid.replace(val),
90934            Self::Video(e) => e.itemid.replace(val),
90935            Self::Embed(e) => e.itemid.replace(val),
90936            Self::Iframe(e) => e.itemid.replace(val),
90937            Self::Object(e) => e.itemid.replace(val),
90938            Self::Picture(e) => e.itemid.replace(val),
90939            Self::Portal(e) => e.itemid.replace(val),
90940            Self::Source(e) => e.itemid.replace(val),
90941            Self::Canvas(e) => e.itemid.replace(val),
90942            Self::Noscript(e) => e.itemid.replace(val),
90943            Self::Script(e) => e.itemid.replace(val),
90944            Self::Del(e) => e.itemid.replace(val),
90945            Self::Ins(e) => e.itemid.replace(val),
90946            Self::Caption(e) => e.itemid.replace(val),
90947            Self::Col(e) => e.itemid.replace(val),
90948            Self::Colgroup(e) => e.itemid.replace(val),
90949            Self::Table(e) => e.itemid.replace(val),
90950            Self::Tbody(e) => e.itemid.replace(val),
90951            Self::Td(e) => e.itemid.replace(val),
90952            Self::Tfoot(e) => e.itemid.replace(val),
90953            Self::Th(e) => e.itemid.replace(val),
90954            Self::Thead(e) => e.itemid.replace(val),
90955            Self::Tr(e) => e.itemid.replace(val),
90956            Self::Button(e) => e.itemid.replace(val),
90957            Self::Datalist(e) => e.itemid.replace(val),
90958            Self::Fieldset(e) => e.itemid.replace(val),
90959            Self::Form(e) => e.itemid.replace(val),
90960            Self::Input(e) => e.itemid.replace(val),
90961            Self::Label(e) => e.itemid.replace(val),
90962            Self::Legend(e) => e.itemid.replace(val),
90963            Self::Meter(e) => e.itemid.replace(val),
90964            Self::Optgroup(e) => e.itemid.replace(val),
90965            Self::Option(e) => e.itemid.replace(val),
90966            Self::Output(e) => e.itemid.replace(val),
90967            Self::Progress(e) => e.itemid.replace(val),
90968            Self::Select(e) => e.itemid.replace(val),
90969            Self::Textarea(e) => e.itemid.replace(val),
90970            Self::Details(e) => e.itemid.replace(val),
90971            Self::Dialog(e) => e.itemid.replace(val),
90972            Self::Summary(e) => e.itemid.replace(val),
90973            Self::Slot(e) => e.itemid.replace(val),
90974            Self::Template(e) => e.itemid.replace(val),
90975            Self::Acronym(e) => e.itemid.replace(val),
90976            Self::Applet(e) => e.itemid.replace(val),
90977            Self::Bgsound(e) => e.itemid.replace(val),
90978            Self::Big(e) => e.itemid.replace(val),
90979            Self::Blink(e) => e.itemid.replace(val),
90980            Self::Center(e) => e.itemid.replace(val),
90981            Self::Dir(e) => e.itemid.replace(val),
90982            Self::Font(e) => e.itemid.replace(val),
90983            Self::Frame(e) => e.itemid.replace(val),
90984            Self::Frameset(e) => e.itemid.replace(val),
90985            Self::Image(e) => e.itemid.replace(val),
90986            Self::Keygen(e) => e.itemid.replace(val),
90987            Self::Marquee(e) => e.itemid.replace(val),
90988            Self::Menuitem(e) => e.itemid.replace(val),
90989            Self::Nobr(e) => e.itemid.replace(val),
90990            Self::Noembed(e) => e.itemid.replace(val),
90991            Self::Noframes(e) => e.itemid.replace(val),
90992            Self::Param(e) => e.itemid.replace(val),
90993            Self::Plaintext(e) => e.itemid.replace(val),
90994            Self::Rb(e) => e.itemid.replace(val),
90995            Self::Rtc(e) => e.itemid.replace(val),
90996            Self::Spacer(e) => e.itemid.replace(val),
90997            Self::Strike(e) => e.itemid.replace(val),
90998            Self::Tt(e) => e.itemid.replace(val),
90999            Self::Xmp(e) => e.itemid.replace(val),
91000            Self::H1(e) => e.itemid.replace(val),
91001            Self::H2(e) => e.itemid.replace(val),
91002            Self::H3(e) => e.itemid.replace(val),
91003            Self::H4(e) => e.itemid.replace(val),
91004            Self::H5(e) => e.itemid.replace(val),
91005            Self::H6(e) => e.itemid.replace(val),
91006            Self::Unknown(e) => e.itemid.replace(val),
91007        };
91008    }
91009
91010    ///     <p>Used to add properties to an item. Every HTML element may have an <code>itemprop</code> attribute specified, where an <code>itemprop</code> consists of a name and value pair.</p>
91011    ///   
91012    #[cfg(feature = "alloc")]
91013    pub fn set_itemprop(&mut self, val: AttributeValueOwned) {
91014        match self {
91015            Self::Html(e) => e.itemprop.replace(val),
91016            Self::Base(e) => e.itemprop.replace(val),
91017            Self::Head(e) => e.itemprop.replace(val),
91018            Self::Link(e) => e.itemprop.replace(val),
91019            Self::Meta(e) => e.itemprop.replace(val),
91020            Self::Style(e) => e.itemprop.replace(val),
91021            Self::Title(e) => e.itemprop.replace(val),
91022            Self::Body(e) => e.itemprop.replace(val),
91023            Self::Address(e) => e.itemprop.replace(val),
91024            Self::Article(e) => e.itemprop.replace(val),
91025            Self::Aside(e) => e.itemprop.replace(val),
91026            Self::Footer(e) => e.itemprop.replace(val),
91027            Self::Header(e) => e.itemprop.replace(val),
91028            Self::Hgroup(e) => e.itemprop.replace(val),
91029            Self::Main(e) => e.itemprop.replace(val),
91030            Self::Nav(e) => e.itemprop.replace(val),
91031            Self::Section(e) => e.itemprop.replace(val),
91032            Self::Blockquote(e) => e.itemprop.replace(val),
91033            Self::Dd(e) => e.itemprop.replace(val),
91034            Self::Div(e) => e.itemprop.replace(val),
91035            Self::Dl(e) => e.itemprop.replace(val),
91036            Self::Dt(e) => e.itemprop.replace(val),
91037            Self::Figcaption(e) => e.itemprop.replace(val),
91038            Self::Figure(e) => e.itemprop.replace(val),
91039            Self::Hr(e) => e.itemprop.replace(val),
91040            Self::Li(e) => e.itemprop.replace(val),
91041            Self::Menu(e) => e.itemprop.replace(val),
91042            Self::Ol(e) => e.itemprop.replace(val),
91043            Self::P(e) => e.itemprop.replace(val),
91044            Self::Pre(e) => e.itemprop.replace(val),
91045            Self::Ul(e) => e.itemprop.replace(val),
91046            Self::A(e) => e.itemprop.replace(val),
91047            Self::Abbr(e) => e.itemprop.replace(val),
91048            Self::B(e) => e.itemprop.replace(val),
91049            Self::Bdi(e) => e.itemprop.replace(val),
91050            Self::Bdo(e) => e.itemprop.replace(val),
91051            Self::Br(e) => e.itemprop.replace(val),
91052            Self::Cite(e) => e.itemprop.replace(val),
91053            Self::Code(e) => e.itemprop.replace(val),
91054            Self::Data(e) => e.itemprop.replace(val),
91055            Self::Dfn(e) => e.itemprop.replace(val),
91056            Self::Em(e) => e.itemprop.replace(val),
91057            Self::I(e) => e.itemprop.replace(val),
91058            Self::Kbd(e) => e.itemprop.replace(val),
91059            Self::Mark(e) => e.itemprop.replace(val),
91060            Self::Q(e) => e.itemprop.replace(val),
91061            Self::Rp(e) => e.itemprop.replace(val),
91062            Self::Rt(e) => e.itemprop.replace(val),
91063            Self::Ruby(e) => e.itemprop.replace(val),
91064            Self::S(e) => e.itemprop.replace(val),
91065            Self::Samp(e) => e.itemprop.replace(val),
91066            Self::Small(e) => e.itemprop.replace(val),
91067            Self::Span(e) => e.itemprop.replace(val),
91068            Self::Strong(e) => e.itemprop.replace(val),
91069            Self::Sub(e) => e.itemprop.replace(val),
91070            Self::Sup(e) => e.itemprop.replace(val),
91071            Self::Time(e) => e.itemprop.replace(val),
91072            Self::U(e) => e.itemprop.replace(val),
91073            Self::Var(e) => e.itemprop.replace(val),
91074            Self::Wbr(e) => e.itemprop.replace(val),
91075            Self::Area(e) => e.itemprop.replace(val),
91076            Self::Audio(e) => e.itemprop.replace(val),
91077            Self::Img(e) => e.itemprop.replace(val),
91078            Self::Map(e) => e.itemprop.replace(val),
91079            Self::Track(e) => e.itemprop.replace(val),
91080            Self::Video(e) => e.itemprop.replace(val),
91081            Self::Embed(e) => e.itemprop.replace(val),
91082            Self::Iframe(e) => e.itemprop.replace(val),
91083            Self::Object(e) => e.itemprop.replace(val),
91084            Self::Picture(e) => e.itemprop.replace(val),
91085            Self::Portal(e) => e.itemprop.replace(val),
91086            Self::Source(e) => e.itemprop.replace(val),
91087            Self::Canvas(e) => e.itemprop.replace(val),
91088            Self::Noscript(e) => e.itemprop.replace(val),
91089            Self::Script(e) => e.itemprop.replace(val),
91090            Self::Del(e) => e.itemprop.replace(val),
91091            Self::Ins(e) => e.itemprop.replace(val),
91092            Self::Caption(e) => e.itemprop.replace(val),
91093            Self::Col(e) => e.itemprop.replace(val),
91094            Self::Colgroup(e) => e.itemprop.replace(val),
91095            Self::Table(e) => e.itemprop.replace(val),
91096            Self::Tbody(e) => e.itemprop.replace(val),
91097            Self::Td(e) => e.itemprop.replace(val),
91098            Self::Tfoot(e) => e.itemprop.replace(val),
91099            Self::Th(e) => e.itemprop.replace(val),
91100            Self::Thead(e) => e.itemprop.replace(val),
91101            Self::Tr(e) => e.itemprop.replace(val),
91102            Self::Button(e) => e.itemprop.replace(val),
91103            Self::Datalist(e) => e.itemprop.replace(val),
91104            Self::Fieldset(e) => e.itemprop.replace(val),
91105            Self::Form(e) => e.itemprop.replace(val),
91106            Self::Input(e) => e.itemprop.replace(val),
91107            Self::Label(e) => e.itemprop.replace(val),
91108            Self::Legend(e) => e.itemprop.replace(val),
91109            Self::Meter(e) => e.itemprop.replace(val),
91110            Self::Optgroup(e) => e.itemprop.replace(val),
91111            Self::Option(e) => e.itemprop.replace(val),
91112            Self::Output(e) => e.itemprop.replace(val),
91113            Self::Progress(e) => e.itemprop.replace(val),
91114            Self::Select(e) => e.itemprop.replace(val),
91115            Self::Textarea(e) => e.itemprop.replace(val),
91116            Self::Details(e) => e.itemprop.replace(val),
91117            Self::Dialog(e) => e.itemprop.replace(val),
91118            Self::Summary(e) => e.itemprop.replace(val),
91119            Self::Slot(e) => e.itemprop.replace(val),
91120            Self::Template(e) => e.itemprop.replace(val),
91121            Self::Acronym(e) => e.itemprop.replace(val),
91122            Self::Applet(e) => e.itemprop.replace(val),
91123            Self::Bgsound(e) => e.itemprop.replace(val),
91124            Self::Big(e) => e.itemprop.replace(val),
91125            Self::Blink(e) => e.itemprop.replace(val),
91126            Self::Center(e) => e.itemprop.replace(val),
91127            Self::Dir(e) => e.itemprop.replace(val),
91128            Self::Font(e) => e.itemprop.replace(val),
91129            Self::Frame(e) => e.itemprop.replace(val),
91130            Self::Frameset(e) => e.itemprop.replace(val),
91131            Self::Image(e) => e.itemprop.replace(val),
91132            Self::Keygen(e) => e.itemprop.replace(val),
91133            Self::Marquee(e) => e.itemprop.replace(val),
91134            Self::Menuitem(e) => e.itemprop.replace(val),
91135            Self::Nobr(e) => e.itemprop.replace(val),
91136            Self::Noembed(e) => e.itemprop.replace(val),
91137            Self::Noframes(e) => e.itemprop.replace(val),
91138            Self::Param(e) => e.itemprop.replace(val),
91139            Self::Plaintext(e) => e.itemprop.replace(val),
91140            Self::Rb(e) => e.itemprop.replace(val),
91141            Self::Rtc(e) => e.itemprop.replace(val),
91142            Self::Spacer(e) => e.itemprop.replace(val),
91143            Self::Strike(e) => e.itemprop.replace(val),
91144            Self::Tt(e) => e.itemprop.replace(val),
91145            Self::Xmp(e) => e.itemprop.replace(val),
91146            Self::H1(e) => e.itemprop.replace(val),
91147            Self::H2(e) => e.itemprop.replace(val),
91148            Self::H3(e) => e.itemprop.replace(val),
91149            Self::H4(e) => e.itemprop.replace(val),
91150            Self::H5(e) => e.itemprop.replace(val),
91151            Self::H6(e) => e.itemprop.replace(val),
91152            Self::Unknown(e) => e.itemprop.replace(val),
91153        };
91154    }
91155
91156    ///     <p>Properties that are not descendants of an element with the <code>itemscope</code> attribute can be associated with the item using an <code>itemref</code>. It provides a list of element ids (not <code>itemid</code>s) with additional properties elsewhere in the document.</p>
91157    ///   
91158    #[cfg(feature = "alloc")]
91159    pub fn set_itemref(&mut self, val: AttributeValueOwned) {
91160        match self {
91161            Self::Html(e) => e.itemref.replace(val),
91162            Self::Base(e) => e.itemref.replace(val),
91163            Self::Head(e) => e.itemref.replace(val),
91164            Self::Link(e) => e.itemref.replace(val),
91165            Self::Meta(e) => e.itemref.replace(val),
91166            Self::Style(e) => e.itemref.replace(val),
91167            Self::Title(e) => e.itemref.replace(val),
91168            Self::Body(e) => e.itemref.replace(val),
91169            Self::Address(e) => e.itemref.replace(val),
91170            Self::Article(e) => e.itemref.replace(val),
91171            Self::Aside(e) => e.itemref.replace(val),
91172            Self::Footer(e) => e.itemref.replace(val),
91173            Self::Header(e) => e.itemref.replace(val),
91174            Self::Hgroup(e) => e.itemref.replace(val),
91175            Self::Main(e) => e.itemref.replace(val),
91176            Self::Nav(e) => e.itemref.replace(val),
91177            Self::Section(e) => e.itemref.replace(val),
91178            Self::Blockquote(e) => e.itemref.replace(val),
91179            Self::Dd(e) => e.itemref.replace(val),
91180            Self::Div(e) => e.itemref.replace(val),
91181            Self::Dl(e) => e.itemref.replace(val),
91182            Self::Dt(e) => e.itemref.replace(val),
91183            Self::Figcaption(e) => e.itemref.replace(val),
91184            Self::Figure(e) => e.itemref.replace(val),
91185            Self::Hr(e) => e.itemref.replace(val),
91186            Self::Li(e) => e.itemref.replace(val),
91187            Self::Menu(e) => e.itemref.replace(val),
91188            Self::Ol(e) => e.itemref.replace(val),
91189            Self::P(e) => e.itemref.replace(val),
91190            Self::Pre(e) => e.itemref.replace(val),
91191            Self::Ul(e) => e.itemref.replace(val),
91192            Self::A(e) => e.itemref.replace(val),
91193            Self::Abbr(e) => e.itemref.replace(val),
91194            Self::B(e) => e.itemref.replace(val),
91195            Self::Bdi(e) => e.itemref.replace(val),
91196            Self::Bdo(e) => e.itemref.replace(val),
91197            Self::Br(e) => e.itemref.replace(val),
91198            Self::Cite(e) => e.itemref.replace(val),
91199            Self::Code(e) => e.itemref.replace(val),
91200            Self::Data(e) => e.itemref.replace(val),
91201            Self::Dfn(e) => e.itemref.replace(val),
91202            Self::Em(e) => e.itemref.replace(val),
91203            Self::I(e) => e.itemref.replace(val),
91204            Self::Kbd(e) => e.itemref.replace(val),
91205            Self::Mark(e) => e.itemref.replace(val),
91206            Self::Q(e) => e.itemref.replace(val),
91207            Self::Rp(e) => e.itemref.replace(val),
91208            Self::Rt(e) => e.itemref.replace(val),
91209            Self::Ruby(e) => e.itemref.replace(val),
91210            Self::S(e) => e.itemref.replace(val),
91211            Self::Samp(e) => e.itemref.replace(val),
91212            Self::Small(e) => e.itemref.replace(val),
91213            Self::Span(e) => e.itemref.replace(val),
91214            Self::Strong(e) => e.itemref.replace(val),
91215            Self::Sub(e) => e.itemref.replace(val),
91216            Self::Sup(e) => e.itemref.replace(val),
91217            Self::Time(e) => e.itemref.replace(val),
91218            Self::U(e) => e.itemref.replace(val),
91219            Self::Var(e) => e.itemref.replace(val),
91220            Self::Wbr(e) => e.itemref.replace(val),
91221            Self::Area(e) => e.itemref.replace(val),
91222            Self::Audio(e) => e.itemref.replace(val),
91223            Self::Img(e) => e.itemref.replace(val),
91224            Self::Map(e) => e.itemref.replace(val),
91225            Self::Track(e) => e.itemref.replace(val),
91226            Self::Video(e) => e.itemref.replace(val),
91227            Self::Embed(e) => e.itemref.replace(val),
91228            Self::Iframe(e) => e.itemref.replace(val),
91229            Self::Object(e) => e.itemref.replace(val),
91230            Self::Picture(e) => e.itemref.replace(val),
91231            Self::Portal(e) => e.itemref.replace(val),
91232            Self::Source(e) => e.itemref.replace(val),
91233            Self::Canvas(e) => e.itemref.replace(val),
91234            Self::Noscript(e) => e.itemref.replace(val),
91235            Self::Script(e) => e.itemref.replace(val),
91236            Self::Del(e) => e.itemref.replace(val),
91237            Self::Ins(e) => e.itemref.replace(val),
91238            Self::Caption(e) => e.itemref.replace(val),
91239            Self::Col(e) => e.itemref.replace(val),
91240            Self::Colgroup(e) => e.itemref.replace(val),
91241            Self::Table(e) => e.itemref.replace(val),
91242            Self::Tbody(e) => e.itemref.replace(val),
91243            Self::Td(e) => e.itemref.replace(val),
91244            Self::Tfoot(e) => e.itemref.replace(val),
91245            Self::Th(e) => e.itemref.replace(val),
91246            Self::Thead(e) => e.itemref.replace(val),
91247            Self::Tr(e) => e.itemref.replace(val),
91248            Self::Button(e) => e.itemref.replace(val),
91249            Self::Datalist(e) => e.itemref.replace(val),
91250            Self::Fieldset(e) => e.itemref.replace(val),
91251            Self::Form(e) => e.itemref.replace(val),
91252            Self::Input(e) => e.itemref.replace(val),
91253            Self::Label(e) => e.itemref.replace(val),
91254            Self::Legend(e) => e.itemref.replace(val),
91255            Self::Meter(e) => e.itemref.replace(val),
91256            Self::Optgroup(e) => e.itemref.replace(val),
91257            Self::Option(e) => e.itemref.replace(val),
91258            Self::Output(e) => e.itemref.replace(val),
91259            Self::Progress(e) => e.itemref.replace(val),
91260            Self::Select(e) => e.itemref.replace(val),
91261            Self::Textarea(e) => e.itemref.replace(val),
91262            Self::Details(e) => e.itemref.replace(val),
91263            Self::Dialog(e) => e.itemref.replace(val),
91264            Self::Summary(e) => e.itemref.replace(val),
91265            Self::Slot(e) => e.itemref.replace(val),
91266            Self::Template(e) => e.itemref.replace(val),
91267            Self::Acronym(e) => e.itemref.replace(val),
91268            Self::Applet(e) => e.itemref.replace(val),
91269            Self::Bgsound(e) => e.itemref.replace(val),
91270            Self::Big(e) => e.itemref.replace(val),
91271            Self::Blink(e) => e.itemref.replace(val),
91272            Self::Center(e) => e.itemref.replace(val),
91273            Self::Dir(e) => e.itemref.replace(val),
91274            Self::Font(e) => e.itemref.replace(val),
91275            Self::Frame(e) => e.itemref.replace(val),
91276            Self::Frameset(e) => e.itemref.replace(val),
91277            Self::Image(e) => e.itemref.replace(val),
91278            Self::Keygen(e) => e.itemref.replace(val),
91279            Self::Marquee(e) => e.itemref.replace(val),
91280            Self::Menuitem(e) => e.itemref.replace(val),
91281            Self::Nobr(e) => e.itemref.replace(val),
91282            Self::Noembed(e) => e.itemref.replace(val),
91283            Self::Noframes(e) => e.itemref.replace(val),
91284            Self::Param(e) => e.itemref.replace(val),
91285            Self::Plaintext(e) => e.itemref.replace(val),
91286            Self::Rb(e) => e.itemref.replace(val),
91287            Self::Rtc(e) => e.itemref.replace(val),
91288            Self::Spacer(e) => e.itemref.replace(val),
91289            Self::Strike(e) => e.itemref.replace(val),
91290            Self::Tt(e) => e.itemref.replace(val),
91291            Self::Xmp(e) => e.itemref.replace(val),
91292            Self::H1(e) => e.itemref.replace(val),
91293            Self::H2(e) => e.itemref.replace(val),
91294            Self::H3(e) => e.itemref.replace(val),
91295            Self::H4(e) => e.itemref.replace(val),
91296            Self::H5(e) => e.itemref.replace(val),
91297            Self::H6(e) => e.itemref.replace(val),
91298            Self::Unknown(e) => e.itemref.replace(val),
91299        };
91300    }
91301
91302    ///     <p><code>itemscope</code> (usually) works along with <a href="/en-US/docs/Web/HTML/Global_attributes/itemtype"><code>itemtype</code></a> to specify that the HTML contained in a block is about a particular item. <code>itemscope</code> creates the Item and defines the scope of the <code>itemtype</code> associated with it. <code>itemtype</code> is a valid URL of a vocabulary (such as <a class="external" href="https://schema.org/" target="_blank">schema.org</a>) that describes the item and its properties context.</p>
91303    ///   
91304    #[cfg(feature = "alloc")]
91305    pub fn set_itemscope(&mut self, val: AttributeValueOwned) {
91306        match self {
91307            Self::Html(e) => e.itemscope.replace(val),
91308            Self::Base(e) => e.itemscope.replace(val),
91309            Self::Head(e) => e.itemscope.replace(val),
91310            Self::Link(e) => e.itemscope.replace(val),
91311            Self::Meta(e) => e.itemscope.replace(val),
91312            Self::Style(e) => e.itemscope.replace(val),
91313            Self::Title(e) => e.itemscope.replace(val),
91314            Self::Body(e) => e.itemscope.replace(val),
91315            Self::Address(e) => e.itemscope.replace(val),
91316            Self::Article(e) => e.itemscope.replace(val),
91317            Self::Aside(e) => e.itemscope.replace(val),
91318            Self::Footer(e) => e.itemscope.replace(val),
91319            Self::Header(e) => e.itemscope.replace(val),
91320            Self::Hgroup(e) => e.itemscope.replace(val),
91321            Self::Main(e) => e.itemscope.replace(val),
91322            Self::Nav(e) => e.itemscope.replace(val),
91323            Self::Section(e) => e.itemscope.replace(val),
91324            Self::Blockquote(e) => e.itemscope.replace(val),
91325            Self::Dd(e) => e.itemscope.replace(val),
91326            Self::Div(e) => e.itemscope.replace(val),
91327            Self::Dl(e) => e.itemscope.replace(val),
91328            Self::Dt(e) => e.itemscope.replace(val),
91329            Self::Figcaption(e) => e.itemscope.replace(val),
91330            Self::Figure(e) => e.itemscope.replace(val),
91331            Self::Hr(e) => e.itemscope.replace(val),
91332            Self::Li(e) => e.itemscope.replace(val),
91333            Self::Menu(e) => e.itemscope.replace(val),
91334            Self::Ol(e) => e.itemscope.replace(val),
91335            Self::P(e) => e.itemscope.replace(val),
91336            Self::Pre(e) => e.itemscope.replace(val),
91337            Self::Ul(e) => e.itemscope.replace(val),
91338            Self::A(e) => e.itemscope.replace(val),
91339            Self::Abbr(e) => e.itemscope.replace(val),
91340            Self::B(e) => e.itemscope.replace(val),
91341            Self::Bdi(e) => e.itemscope.replace(val),
91342            Self::Bdo(e) => e.itemscope.replace(val),
91343            Self::Br(e) => e.itemscope.replace(val),
91344            Self::Cite(e) => e.itemscope.replace(val),
91345            Self::Code(e) => e.itemscope.replace(val),
91346            Self::Data(e) => e.itemscope.replace(val),
91347            Self::Dfn(e) => e.itemscope.replace(val),
91348            Self::Em(e) => e.itemscope.replace(val),
91349            Self::I(e) => e.itemscope.replace(val),
91350            Self::Kbd(e) => e.itemscope.replace(val),
91351            Self::Mark(e) => e.itemscope.replace(val),
91352            Self::Q(e) => e.itemscope.replace(val),
91353            Self::Rp(e) => e.itemscope.replace(val),
91354            Self::Rt(e) => e.itemscope.replace(val),
91355            Self::Ruby(e) => e.itemscope.replace(val),
91356            Self::S(e) => e.itemscope.replace(val),
91357            Self::Samp(e) => e.itemscope.replace(val),
91358            Self::Small(e) => e.itemscope.replace(val),
91359            Self::Span(e) => e.itemscope.replace(val),
91360            Self::Strong(e) => e.itemscope.replace(val),
91361            Self::Sub(e) => e.itemscope.replace(val),
91362            Self::Sup(e) => e.itemscope.replace(val),
91363            Self::Time(e) => e.itemscope.replace(val),
91364            Self::U(e) => e.itemscope.replace(val),
91365            Self::Var(e) => e.itemscope.replace(val),
91366            Self::Wbr(e) => e.itemscope.replace(val),
91367            Self::Area(e) => e.itemscope.replace(val),
91368            Self::Audio(e) => e.itemscope.replace(val),
91369            Self::Img(e) => e.itemscope.replace(val),
91370            Self::Map(e) => e.itemscope.replace(val),
91371            Self::Track(e) => e.itemscope.replace(val),
91372            Self::Video(e) => e.itemscope.replace(val),
91373            Self::Embed(e) => e.itemscope.replace(val),
91374            Self::Iframe(e) => e.itemscope.replace(val),
91375            Self::Object(e) => e.itemscope.replace(val),
91376            Self::Picture(e) => e.itemscope.replace(val),
91377            Self::Portal(e) => e.itemscope.replace(val),
91378            Self::Source(e) => e.itemscope.replace(val),
91379            Self::Canvas(e) => e.itemscope.replace(val),
91380            Self::Noscript(e) => e.itemscope.replace(val),
91381            Self::Script(e) => e.itemscope.replace(val),
91382            Self::Del(e) => e.itemscope.replace(val),
91383            Self::Ins(e) => e.itemscope.replace(val),
91384            Self::Caption(e) => e.itemscope.replace(val),
91385            Self::Col(e) => e.itemscope.replace(val),
91386            Self::Colgroup(e) => e.itemscope.replace(val),
91387            Self::Table(e) => e.itemscope.replace(val),
91388            Self::Tbody(e) => e.itemscope.replace(val),
91389            Self::Td(e) => e.itemscope.replace(val),
91390            Self::Tfoot(e) => e.itemscope.replace(val),
91391            Self::Th(e) => e.itemscope.replace(val),
91392            Self::Thead(e) => e.itemscope.replace(val),
91393            Self::Tr(e) => e.itemscope.replace(val),
91394            Self::Button(e) => e.itemscope.replace(val),
91395            Self::Datalist(e) => e.itemscope.replace(val),
91396            Self::Fieldset(e) => e.itemscope.replace(val),
91397            Self::Form(e) => e.itemscope.replace(val),
91398            Self::Input(e) => e.itemscope.replace(val),
91399            Self::Label(e) => e.itemscope.replace(val),
91400            Self::Legend(e) => e.itemscope.replace(val),
91401            Self::Meter(e) => e.itemscope.replace(val),
91402            Self::Optgroup(e) => e.itemscope.replace(val),
91403            Self::Option(e) => e.itemscope.replace(val),
91404            Self::Output(e) => e.itemscope.replace(val),
91405            Self::Progress(e) => e.itemscope.replace(val),
91406            Self::Select(e) => e.itemscope.replace(val),
91407            Self::Textarea(e) => e.itemscope.replace(val),
91408            Self::Details(e) => e.itemscope.replace(val),
91409            Self::Dialog(e) => e.itemscope.replace(val),
91410            Self::Summary(e) => e.itemscope.replace(val),
91411            Self::Slot(e) => e.itemscope.replace(val),
91412            Self::Template(e) => e.itemscope.replace(val),
91413            Self::Acronym(e) => e.itemscope.replace(val),
91414            Self::Applet(e) => e.itemscope.replace(val),
91415            Self::Bgsound(e) => e.itemscope.replace(val),
91416            Self::Big(e) => e.itemscope.replace(val),
91417            Self::Blink(e) => e.itemscope.replace(val),
91418            Self::Center(e) => e.itemscope.replace(val),
91419            Self::Dir(e) => e.itemscope.replace(val),
91420            Self::Font(e) => e.itemscope.replace(val),
91421            Self::Frame(e) => e.itemscope.replace(val),
91422            Self::Frameset(e) => e.itemscope.replace(val),
91423            Self::Image(e) => e.itemscope.replace(val),
91424            Self::Keygen(e) => e.itemscope.replace(val),
91425            Self::Marquee(e) => e.itemscope.replace(val),
91426            Self::Menuitem(e) => e.itemscope.replace(val),
91427            Self::Nobr(e) => e.itemscope.replace(val),
91428            Self::Noembed(e) => e.itemscope.replace(val),
91429            Self::Noframes(e) => e.itemscope.replace(val),
91430            Self::Param(e) => e.itemscope.replace(val),
91431            Self::Plaintext(e) => e.itemscope.replace(val),
91432            Self::Rb(e) => e.itemscope.replace(val),
91433            Self::Rtc(e) => e.itemscope.replace(val),
91434            Self::Spacer(e) => e.itemscope.replace(val),
91435            Self::Strike(e) => e.itemscope.replace(val),
91436            Self::Tt(e) => e.itemscope.replace(val),
91437            Self::Xmp(e) => e.itemscope.replace(val),
91438            Self::H1(e) => e.itemscope.replace(val),
91439            Self::H2(e) => e.itemscope.replace(val),
91440            Self::H3(e) => e.itemscope.replace(val),
91441            Self::H4(e) => e.itemscope.replace(val),
91442            Self::H5(e) => e.itemscope.replace(val),
91443            Self::H6(e) => e.itemscope.replace(val),
91444            Self::Unknown(e) => e.itemscope.replace(val),
91445        };
91446    }
91447
91448    ///     <p>Specifies the URL of the vocabulary that will be used to define <code>itemprop</code>s (item properties) in the data structure. <a href="/en-US/docs/Web/HTML/Global_attributes/itemscope"><code>itemscope</code></a> is used to set the scope of where in the data structure the vocabulary set by <code>itemtype</code> will be active.</p>
91449    ///   
91450    #[cfg(feature = "alloc")]
91451    pub fn set_itemtype(&mut self, val: AttributeValueOwned) {
91452        match self {
91453            Self::Html(e) => e.itemtype.replace(val),
91454            Self::Base(e) => e.itemtype.replace(val),
91455            Self::Head(e) => e.itemtype.replace(val),
91456            Self::Link(e) => e.itemtype.replace(val),
91457            Self::Meta(e) => e.itemtype.replace(val),
91458            Self::Style(e) => e.itemtype.replace(val),
91459            Self::Title(e) => e.itemtype.replace(val),
91460            Self::Body(e) => e.itemtype.replace(val),
91461            Self::Address(e) => e.itemtype.replace(val),
91462            Self::Article(e) => e.itemtype.replace(val),
91463            Self::Aside(e) => e.itemtype.replace(val),
91464            Self::Footer(e) => e.itemtype.replace(val),
91465            Self::Header(e) => e.itemtype.replace(val),
91466            Self::Hgroup(e) => e.itemtype.replace(val),
91467            Self::Main(e) => e.itemtype.replace(val),
91468            Self::Nav(e) => e.itemtype.replace(val),
91469            Self::Section(e) => e.itemtype.replace(val),
91470            Self::Blockquote(e) => e.itemtype.replace(val),
91471            Self::Dd(e) => e.itemtype.replace(val),
91472            Self::Div(e) => e.itemtype.replace(val),
91473            Self::Dl(e) => e.itemtype.replace(val),
91474            Self::Dt(e) => e.itemtype.replace(val),
91475            Self::Figcaption(e) => e.itemtype.replace(val),
91476            Self::Figure(e) => e.itemtype.replace(val),
91477            Self::Hr(e) => e.itemtype.replace(val),
91478            Self::Li(e) => e.itemtype.replace(val),
91479            Self::Menu(e) => e.itemtype.replace(val),
91480            Self::Ol(e) => e.itemtype.replace(val),
91481            Self::P(e) => e.itemtype.replace(val),
91482            Self::Pre(e) => e.itemtype.replace(val),
91483            Self::Ul(e) => e.itemtype.replace(val),
91484            Self::A(e) => e.itemtype.replace(val),
91485            Self::Abbr(e) => e.itemtype.replace(val),
91486            Self::B(e) => e.itemtype.replace(val),
91487            Self::Bdi(e) => e.itemtype.replace(val),
91488            Self::Bdo(e) => e.itemtype.replace(val),
91489            Self::Br(e) => e.itemtype.replace(val),
91490            Self::Cite(e) => e.itemtype.replace(val),
91491            Self::Code(e) => e.itemtype.replace(val),
91492            Self::Data(e) => e.itemtype.replace(val),
91493            Self::Dfn(e) => e.itemtype.replace(val),
91494            Self::Em(e) => e.itemtype.replace(val),
91495            Self::I(e) => e.itemtype.replace(val),
91496            Self::Kbd(e) => e.itemtype.replace(val),
91497            Self::Mark(e) => e.itemtype.replace(val),
91498            Self::Q(e) => e.itemtype.replace(val),
91499            Self::Rp(e) => e.itemtype.replace(val),
91500            Self::Rt(e) => e.itemtype.replace(val),
91501            Self::Ruby(e) => e.itemtype.replace(val),
91502            Self::S(e) => e.itemtype.replace(val),
91503            Self::Samp(e) => e.itemtype.replace(val),
91504            Self::Small(e) => e.itemtype.replace(val),
91505            Self::Span(e) => e.itemtype.replace(val),
91506            Self::Strong(e) => e.itemtype.replace(val),
91507            Self::Sub(e) => e.itemtype.replace(val),
91508            Self::Sup(e) => e.itemtype.replace(val),
91509            Self::Time(e) => e.itemtype.replace(val),
91510            Self::U(e) => e.itemtype.replace(val),
91511            Self::Var(e) => e.itemtype.replace(val),
91512            Self::Wbr(e) => e.itemtype.replace(val),
91513            Self::Area(e) => e.itemtype.replace(val),
91514            Self::Audio(e) => e.itemtype.replace(val),
91515            Self::Img(e) => e.itemtype.replace(val),
91516            Self::Map(e) => e.itemtype.replace(val),
91517            Self::Track(e) => e.itemtype.replace(val),
91518            Self::Video(e) => e.itemtype.replace(val),
91519            Self::Embed(e) => e.itemtype.replace(val),
91520            Self::Iframe(e) => e.itemtype.replace(val),
91521            Self::Object(e) => e.itemtype.replace(val),
91522            Self::Picture(e) => e.itemtype.replace(val),
91523            Self::Portal(e) => e.itemtype.replace(val),
91524            Self::Source(e) => e.itemtype.replace(val),
91525            Self::Canvas(e) => e.itemtype.replace(val),
91526            Self::Noscript(e) => e.itemtype.replace(val),
91527            Self::Script(e) => e.itemtype.replace(val),
91528            Self::Del(e) => e.itemtype.replace(val),
91529            Self::Ins(e) => e.itemtype.replace(val),
91530            Self::Caption(e) => e.itemtype.replace(val),
91531            Self::Col(e) => e.itemtype.replace(val),
91532            Self::Colgroup(e) => e.itemtype.replace(val),
91533            Self::Table(e) => e.itemtype.replace(val),
91534            Self::Tbody(e) => e.itemtype.replace(val),
91535            Self::Td(e) => e.itemtype.replace(val),
91536            Self::Tfoot(e) => e.itemtype.replace(val),
91537            Self::Th(e) => e.itemtype.replace(val),
91538            Self::Thead(e) => e.itemtype.replace(val),
91539            Self::Tr(e) => e.itemtype.replace(val),
91540            Self::Button(e) => e.itemtype.replace(val),
91541            Self::Datalist(e) => e.itemtype.replace(val),
91542            Self::Fieldset(e) => e.itemtype.replace(val),
91543            Self::Form(e) => e.itemtype.replace(val),
91544            Self::Input(e) => e.itemtype.replace(val),
91545            Self::Label(e) => e.itemtype.replace(val),
91546            Self::Legend(e) => e.itemtype.replace(val),
91547            Self::Meter(e) => e.itemtype.replace(val),
91548            Self::Optgroup(e) => e.itemtype.replace(val),
91549            Self::Option(e) => e.itemtype.replace(val),
91550            Self::Output(e) => e.itemtype.replace(val),
91551            Self::Progress(e) => e.itemtype.replace(val),
91552            Self::Select(e) => e.itemtype.replace(val),
91553            Self::Textarea(e) => e.itemtype.replace(val),
91554            Self::Details(e) => e.itemtype.replace(val),
91555            Self::Dialog(e) => e.itemtype.replace(val),
91556            Self::Summary(e) => e.itemtype.replace(val),
91557            Self::Slot(e) => e.itemtype.replace(val),
91558            Self::Template(e) => e.itemtype.replace(val),
91559            Self::Acronym(e) => e.itemtype.replace(val),
91560            Self::Applet(e) => e.itemtype.replace(val),
91561            Self::Bgsound(e) => e.itemtype.replace(val),
91562            Self::Big(e) => e.itemtype.replace(val),
91563            Self::Blink(e) => e.itemtype.replace(val),
91564            Self::Center(e) => e.itemtype.replace(val),
91565            Self::Dir(e) => e.itemtype.replace(val),
91566            Self::Font(e) => e.itemtype.replace(val),
91567            Self::Frame(e) => e.itemtype.replace(val),
91568            Self::Frameset(e) => e.itemtype.replace(val),
91569            Self::Image(e) => e.itemtype.replace(val),
91570            Self::Keygen(e) => e.itemtype.replace(val),
91571            Self::Marquee(e) => e.itemtype.replace(val),
91572            Self::Menuitem(e) => e.itemtype.replace(val),
91573            Self::Nobr(e) => e.itemtype.replace(val),
91574            Self::Noembed(e) => e.itemtype.replace(val),
91575            Self::Noframes(e) => e.itemtype.replace(val),
91576            Self::Param(e) => e.itemtype.replace(val),
91577            Self::Plaintext(e) => e.itemtype.replace(val),
91578            Self::Rb(e) => e.itemtype.replace(val),
91579            Self::Rtc(e) => e.itemtype.replace(val),
91580            Self::Spacer(e) => e.itemtype.replace(val),
91581            Self::Strike(e) => e.itemtype.replace(val),
91582            Self::Tt(e) => e.itemtype.replace(val),
91583            Self::Xmp(e) => e.itemtype.replace(val),
91584            Self::H1(e) => e.itemtype.replace(val),
91585            Self::H2(e) => e.itemtype.replace(val),
91586            Self::H3(e) => e.itemtype.replace(val),
91587            Self::H4(e) => e.itemtype.replace(val),
91588            Self::H5(e) => e.itemtype.replace(val),
91589            Self::H6(e) => e.itemtype.replace(val),
91590            Self::Unknown(e) => e.itemtype.replace(val),
91591        };
91592    }
91593
91594    ///     <p>Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one "language tag" (made of hyphen-separated "language subtags") in the format defined in <a target="_blank" href="https://datatracker.ietf.org/doc/html/rfc5646" class="external">RFC 5646: Tags for Identifying Languages (also known as BCP 47)</a>. <a href="#xml:lang"><strong>xml:lang</strong></a> has priority over it.</p>
91595    ///   
91596    #[cfg(feature = "alloc")]
91597    pub fn set_lang(&mut self, val: AttributeValueOwned) {
91598        match self {
91599            Self::Html(e) => e.lang.replace(val),
91600            Self::Base(e) => e.lang.replace(val),
91601            Self::Head(e) => e.lang.replace(val),
91602            Self::Link(e) => e.lang.replace(val),
91603            Self::Meta(e) => e.lang.replace(val),
91604            Self::Style(e) => e.lang.replace(val),
91605            Self::Title(e) => e.lang.replace(val),
91606            Self::Body(e) => e.lang.replace(val),
91607            Self::Address(e) => e.lang.replace(val),
91608            Self::Article(e) => e.lang.replace(val),
91609            Self::Aside(e) => e.lang.replace(val),
91610            Self::Footer(e) => e.lang.replace(val),
91611            Self::Header(e) => e.lang.replace(val),
91612            Self::Hgroup(e) => e.lang.replace(val),
91613            Self::Main(e) => e.lang.replace(val),
91614            Self::Nav(e) => e.lang.replace(val),
91615            Self::Section(e) => e.lang.replace(val),
91616            Self::Blockquote(e) => e.lang.replace(val),
91617            Self::Dd(e) => e.lang.replace(val),
91618            Self::Div(e) => e.lang.replace(val),
91619            Self::Dl(e) => e.lang.replace(val),
91620            Self::Dt(e) => e.lang.replace(val),
91621            Self::Figcaption(e) => e.lang.replace(val),
91622            Self::Figure(e) => e.lang.replace(val),
91623            Self::Hr(e) => e.lang.replace(val),
91624            Self::Li(e) => e.lang.replace(val),
91625            Self::Menu(e) => e.lang.replace(val),
91626            Self::Ol(e) => e.lang.replace(val),
91627            Self::P(e) => e.lang.replace(val),
91628            Self::Pre(e) => e.lang.replace(val),
91629            Self::Ul(e) => e.lang.replace(val),
91630            Self::A(e) => e.lang.replace(val),
91631            Self::Abbr(e) => e.lang.replace(val),
91632            Self::B(e) => e.lang.replace(val),
91633            Self::Bdi(e) => e.lang.replace(val),
91634            Self::Bdo(e) => e.lang.replace(val),
91635            Self::Br(e) => e.lang.replace(val),
91636            Self::Cite(e) => e.lang.replace(val),
91637            Self::Code(e) => e.lang.replace(val),
91638            Self::Data(e) => e.lang.replace(val),
91639            Self::Dfn(e) => e.lang.replace(val),
91640            Self::Em(e) => e.lang.replace(val),
91641            Self::I(e) => e.lang.replace(val),
91642            Self::Kbd(e) => e.lang.replace(val),
91643            Self::Mark(e) => e.lang.replace(val),
91644            Self::Q(e) => e.lang.replace(val),
91645            Self::Rp(e) => e.lang.replace(val),
91646            Self::Rt(e) => e.lang.replace(val),
91647            Self::Ruby(e) => e.lang.replace(val),
91648            Self::S(e) => e.lang.replace(val),
91649            Self::Samp(e) => e.lang.replace(val),
91650            Self::Small(e) => e.lang.replace(val),
91651            Self::Span(e) => e.lang.replace(val),
91652            Self::Strong(e) => e.lang.replace(val),
91653            Self::Sub(e) => e.lang.replace(val),
91654            Self::Sup(e) => e.lang.replace(val),
91655            Self::Time(e) => e.lang.replace(val),
91656            Self::U(e) => e.lang.replace(val),
91657            Self::Var(e) => e.lang.replace(val),
91658            Self::Wbr(e) => e.lang.replace(val),
91659            Self::Area(e) => e.lang.replace(val),
91660            Self::Audio(e) => e.lang.replace(val),
91661            Self::Img(e) => e.lang.replace(val),
91662            Self::Map(e) => e.lang.replace(val),
91663            Self::Track(e) => e.lang.replace(val),
91664            Self::Video(e) => e.lang.replace(val),
91665            Self::Embed(e) => e.lang.replace(val),
91666            Self::Iframe(e) => e.lang.replace(val),
91667            Self::Object(e) => e.lang.replace(val),
91668            Self::Picture(e) => e.lang.replace(val),
91669            Self::Portal(e) => e.lang.replace(val),
91670            Self::Source(e) => e.lang.replace(val),
91671            Self::Canvas(e) => e.lang.replace(val),
91672            Self::Noscript(e) => e.lang.replace(val),
91673            Self::Script(e) => e.lang.replace(val),
91674            Self::Del(e) => e.lang.replace(val),
91675            Self::Ins(e) => e.lang.replace(val),
91676            Self::Caption(e) => e.lang.replace(val),
91677            Self::Col(e) => e.lang.replace(val),
91678            Self::Colgroup(e) => e.lang.replace(val),
91679            Self::Table(e) => e.lang.replace(val),
91680            Self::Tbody(e) => e.lang.replace(val),
91681            Self::Td(e) => e.lang.replace(val),
91682            Self::Tfoot(e) => e.lang.replace(val),
91683            Self::Th(e) => e.lang.replace(val),
91684            Self::Thead(e) => e.lang.replace(val),
91685            Self::Tr(e) => e.lang.replace(val),
91686            Self::Button(e) => e.lang.replace(val),
91687            Self::Datalist(e) => e.lang.replace(val),
91688            Self::Fieldset(e) => e.lang.replace(val),
91689            Self::Form(e) => e.lang.replace(val),
91690            Self::Input(e) => e.lang.replace(val),
91691            Self::Label(e) => e.lang.replace(val),
91692            Self::Legend(e) => e.lang.replace(val),
91693            Self::Meter(e) => e.lang.replace(val),
91694            Self::Optgroup(e) => e.lang.replace(val),
91695            Self::Option(e) => e.lang.replace(val),
91696            Self::Output(e) => e.lang.replace(val),
91697            Self::Progress(e) => e.lang.replace(val),
91698            Self::Select(e) => e.lang.replace(val),
91699            Self::Textarea(e) => e.lang.replace(val),
91700            Self::Details(e) => e.lang.replace(val),
91701            Self::Dialog(e) => e.lang.replace(val),
91702            Self::Summary(e) => e.lang.replace(val),
91703            Self::Slot(e) => e.lang.replace(val),
91704            Self::Template(e) => e.lang.replace(val),
91705            Self::Acronym(e) => e.lang.replace(val),
91706            Self::Applet(e) => e.lang.replace(val),
91707            Self::Bgsound(e) => e.lang.replace(val),
91708            Self::Big(e) => e.lang.replace(val),
91709            Self::Blink(e) => e.lang.replace(val),
91710            Self::Center(e) => e.lang.replace(val),
91711            Self::Dir(e) => e.lang.replace(val),
91712            Self::Font(e) => e.lang.replace(val),
91713            Self::Frame(e) => e.lang.replace(val),
91714            Self::Frameset(e) => e.lang.replace(val),
91715            Self::Image(e) => e.lang.replace(val),
91716            Self::Keygen(e) => e.lang.replace(val),
91717            Self::Marquee(e) => e.lang.replace(val),
91718            Self::Menuitem(e) => e.lang.replace(val),
91719            Self::Nobr(e) => e.lang.replace(val),
91720            Self::Noembed(e) => e.lang.replace(val),
91721            Self::Noframes(e) => e.lang.replace(val),
91722            Self::Param(e) => e.lang.replace(val),
91723            Self::Plaintext(e) => e.lang.replace(val),
91724            Self::Rb(e) => e.lang.replace(val),
91725            Self::Rtc(e) => e.lang.replace(val),
91726            Self::Spacer(e) => e.lang.replace(val),
91727            Self::Strike(e) => e.lang.replace(val),
91728            Self::Tt(e) => e.lang.replace(val),
91729            Self::Xmp(e) => e.lang.replace(val),
91730            Self::H1(e) => e.lang.replace(val),
91731            Self::H2(e) => e.lang.replace(val),
91732            Self::H3(e) => e.lang.replace(val),
91733            Self::H4(e) => e.lang.replace(val),
91734            Self::H5(e) => e.lang.replace(val),
91735            Self::H6(e) => e.lang.replace(val),
91736            Self::Unknown(e) => e.lang.replace(val),
91737        };
91738    }
91739
91740    ///     <p>A cryptographic nonce ("number used once") which can be used by <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a> to determine whether or not a given fetch will be allowed to proceed.</p>
91741    ///   
91742    #[cfg(feature = "alloc")]
91743    pub fn set_nonce(&mut self, val: AttributeValueOwned) {
91744        match self {
91745            Self::Html(e) => e.nonce.replace(val),
91746            Self::Base(e) => e.nonce.replace(val),
91747            Self::Head(e) => e.nonce.replace(val),
91748            Self::Link(e) => e.nonce.replace(val),
91749            Self::Meta(e) => e.nonce.replace(val),
91750            Self::Style(e) => e.nonce.replace(val),
91751            Self::Title(e) => e.nonce.replace(val),
91752            Self::Body(e) => e.nonce.replace(val),
91753            Self::Address(e) => e.nonce.replace(val),
91754            Self::Article(e) => e.nonce.replace(val),
91755            Self::Aside(e) => e.nonce.replace(val),
91756            Self::Footer(e) => e.nonce.replace(val),
91757            Self::Header(e) => e.nonce.replace(val),
91758            Self::Hgroup(e) => e.nonce.replace(val),
91759            Self::Main(e) => e.nonce.replace(val),
91760            Self::Nav(e) => e.nonce.replace(val),
91761            Self::Section(e) => e.nonce.replace(val),
91762            Self::Blockquote(e) => e.nonce.replace(val),
91763            Self::Dd(e) => e.nonce.replace(val),
91764            Self::Div(e) => e.nonce.replace(val),
91765            Self::Dl(e) => e.nonce.replace(val),
91766            Self::Dt(e) => e.nonce.replace(val),
91767            Self::Figcaption(e) => e.nonce.replace(val),
91768            Self::Figure(e) => e.nonce.replace(val),
91769            Self::Hr(e) => e.nonce.replace(val),
91770            Self::Li(e) => e.nonce.replace(val),
91771            Self::Menu(e) => e.nonce.replace(val),
91772            Self::Ol(e) => e.nonce.replace(val),
91773            Self::P(e) => e.nonce.replace(val),
91774            Self::Pre(e) => e.nonce.replace(val),
91775            Self::Ul(e) => e.nonce.replace(val),
91776            Self::A(e) => e.nonce.replace(val),
91777            Self::Abbr(e) => e.nonce.replace(val),
91778            Self::B(e) => e.nonce.replace(val),
91779            Self::Bdi(e) => e.nonce.replace(val),
91780            Self::Bdo(e) => e.nonce.replace(val),
91781            Self::Br(e) => e.nonce.replace(val),
91782            Self::Cite(e) => e.nonce.replace(val),
91783            Self::Code(e) => e.nonce.replace(val),
91784            Self::Data(e) => e.nonce.replace(val),
91785            Self::Dfn(e) => e.nonce.replace(val),
91786            Self::Em(e) => e.nonce.replace(val),
91787            Self::I(e) => e.nonce.replace(val),
91788            Self::Kbd(e) => e.nonce.replace(val),
91789            Self::Mark(e) => e.nonce.replace(val),
91790            Self::Q(e) => e.nonce.replace(val),
91791            Self::Rp(e) => e.nonce.replace(val),
91792            Self::Rt(e) => e.nonce.replace(val),
91793            Self::Ruby(e) => e.nonce.replace(val),
91794            Self::S(e) => e.nonce.replace(val),
91795            Self::Samp(e) => e.nonce.replace(val),
91796            Self::Small(e) => e.nonce.replace(val),
91797            Self::Span(e) => e.nonce.replace(val),
91798            Self::Strong(e) => e.nonce.replace(val),
91799            Self::Sub(e) => e.nonce.replace(val),
91800            Self::Sup(e) => e.nonce.replace(val),
91801            Self::Time(e) => e.nonce.replace(val),
91802            Self::U(e) => e.nonce.replace(val),
91803            Self::Var(e) => e.nonce.replace(val),
91804            Self::Wbr(e) => e.nonce.replace(val),
91805            Self::Area(e) => e.nonce.replace(val),
91806            Self::Audio(e) => e.nonce.replace(val),
91807            Self::Img(e) => e.nonce.replace(val),
91808            Self::Map(e) => e.nonce.replace(val),
91809            Self::Track(e) => e.nonce.replace(val),
91810            Self::Video(e) => e.nonce.replace(val),
91811            Self::Embed(e) => e.nonce.replace(val),
91812            Self::Iframe(e) => e.nonce.replace(val),
91813            Self::Object(e) => e.nonce.replace(val),
91814            Self::Picture(e) => e.nonce.replace(val),
91815            Self::Portal(e) => e.nonce.replace(val),
91816            Self::Source(e) => e.nonce.replace(val),
91817            Self::Canvas(e) => e.nonce.replace(val),
91818            Self::Noscript(e) => e.nonce.replace(val),
91819            Self::Script(e) => e.nonce.replace(val),
91820            Self::Del(e) => e.nonce.replace(val),
91821            Self::Ins(e) => e.nonce.replace(val),
91822            Self::Caption(e) => e.nonce.replace(val),
91823            Self::Col(e) => e.nonce.replace(val),
91824            Self::Colgroup(e) => e.nonce.replace(val),
91825            Self::Table(e) => e.nonce.replace(val),
91826            Self::Tbody(e) => e.nonce.replace(val),
91827            Self::Td(e) => e.nonce.replace(val),
91828            Self::Tfoot(e) => e.nonce.replace(val),
91829            Self::Th(e) => e.nonce.replace(val),
91830            Self::Thead(e) => e.nonce.replace(val),
91831            Self::Tr(e) => e.nonce.replace(val),
91832            Self::Button(e) => e.nonce.replace(val),
91833            Self::Datalist(e) => e.nonce.replace(val),
91834            Self::Fieldset(e) => e.nonce.replace(val),
91835            Self::Form(e) => e.nonce.replace(val),
91836            Self::Input(e) => e.nonce.replace(val),
91837            Self::Label(e) => e.nonce.replace(val),
91838            Self::Legend(e) => e.nonce.replace(val),
91839            Self::Meter(e) => e.nonce.replace(val),
91840            Self::Optgroup(e) => e.nonce.replace(val),
91841            Self::Option(e) => e.nonce.replace(val),
91842            Self::Output(e) => e.nonce.replace(val),
91843            Self::Progress(e) => e.nonce.replace(val),
91844            Self::Select(e) => e.nonce.replace(val),
91845            Self::Textarea(e) => e.nonce.replace(val),
91846            Self::Details(e) => e.nonce.replace(val),
91847            Self::Dialog(e) => e.nonce.replace(val),
91848            Self::Summary(e) => e.nonce.replace(val),
91849            Self::Slot(e) => e.nonce.replace(val),
91850            Self::Template(e) => e.nonce.replace(val),
91851            Self::Acronym(e) => e.nonce.replace(val),
91852            Self::Applet(e) => e.nonce.replace(val),
91853            Self::Bgsound(e) => e.nonce.replace(val),
91854            Self::Big(e) => e.nonce.replace(val),
91855            Self::Blink(e) => e.nonce.replace(val),
91856            Self::Center(e) => e.nonce.replace(val),
91857            Self::Dir(e) => e.nonce.replace(val),
91858            Self::Font(e) => e.nonce.replace(val),
91859            Self::Frame(e) => e.nonce.replace(val),
91860            Self::Frameset(e) => e.nonce.replace(val),
91861            Self::Image(e) => e.nonce.replace(val),
91862            Self::Keygen(e) => e.nonce.replace(val),
91863            Self::Marquee(e) => e.nonce.replace(val),
91864            Self::Menuitem(e) => e.nonce.replace(val),
91865            Self::Nobr(e) => e.nonce.replace(val),
91866            Self::Noembed(e) => e.nonce.replace(val),
91867            Self::Noframes(e) => e.nonce.replace(val),
91868            Self::Param(e) => e.nonce.replace(val),
91869            Self::Plaintext(e) => e.nonce.replace(val),
91870            Self::Rb(e) => e.nonce.replace(val),
91871            Self::Rtc(e) => e.nonce.replace(val),
91872            Self::Spacer(e) => e.nonce.replace(val),
91873            Self::Strike(e) => e.nonce.replace(val),
91874            Self::Tt(e) => e.nonce.replace(val),
91875            Self::Xmp(e) => e.nonce.replace(val),
91876            Self::H1(e) => e.nonce.replace(val),
91877            Self::H2(e) => e.nonce.replace(val),
91878            Self::H3(e) => e.nonce.replace(val),
91879            Self::H4(e) => e.nonce.replace(val),
91880            Self::H5(e) => e.nonce.replace(val),
91881            Self::H6(e) => e.nonce.replace(val),
91882            Self::Unknown(e) => e.nonce.replace(val),
91883        };
91884    }
91885
91886    ///     <p>A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the <a href="/en-US/docs/Web/CSS/::part"><code>::part</code></a> pseudo-element.</p>
91887    ///   
91888    #[cfg(feature = "alloc")]
91889    pub fn set_part(&mut self, val: AttributeValueOwned) {
91890        match self {
91891            Self::Html(e) => e.part.replace(val),
91892            Self::Base(e) => e.part.replace(val),
91893            Self::Head(e) => e.part.replace(val),
91894            Self::Link(e) => e.part.replace(val),
91895            Self::Meta(e) => e.part.replace(val),
91896            Self::Style(e) => e.part.replace(val),
91897            Self::Title(e) => e.part.replace(val),
91898            Self::Body(e) => e.part.replace(val),
91899            Self::Address(e) => e.part.replace(val),
91900            Self::Article(e) => e.part.replace(val),
91901            Self::Aside(e) => e.part.replace(val),
91902            Self::Footer(e) => e.part.replace(val),
91903            Self::Header(e) => e.part.replace(val),
91904            Self::Hgroup(e) => e.part.replace(val),
91905            Self::Main(e) => e.part.replace(val),
91906            Self::Nav(e) => e.part.replace(val),
91907            Self::Section(e) => e.part.replace(val),
91908            Self::Blockquote(e) => e.part.replace(val),
91909            Self::Dd(e) => e.part.replace(val),
91910            Self::Div(e) => e.part.replace(val),
91911            Self::Dl(e) => e.part.replace(val),
91912            Self::Dt(e) => e.part.replace(val),
91913            Self::Figcaption(e) => e.part.replace(val),
91914            Self::Figure(e) => e.part.replace(val),
91915            Self::Hr(e) => e.part.replace(val),
91916            Self::Li(e) => e.part.replace(val),
91917            Self::Menu(e) => e.part.replace(val),
91918            Self::Ol(e) => e.part.replace(val),
91919            Self::P(e) => e.part.replace(val),
91920            Self::Pre(e) => e.part.replace(val),
91921            Self::Ul(e) => e.part.replace(val),
91922            Self::A(e) => e.part.replace(val),
91923            Self::Abbr(e) => e.part.replace(val),
91924            Self::B(e) => e.part.replace(val),
91925            Self::Bdi(e) => e.part.replace(val),
91926            Self::Bdo(e) => e.part.replace(val),
91927            Self::Br(e) => e.part.replace(val),
91928            Self::Cite(e) => e.part.replace(val),
91929            Self::Code(e) => e.part.replace(val),
91930            Self::Data(e) => e.part.replace(val),
91931            Self::Dfn(e) => e.part.replace(val),
91932            Self::Em(e) => e.part.replace(val),
91933            Self::I(e) => e.part.replace(val),
91934            Self::Kbd(e) => e.part.replace(val),
91935            Self::Mark(e) => e.part.replace(val),
91936            Self::Q(e) => e.part.replace(val),
91937            Self::Rp(e) => e.part.replace(val),
91938            Self::Rt(e) => e.part.replace(val),
91939            Self::Ruby(e) => e.part.replace(val),
91940            Self::S(e) => e.part.replace(val),
91941            Self::Samp(e) => e.part.replace(val),
91942            Self::Small(e) => e.part.replace(val),
91943            Self::Span(e) => e.part.replace(val),
91944            Self::Strong(e) => e.part.replace(val),
91945            Self::Sub(e) => e.part.replace(val),
91946            Self::Sup(e) => e.part.replace(val),
91947            Self::Time(e) => e.part.replace(val),
91948            Self::U(e) => e.part.replace(val),
91949            Self::Var(e) => e.part.replace(val),
91950            Self::Wbr(e) => e.part.replace(val),
91951            Self::Area(e) => e.part.replace(val),
91952            Self::Audio(e) => e.part.replace(val),
91953            Self::Img(e) => e.part.replace(val),
91954            Self::Map(e) => e.part.replace(val),
91955            Self::Track(e) => e.part.replace(val),
91956            Self::Video(e) => e.part.replace(val),
91957            Self::Embed(e) => e.part.replace(val),
91958            Self::Iframe(e) => e.part.replace(val),
91959            Self::Object(e) => e.part.replace(val),
91960            Self::Picture(e) => e.part.replace(val),
91961            Self::Portal(e) => e.part.replace(val),
91962            Self::Source(e) => e.part.replace(val),
91963            Self::Canvas(e) => e.part.replace(val),
91964            Self::Noscript(e) => e.part.replace(val),
91965            Self::Script(e) => e.part.replace(val),
91966            Self::Del(e) => e.part.replace(val),
91967            Self::Ins(e) => e.part.replace(val),
91968            Self::Caption(e) => e.part.replace(val),
91969            Self::Col(e) => e.part.replace(val),
91970            Self::Colgroup(e) => e.part.replace(val),
91971            Self::Table(e) => e.part.replace(val),
91972            Self::Tbody(e) => e.part.replace(val),
91973            Self::Td(e) => e.part.replace(val),
91974            Self::Tfoot(e) => e.part.replace(val),
91975            Self::Th(e) => e.part.replace(val),
91976            Self::Thead(e) => e.part.replace(val),
91977            Self::Tr(e) => e.part.replace(val),
91978            Self::Button(e) => e.part.replace(val),
91979            Self::Datalist(e) => e.part.replace(val),
91980            Self::Fieldset(e) => e.part.replace(val),
91981            Self::Form(e) => e.part.replace(val),
91982            Self::Input(e) => e.part.replace(val),
91983            Self::Label(e) => e.part.replace(val),
91984            Self::Legend(e) => e.part.replace(val),
91985            Self::Meter(e) => e.part.replace(val),
91986            Self::Optgroup(e) => e.part.replace(val),
91987            Self::Option(e) => e.part.replace(val),
91988            Self::Output(e) => e.part.replace(val),
91989            Self::Progress(e) => e.part.replace(val),
91990            Self::Select(e) => e.part.replace(val),
91991            Self::Textarea(e) => e.part.replace(val),
91992            Self::Details(e) => e.part.replace(val),
91993            Self::Dialog(e) => e.part.replace(val),
91994            Self::Summary(e) => e.part.replace(val),
91995            Self::Slot(e) => e.part.replace(val),
91996            Self::Template(e) => e.part.replace(val),
91997            Self::Acronym(e) => e.part.replace(val),
91998            Self::Applet(e) => e.part.replace(val),
91999            Self::Bgsound(e) => e.part.replace(val),
92000            Self::Big(e) => e.part.replace(val),
92001            Self::Blink(e) => e.part.replace(val),
92002            Self::Center(e) => e.part.replace(val),
92003            Self::Dir(e) => e.part.replace(val),
92004            Self::Font(e) => e.part.replace(val),
92005            Self::Frame(e) => e.part.replace(val),
92006            Self::Frameset(e) => e.part.replace(val),
92007            Self::Image(e) => e.part.replace(val),
92008            Self::Keygen(e) => e.part.replace(val),
92009            Self::Marquee(e) => e.part.replace(val),
92010            Self::Menuitem(e) => e.part.replace(val),
92011            Self::Nobr(e) => e.part.replace(val),
92012            Self::Noembed(e) => e.part.replace(val),
92013            Self::Noframes(e) => e.part.replace(val),
92014            Self::Param(e) => e.part.replace(val),
92015            Self::Plaintext(e) => e.part.replace(val),
92016            Self::Rb(e) => e.part.replace(val),
92017            Self::Rtc(e) => e.part.replace(val),
92018            Self::Spacer(e) => e.part.replace(val),
92019            Self::Strike(e) => e.part.replace(val),
92020            Self::Tt(e) => e.part.replace(val),
92021            Self::Xmp(e) => e.part.replace(val),
92022            Self::H1(e) => e.part.replace(val),
92023            Self::H2(e) => e.part.replace(val),
92024            Self::H3(e) => e.part.replace(val),
92025            Self::H4(e) => e.part.replace(val),
92026            Self::H5(e) => e.part.replace(val),
92027            Self::H6(e) => e.part.replace(val),
92028            Self::Unknown(e) => e.part.replace(val),
92029        };
92030    }
92031
92032    ///     <p>Specifies that the element should be treated like a popover. An element with the <code>popover</code> attribute is hidden from the page unless it is opened by interacting with an invoking element that has <a href="/en-US/docs/Web/HTML/Element/button#popovertarget"><code>popovertarget</code></a>, or via <a href="/en-US/docs/Web/API/HTMLElement/showPopover"><code>showPopover()</code></a>.</p>
92033    ///   
92034    #[cfg(feature = "alloc")]
92035    pub fn set_popover(&mut self, val: AttributeValueOwned) {
92036        match self {
92037            Self::Html(e) => e.popover.replace(val),
92038            Self::Base(e) => e.popover.replace(val),
92039            Self::Head(e) => e.popover.replace(val),
92040            Self::Link(e) => e.popover.replace(val),
92041            Self::Meta(e) => e.popover.replace(val),
92042            Self::Style(e) => e.popover.replace(val),
92043            Self::Title(e) => e.popover.replace(val),
92044            Self::Body(e) => e.popover.replace(val),
92045            Self::Address(e) => e.popover.replace(val),
92046            Self::Article(e) => e.popover.replace(val),
92047            Self::Aside(e) => e.popover.replace(val),
92048            Self::Footer(e) => e.popover.replace(val),
92049            Self::Header(e) => e.popover.replace(val),
92050            Self::Hgroup(e) => e.popover.replace(val),
92051            Self::Main(e) => e.popover.replace(val),
92052            Self::Nav(e) => e.popover.replace(val),
92053            Self::Section(e) => e.popover.replace(val),
92054            Self::Blockquote(e) => e.popover.replace(val),
92055            Self::Dd(e) => e.popover.replace(val),
92056            Self::Div(e) => e.popover.replace(val),
92057            Self::Dl(e) => e.popover.replace(val),
92058            Self::Dt(e) => e.popover.replace(val),
92059            Self::Figcaption(e) => e.popover.replace(val),
92060            Self::Figure(e) => e.popover.replace(val),
92061            Self::Hr(e) => e.popover.replace(val),
92062            Self::Li(e) => e.popover.replace(val),
92063            Self::Menu(e) => e.popover.replace(val),
92064            Self::Ol(e) => e.popover.replace(val),
92065            Self::P(e) => e.popover.replace(val),
92066            Self::Pre(e) => e.popover.replace(val),
92067            Self::Ul(e) => e.popover.replace(val),
92068            Self::A(e) => e.popover.replace(val),
92069            Self::Abbr(e) => e.popover.replace(val),
92070            Self::B(e) => e.popover.replace(val),
92071            Self::Bdi(e) => e.popover.replace(val),
92072            Self::Bdo(e) => e.popover.replace(val),
92073            Self::Br(e) => e.popover.replace(val),
92074            Self::Cite(e) => e.popover.replace(val),
92075            Self::Code(e) => e.popover.replace(val),
92076            Self::Data(e) => e.popover.replace(val),
92077            Self::Dfn(e) => e.popover.replace(val),
92078            Self::Em(e) => e.popover.replace(val),
92079            Self::I(e) => e.popover.replace(val),
92080            Self::Kbd(e) => e.popover.replace(val),
92081            Self::Mark(e) => e.popover.replace(val),
92082            Self::Q(e) => e.popover.replace(val),
92083            Self::Rp(e) => e.popover.replace(val),
92084            Self::Rt(e) => e.popover.replace(val),
92085            Self::Ruby(e) => e.popover.replace(val),
92086            Self::S(e) => e.popover.replace(val),
92087            Self::Samp(e) => e.popover.replace(val),
92088            Self::Small(e) => e.popover.replace(val),
92089            Self::Span(e) => e.popover.replace(val),
92090            Self::Strong(e) => e.popover.replace(val),
92091            Self::Sub(e) => e.popover.replace(val),
92092            Self::Sup(e) => e.popover.replace(val),
92093            Self::Time(e) => e.popover.replace(val),
92094            Self::U(e) => e.popover.replace(val),
92095            Self::Var(e) => e.popover.replace(val),
92096            Self::Wbr(e) => e.popover.replace(val),
92097            Self::Area(e) => e.popover.replace(val),
92098            Self::Audio(e) => e.popover.replace(val),
92099            Self::Img(e) => e.popover.replace(val),
92100            Self::Map(e) => e.popover.replace(val),
92101            Self::Track(e) => e.popover.replace(val),
92102            Self::Video(e) => e.popover.replace(val),
92103            Self::Embed(e) => e.popover.replace(val),
92104            Self::Iframe(e) => e.popover.replace(val),
92105            Self::Object(e) => e.popover.replace(val),
92106            Self::Picture(e) => e.popover.replace(val),
92107            Self::Portal(e) => e.popover.replace(val),
92108            Self::Source(e) => e.popover.replace(val),
92109            Self::Canvas(e) => e.popover.replace(val),
92110            Self::Noscript(e) => e.popover.replace(val),
92111            Self::Script(e) => e.popover.replace(val),
92112            Self::Del(e) => e.popover.replace(val),
92113            Self::Ins(e) => e.popover.replace(val),
92114            Self::Caption(e) => e.popover.replace(val),
92115            Self::Col(e) => e.popover.replace(val),
92116            Self::Colgroup(e) => e.popover.replace(val),
92117            Self::Table(e) => e.popover.replace(val),
92118            Self::Tbody(e) => e.popover.replace(val),
92119            Self::Td(e) => e.popover.replace(val),
92120            Self::Tfoot(e) => e.popover.replace(val),
92121            Self::Th(e) => e.popover.replace(val),
92122            Self::Thead(e) => e.popover.replace(val),
92123            Self::Tr(e) => e.popover.replace(val),
92124            Self::Button(e) => e.popover.replace(val),
92125            Self::Datalist(e) => e.popover.replace(val),
92126            Self::Fieldset(e) => e.popover.replace(val),
92127            Self::Form(e) => e.popover.replace(val),
92128            Self::Input(e) => e.popover.replace(val),
92129            Self::Label(e) => e.popover.replace(val),
92130            Self::Legend(e) => e.popover.replace(val),
92131            Self::Meter(e) => e.popover.replace(val),
92132            Self::Optgroup(e) => e.popover.replace(val),
92133            Self::Option(e) => e.popover.replace(val),
92134            Self::Output(e) => e.popover.replace(val),
92135            Self::Progress(e) => e.popover.replace(val),
92136            Self::Select(e) => e.popover.replace(val),
92137            Self::Textarea(e) => e.popover.replace(val),
92138            Self::Details(e) => e.popover.replace(val),
92139            Self::Dialog(e) => e.popover.replace(val),
92140            Self::Summary(e) => e.popover.replace(val),
92141            Self::Slot(e) => e.popover.replace(val),
92142            Self::Template(e) => e.popover.replace(val),
92143            Self::Acronym(e) => e.popover.replace(val),
92144            Self::Applet(e) => e.popover.replace(val),
92145            Self::Bgsound(e) => e.popover.replace(val),
92146            Self::Big(e) => e.popover.replace(val),
92147            Self::Blink(e) => e.popover.replace(val),
92148            Self::Center(e) => e.popover.replace(val),
92149            Self::Dir(e) => e.popover.replace(val),
92150            Self::Font(e) => e.popover.replace(val),
92151            Self::Frame(e) => e.popover.replace(val),
92152            Self::Frameset(e) => e.popover.replace(val),
92153            Self::Image(e) => e.popover.replace(val),
92154            Self::Keygen(e) => e.popover.replace(val),
92155            Self::Marquee(e) => e.popover.replace(val),
92156            Self::Menuitem(e) => e.popover.replace(val),
92157            Self::Nobr(e) => e.popover.replace(val),
92158            Self::Noembed(e) => e.popover.replace(val),
92159            Self::Noframes(e) => e.popover.replace(val),
92160            Self::Param(e) => e.popover.replace(val),
92161            Self::Plaintext(e) => e.popover.replace(val),
92162            Self::Rb(e) => e.popover.replace(val),
92163            Self::Rtc(e) => e.popover.replace(val),
92164            Self::Spacer(e) => e.popover.replace(val),
92165            Self::Strike(e) => e.popover.replace(val),
92166            Self::Tt(e) => e.popover.replace(val),
92167            Self::Xmp(e) => e.popover.replace(val),
92168            Self::H1(e) => e.popover.replace(val),
92169            Self::H2(e) => e.popover.replace(val),
92170            Self::H3(e) => e.popover.replace(val),
92171            Self::H4(e) => e.popover.replace(val),
92172            Self::H5(e) => e.popover.replace(val),
92173            Self::H6(e) => e.popover.replace(val),
92174            Self::Unknown(e) => e.popover.replace(val),
92175        };
92176    }
92177
92178    ///     <p>Roles define the semantic meaning of content, allowing screen readers and other tools to present and support interaction with an object in a way that is consistent with user expectations of that type of object. <code>roles</code> are added to HTML elements using <code>role="role_type"</code>, where <code>role_type</code> is the name of a role in the ARIA specification.</p>
92179    ///   
92180    #[cfg(feature = "alloc")]
92181    pub fn set_role(&mut self, val: AttributeValueOwned) {
92182        match self {
92183            Self::Html(e) => e.role.replace(val),
92184            Self::Base(e) => e.role.replace(val),
92185            Self::Head(e) => e.role.replace(val),
92186            Self::Link(e) => e.role.replace(val),
92187            Self::Meta(e) => e.role.replace(val),
92188            Self::Style(e) => e.role.replace(val),
92189            Self::Title(e) => e.role.replace(val),
92190            Self::Body(e) => e.role.replace(val),
92191            Self::Address(e) => e.role.replace(val),
92192            Self::Article(e) => e.role.replace(val),
92193            Self::Aside(e) => e.role.replace(val),
92194            Self::Footer(e) => e.role.replace(val),
92195            Self::Header(e) => e.role.replace(val),
92196            Self::Hgroup(e) => e.role.replace(val),
92197            Self::Main(e) => e.role.replace(val),
92198            Self::Nav(e) => e.role.replace(val),
92199            Self::Section(e) => e.role.replace(val),
92200            Self::Blockquote(e) => e.role.replace(val),
92201            Self::Dd(e) => e.role.replace(val),
92202            Self::Div(e) => e.role.replace(val),
92203            Self::Dl(e) => e.role.replace(val),
92204            Self::Dt(e) => e.role.replace(val),
92205            Self::Figcaption(e) => e.role.replace(val),
92206            Self::Figure(e) => e.role.replace(val),
92207            Self::Hr(e) => e.role.replace(val),
92208            Self::Li(e) => e.role.replace(val),
92209            Self::Menu(e) => e.role.replace(val),
92210            Self::Ol(e) => e.role.replace(val),
92211            Self::P(e) => e.role.replace(val),
92212            Self::Pre(e) => e.role.replace(val),
92213            Self::Ul(e) => e.role.replace(val),
92214            Self::A(e) => e.role.replace(val),
92215            Self::Abbr(e) => e.role.replace(val),
92216            Self::B(e) => e.role.replace(val),
92217            Self::Bdi(e) => e.role.replace(val),
92218            Self::Bdo(e) => e.role.replace(val),
92219            Self::Br(e) => e.role.replace(val),
92220            Self::Cite(e) => e.role.replace(val),
92221            Self::Code(e) => e.role.replace(val),
92222            Self::Data(e) => e.role.replace(val),
92223            Self::Dfn(e) => e.role.replace(val),
92224            Self::Em(e) => e.role.replace(val),
92225            Self::I(e) => e.role.replace(val),
92226            Self::Kbd(e) => e.role.replace(val),
92227            Self::Mark(e) => e.role.replace(val),
92228            Self::Q(e) => e.role.replace(val),
92229            Self::Rp(e) => e.role.replace(val),
92230            Self::Rt(e) => e.role.replace(val),
92231            Self::Ruby(e) => e.role.replace(val),
92232            Self::S(e) => e.role.replace(val),
92233            Self::Samp(e) => e.role.replace(val),
92234            Self::Small(e) => e.role.replace(val),
92235            Self::Span(e) => e.role.replace(val),
92236            Self::Strong(e) => e.role.replace(val),
92237            Self::Sub(e) => e.role.replace(val),
92238            Self::Sup(e) => e.role.replace(val),
92239            Self::Time(e) => e.role.replace(val),
92240            Self::U(e) => e.role.replace(val),
92241            Self::Var(e) => e.role.replace(val),
92242            Self::Wbr(e) => e.role.replace(val),
92243            Self::Area(e) => e.role.replace(val),
92244            Self::Audio(e) => e.role.replace(val),
92245            Self::Img(e) => e.role.replace(val),
92246            Self::Map(e) => e.role.replace(val),
92247            Self::Track(e) => e.role.replace(val),
92248            Self::Video(e) => e.role.replace(val),
92249            Self::Embed(e) => e.role.replace(val),
92250            Self::Iframe(e) => e.role.replace(val),
92251            Self::Object(e) => e.role.replace(val),
92252            Self::Picture(e) => e.role.replace(val),
92253            Self::Portal(e) => e.role.replace(val),
92254            Self::Source(e) => e.role.replace(val),
92255            Self::Canvas(e) => e.role.replace(val),
92256            Self::Noscript(e) => e.role.replace(val),
92257            Self::Script(e) => e.role.replace(val),
92258            Self::Del(e) => e.role.replace(val),
92259            Self::Ins(e) => e.role.replace(val),
92260            Self::Caption(e) => e.role.replace(val),
92261            Self::Col(e) => e.role.replace(val),
92262            Self::Colgroup(e) => e.role.replace(val),
92263            Self::Table(e) => e.role.replace(val),
92264            Self::Tbody(e) => e.role.replace(val),
92265            Self::Td(e) => e.role.replace(val),
92266            Self::Tfoot(e) => e.role.replace(val),
92267            Self::Th(e) => e.role.replace(val),
92268            Self::Thead(e) => e.role.replace(val),
92269            Self::Tr(e) => e.role.replace(val),
92270            Self::Button(e) => e.role.replace(val),
92271            Self::Datalist(e) => e.role.replace(val),
92272            Self::Fieldset(e) => e.role.replace(val),
92273            Self::Form(e) => e.role.replace(val),
92274            Self::Input(e) => e.role.replace(val),
92275            Self::Label(e) => e.role.replace(val),
92276            Self::Legend(e) => e.role.replace(val),
92277            Self::Meter(e) => e.role.replace(val),
92278            Self::Optgroup(e) => e.role.replace(val),
92279            Self::Option(e) => e.role.replace(val),
92280            Self::Output(e) => e.role.replace(val),
92281            Self::Progress(e) => e.role.replace(val),
92282            Self::Select(e) => e.role.replace(val),
92283            Self::Textarea(e) => e.role.replace(val),
92284            Self::Details(e) => e.role.replace(val),
92285            Self::Dialog(e) => e.role.replace(val),
92286            Self::Summary(e) => e.role.replace(val),
92287            Self::Slot(e) => e.role.replace(val),
92288            Self::Template(e) => e.role.replace(val),
92289            Self::Acronym(e) => e.role.replace(val),
92290            Self::Applet(e) => e.role.replace(val),
92291            Self::Bgsound(e) => e.role.replace(val),
92292            Self::Big(e) => e.role.replace(val),
92293            Self::Blink(e) => e.role.replace(val),
92294            Self::Center(e) => e.role.replace(val),
92295            Self::Dir(e) => e.role.replace(val),
92296            Self::Font(e) => e.role.replace(val),
92297            Self::Frame(e) => e.role.replace(val),
92298            Self::Frameset(e) => e.role.replace(val),
92299            Self::Image(e) => e.role.replace(val),
92300            Self::Keygen(e) => e.role.replace(val),
92301            Self::Marquee(e) => e.role.replace(val),
92302            Self::Menuitem(e) => e.role.replace(val),
92303            Self::Nobr(e) => e.role.replace(val),
92304            Self::Noembed(e) => e.role.replace(val),
92305            Self::Noframes(e) => e.role.replace(val),
92306            Self::Param(e) => e.role.replace(val),
92307            Self::Plaintext(e) => e.role.replace(val),
92308            Self::Rb(e) => e.role.replace(val),
92309            Self::Rtc(e) => e.role.replace(val),
92310            Self::Spacer(e) => e.role.replace(val),
92311            Self::Strike(e) => e.role.replace(val),
92312            Self::Tt(e) => e.role.replace(val),
92313            Self::Xmp(e) => e.role.replace(val),
92314            Self::H1(e) => e.role.replace(val),
92315            Self::H2(e) => e.role.replace(val),
92316            Self::H3(e) => e.role.replace(val),
92317            Self::H4(e) => e.role.replace(val),
92318            Self::H5(e) => e.role.replace(val),
92319            Self::H6(e) => e.role.replace(val),
92320            Self::Unknown(e) => e.role.replace(val),
92321        };
92322    }
92323
92324    ///     <p>Assigns a slot in a <a href="/en-US/docs/Web/API/Web_components/Using_shadow_DOM">shadow DOM</a> shadow tree to an element: An element with a <code>slot</code> attribute is assigned to the slot created by the <a href="/en-US/docs/Web/HTML/Element/slot"><code>&lt;slot&gt;</code></a> element whose <a href="/en-US/docs/Web/HTML/Element/slot#name"><code>name</code></a> attribute's value matches that <code>slot</code> attribute's value.</p>
92325    ///   
92326    #[cfg(feature = "alloc")]
92327    pub fn set_slot(&mut self, val: AttributeValueOwned) {
92328        match self {
92329            Self::Html(e) => e.slot.replace(val),
92330            Self::Base(e) => e.slot.replace(val),
92331            Self::Head(e) => e.slot.replace(val),
92332            Self::Link(e) => e.slot.replace(val),
92333            Self::Meta(e) => e.slot.replace(val),
92334            Self::Style(e) => e.slot.replace(val),
92335            Self::Title(e) => e.slot.replace(val),
92336            Self::Body(e) => e.slot.replace(val),
92337            Self::Address(e) => e.slot.replace(val),
92338            Self::Article(e) => e.slot.replace(val),
92339            Self::Aside(e) => e.slot.replace(val),
92340            Self::Footer(e) => e.slot.replace(val),
92341            Self::Header(e) => e.slot.replace(val),
92342            Self::Hgroup(e) => e.slot.replace(val),
92343            Self::Main(e) => e.slot.replace(val),
92344            Self::Nav(e) => e.slot.replace(val),
92345            Self::Section(e) => e.slot.replace(val),
92346            Self::Blockquote(e) => e.slot.replace(val),
92347            Self::Dd(e) => e.slot.replace(val),
92348            Self::Div(e) => e.slot.replace(val),
92349            Self::Dl(e) => e.slot.replace(val),
92350            Self::Dt(e) => e.slot.replace(val),
92351            Self::Figcaption(e) => e.slot.replace(val),
92352            Self::Figure(e) => e.slot.replace(val),
92353            Self::Hr(e) => e.slot.replace(val),
92354            Self::Li(e) => e.slot.replace(val),
92355            Self::Menu(e) => e.slot.replace(val),
92356            Self::Ol(e) => e.slot.replace(val),
92357            Self::P(e) => e.slot.replace(val),
92358            Self::Pre(e) => e.slot.replace(val),
92359            Self::Ul(e) => e.slot.replace(val),
92360            Self::A(e) => e.slot.replace(val),
92361            Self::Abbr(e) => e.slot.replace(val),
92362            Self::B(e) => e.slot.replace(val),
92363            Self::Bdi(e) => e.slot.replace(val),
92364            Self::Bdo(e) => e.slot.replace(val),
92365            Self::Br(e) => e.slot.replace(val),
92366            Self::Cite(e) => e.slot.replace(val),
92367            Self::Code(e) => e.slot.replace(val),
92368            Self::Data(e) => e.slot.replace(val),
92369            Self::Dfn(e) => e.slot.replace(val),
92370            Self::Em(e) => e.slot.replace(val),
92371            Self::I(e) => e.slot.replace(val),
92372            Self::Kbd(e) => e.slot.replace(val),
92373            Self::Mark(e) => e.slot.replace(val),
92374            Self::Q(e) => e.slot.replace(val),
92375            Self::Rp(e) => e.slot.replace(val),
92376            Self::Rt(e) => e.slot.replace(val),
92377            Self::Ruby(e) => e.slot.replace(val),
92378            Self::S(e) => e.slot.replace(val),
92379            Self::Samp(e) => e.slot.replace(val),
92380            Self::Small(e) => e.slot.replace(val),
92381            Self::Span(e) => e.slot.replace(val),
92382            Self::Strong(e) => e.slot.replace(val),
92383            Self::Sub(e) => e.slot.replace(val),
92384            Self::Sup(e) => e.slot.replace(val),
92385            Self::Time(e) => e.slot.replace(val),
92386            Self::U(e) => e.slot.replace(val),
92387            Self::Var(e) => e.slot.replace(val),
92388            Self::Wbr(e) => e.slot.replace(val),
92389            Self::Area(e) => e.slot.replace(val),
92390            Self::Audio(e) => e.slot.replace(val),
92391            Self::Img(e) => e.slot.replace(val),
92392            Self::Map(e) => e.slot.replace(val),
92393            Self::Track(e) => e.slot.replace(val),
92394            Self::Video(e) => e.slot.replace(val),
92395            Self::Embed(e) => e.slot.replace(val),
92396            Self::Iframe(e) => e.slot.replace(val),
92397            Self::Object(e) => e.slot.replace(val),
92398            Self::Picture(e) => e.slot.replace(val),
92399            Self::Portal(e) => e.slot.replace(val),
92400            Self::Source(e) => e.slot.replace(val),
92401            Self::Canvas(e) => e.slot.replace(val),
92402            Self::Noscript(e) => e.slot.replace(val),
92403            Self::Script(e) => e.slot.replace(val),
92404            Self::Del(e) => e.slot.replace(val),
92405            Self::Ins(e) => e.slot.replace(val),
92406            Self::Caption(e) => e.slot.replace(val),
92407            Self::Col(e) => e.slot.replace(val),
92408            Self::Colgroup(e) => e.slot.replace(val),
92409            Self::Table(e) => e.slot.replace(val),
92410            Self::Tbody(e) => e.slot.replace(val),
92411            Self::Td(e) => e.slot.replace(val),
92412            Self::Tfoot(e) => e.slot.replace(val),
92413            Self::Th(e) => e.slot.replace(val),
92414            Self::Thead(e) => e.slot.replace(val),
92415            Self::Tr(e) => e.slot.replace(val),
92416            Self::Button(e) => e.slot.replace(val),
92417            Self::Datalist(e) => e.slot.replace(val),
92418            Self::Fieldset(e) => e.slot.replace(val),
92419            Self::Form(e) => e.slot.replace(val),
92420            Self::Input(e) => e.slot.replace(val),
92421            Self::Label(e) => e.slot.replace(val),
92422            Self::Legend(e) => e.slot.replace(val),
92423            Self::Meter(e) => e.slot.replace(val),
92424            Self::Optgroup(e) => e.slot.replace(val),
92425            Self::Option(e) => e.slot.replace(val),
92426            Self::Output(e) => e.slot.replace(val),
92427            Self::Progress(e) => e.slot.replace(val),
92428            Self::Select(e) => e.slot.replace(val),
92429            Self::Textarea(e) => e.slot.replace(val),
92430            Self::Details(e) => e.slot.replace(val),
92431            Self::Dialog(e) => e.slot.replace(val),
92432            Self::Summary(e) => e.slot.replace(val),
92433            Self::Slot(e) => e.slot.replace(val),
92434            Self::Template(e) => e.slot.replace(val),
92435            Self::Acronym(e) => e.slot.replace(val),
92436            Self::Applet(e) => e.slot.replace(val),
92437            Self::Bgsound(e) => e.slot.replace(val),
92438            Self::Big(e) => e.slot.replace(val),
92439            Self::Blink(e) => e.slot.replace(val),
92440            Self::Center(e) => e.slot.replace(val),
92441            Self::Dir(e) => e.slot.replace(val),
92442            Self::Font(e) => e.slot.replace(val),
92443            Self::Frame(e) => e.slot.replace(val),
92444            Self::Frameset(e) => e.slot.replace(val),
92445            Self::Image(e) => e.slot.replace(val),
92446            Self::Keygen(e) => e.slot.replace(val),
92447            Self::Marquee(e) => e.slot.replace(val),
92448            Self::Menuitem(e) => e.slot.replace(val),
92449            Self::Nobr(e) => e.slot.replace(val),
92450            Self::Noembed(e) => e.slot.replace(val),
92451            Self::Noframes(e) => e.slot.replace(val),
92452            Self::Param(e) => e.slot.replace(val),
92453            Self::Plaintext(e) => e.slot.replace(val),
92454            Self::Rb(e) => e.slot.replace(val),
92455            Self::Rtc(e) => e.slot.replace(val),
92456            Self::Spacer(e) => e.slot.replace(val),
92457            Self::Strike(e) => e.slot.replace(val),
92458            Self::Tt(e) => e.slot.replace(val),
92459            Self::Xmp(e) => e.slot.replace(val),
92460            Self::H1(e) => e.slot.replace(val),
92461            Self::H2(e) => e.slot.replace(val),
92462            Self::H3(e) => e.slot.replace(val),
92463            Self::H4(e) => e.slot.replace(val),
92464            Self::H5(e) => e.slot.replace(val),
92465            Self::H6(e) => e.slot.replace(val),
92466            Self::Unknown(e) => e.slot.replace(val),
92467        };
92468    }
92469
92470    ///     <p>An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:</p>
92471    ///     <ul>
92472    ///       <li>empty string or <code>true</code>, which indicates that the element should be, if possible, checked for spelling errors;</li>
92473    ///       <li><code>false</code>, which indicates that the element should not be checked for spelling errors.</li>
92474    ///     </ul>
92475    ///   
92476    #[cfg(feature = "alloc")]
92477    pub fn set_spellcheck(&mut self, val: AttributeValueOwned) {
92478        match self {
92479            Self::Html(e) => e.spellcheck.replace(val),
92480            Self::Base(e) => e.spellcheck.replace(val),
92481            Self::Head(e) => e.spellcheck.replace(val),
92482            Self::Link(e) => e.spellcheck.replace(val),
92483            Self::Meta(e) => e.spellcheck.replace(val),
92484            Self::Style(e) => e.spellcheck.replace(val),
92485            Self::Title(e) => e.spellcheck.replace(val),
92486            Self::Body(e) => e.spellcheck.replace(val),
92487            Self::Address(e) => e.spellcheck.replace(val),
92488            Self::Article(e) => e.spellcheck.replace(val),
92489            Self::Aside(e) => e.spellcheck.replace(val),
92490            Self::Footer(e) => e.spellcheck.replace(val),
92491            Self::Header(e) => e.spellcheck.replace(val),
92492            Self::Hgroup(e) => e.spellcheck.replace(val),
92493            Self::Main(e) => e.spellcheck.replace(val),
92494            Self::Nav(e) => e.spellcheck.replace(val),
92495            Self::Section(e) => e.spellcheck.replace(val),
92496            Self::Blockquote(e) => e.spellcheck.replace(val),
92497            Self::Dd(e) => e.spellcheck.replace(val),
92498            Self::Div(e) => e.spellcheck.replace(val),
92499            Self::Dl(e) => e.spellcheck.replace(val),
92500            Self::Dt(e) => e.spellcheck.replace(val),
92501            Self::Figcaption(e) => e.spellcheck.replace(val),
92502            Self::Figure(e) => e.spellcheck.replace(val),
92503            Self::Hr(e) => e.spellcheck.replace(val),
92504            Self::Li(e) => e.spellcheck.replace(val),
92505            Self::Menu(e) => e.spellcheck.replace(val),
92506            Self::Ol(e) => e.spellcheck.replace(val),
92507            Self::P(e) => e.spellcheck.replace(val),
92508            Self::Pre(e) => e.spellcheck.replace(val),
92509            Self::Ul(e) => e.spellcheck.replace(val),
92510            Self::A(e) => e.spellcheck.replace(val),
92511            Self::Abbr(e) => e.spellcheck.replace(val),
92512            Self::B(e) => e.spellcheck.replace(val),
92513            Self::Bdi(e) => e.spellcheck.replace(val),
92514            Self::Bdo(e) => e.spellcheck.replace(val),
92515            Self::Br(e) => e.spellcheck.replace(val),
92516            Self::Cite(e) => e.spellcheck.replace(val),
92517            Self::Code(e) => e.spellcheck.replace(val),
92518            Self::Data(e) => e.spellcheck.replace(val),
92519            Self::Dfn(e) => e.spellcheck.replace(val),
92520            Self::Em(e) => e.spellcheck.replace(val),
92521            Self::I(e) => e.spellcheck.replace(val),
92522            Self::Kbd(e) => e.spellcheck.replace(val),
92523            Self::Mark(e) => e.spellcheck.replace(val),
92524            Self::Q(e) => e.spellcheck.replace(val),
92525            Self::Rp(e) => e.spellcheck.replace(val),
92526            Self::Rt(e) => e.spellcheck.replace(val),
92527            Self::Ruby(e) => e.spellcheck.replace(val),
92528            Self::S(e) => e.spellcheck.replace(val),
92529            Self::Samp(e) => e.spellcheck.replace(val),
92530            Self::Small(e) => e.spellcheck.replace(val),
92531            Self::Span(e) => e.spellcheck.replace(val),
92532            Self::Strong(e) => e.spellcheck.replace(val),
92533            Self::Sub(e) => e.spellcheck.replace(val),
92534            Self::Sup(e) => e.spellcheck.replace(val),
92535            Self::Time(e) => e.spellcheck.replace(val),
92536            Self::U(e) => e.spellcheck.replace(val),
92537            Self::Var(e) => e.spellcheck.replace(val),
92538            Self::Wbr(e) => e.spellcheck.replace(val),
92539            Self::Area(e) => e.spellcheck.replace(val),
92540            Self::Audio(e) => e.spellcheck.replace(val),
92541            Self::Img(e) => e.spellcheck.replace(val),
92542            Self::Map(e) => e.spellcheck.replace(val),
92543            Self::Track(e) => e.spellcheck.replace(val),
92544            Self::Video(e) => e.spellcheck.replace(val),
92545            Self::Embed(e) => e.spellcheck.replace(val),
92546            Self::Iframe(e) => e.spellcheck.replace(val),
92547            Self::Object(e) => e.spellcheck.replace(val),
92548            Self::Picture(e) => e.spellcheck.replace(val),
92549            Self::Portal(e) => e.spellcheck.replace(val),
92550            Self::Source(e) => e.spellcheck.replace(val),
92551            Self::Canvas(e) => e.spellcheck.replace(val),
92552            Self::Noscript(e) => e.spellcheck.replace(val),
92553            Self::Script(e) => e.spellcheck.replace(val),
92554            Self::Del(e) => e.spellcheck.replace(val),
92555            Self::Ins(e) => e.spellcheck.replace(val),
92556            Self::Caption(e) => e.spellcheck.replace(val),
92557            Self::Col(e) => e.spellcheck.replace(val),
92558            Self::Colgroup(e) => e.spellcheck.replace(val),
92559            Self::Table(e) => e.spellcheck.replace(val),
92560            Self::Tbody(e) => e.spellcheck.replace(val),
92561            Self::Td(e) => e.spellcheck.replace(val),
92562            Self::Tfoot(e) => e.spellcheck.replace(val),
92563            Self::Th(e) => e.spellcheck.replace(val),
92564            Self::Thead(e) => e.spellcheck.replace(val),
92565            Self::Tr(e) => e.spellcheck.replace(val),
92566            Self::Button(e) => e.spellcheck.replace(val),
92567            Self::Datalist(e) => e.spellcheck.replace(val),
92568            Self::Fieldset(e) => e.spellcheck.replace(val),
92569            Self::Form(e) => e.spellcheck.replace(val),
92570            Self::Input(e) => e.spellcheck.replace(val),
92571            Self::Label(e) => e.spellcheck.replace(val),
92572            Self::Legend(e) => e.spellcheck.replace(val),
92573            Self::Meter(e) => e.spellcheck.replace(val),
92574            Self::Optgroup(e) => e.spellcheck.replace(val),
92575            Self::Option(e) => e.spellcheck.replace(val),
92576            Self::Output(e) => e.spellcheck.replace(val),
92577            Self::Progress(e) => e.spellcheck.replace(val),
92578            Self::Select(e) => e.spellcheck.replace(val),
92579            Self::Textarea(e) => e.spellcheck.replace(val),
92580            Self::Details(e) => e.spellcheck.replace(val),
92581            Self::Dialog(e) => e.spellcheck.replace(val),
92582            Self::Summary(e) => e.spellcheck.replace(val),
92583            Self::Slot(e) => e.spellcheck.replace(val),
92584            Self::Template(e) => e.spellcheck.replace(val),
92585            Self::Acronym(e) => e.spellcheck.replace(val),
92586            Self::Applet(e) => e.spellcheck.replace(val),
92587            Self::Bgsound(e) => e.spellcheck.replace(val),
92588            Self::Big(e) => e.spellcheck.replace(val),
92589            Self::Blink(e) => e.spellcheck.replace(val),
92590            Self::Center(e) => e.spellcheck.replace(val),
92591            Self::Dir(e) => e.spellcheck.replace(val),
92592            Self::Font(e) => e.spellcheck.replace(val),
92593            Self::Frame(e) => e.spellcheck.replace(val),
92594            Self::Frameset(e) => e.spellcheck.replace(val),
92595            Self::Image(e) => e.spellcheck.replace(val),
92596            Self::Keygen(e) => e.spellcheck.replace(val),
92597            Self::Marquee(e) => e.spellcheck.replace(val),
92598            Self::Menuitem(e) => e.spellcheck.replace(val),
92599            Self::Nobr(e) => e.spellcheck.replace(val),
92600            Self::Noembed(e) => e.spellcheck.replace(val),
92601            Self::Noframes(e) => e.spellcheck.replace(val),
92602            Self::Param(e) => e.spellcheck.replace(val),
92603            Self::Plaintext(e) => e.spellcheck.replace(val),
92604            Self::Rb(e) => e.spellcheck.replace(val),
92605            Self::Rtc(e) => e.spellcheck.replace(val),
92606            Self::Spacer(e) => e.spellcheck.replace(val),
92607            Self::Strike(e) => e.spellcheck.replace(val),
92608            Self::Tt(e) => e.spellcheck.replace(val),
92609            Self::Xmp(e) => e.spellcheck.replace(val),
92610            Self::H1(e) => e.spellcheck.replace(val),
92611            Self::H2(e) => e.spellcheck.replace(val),
92612            Self::H3(e) => e.spellcheck.replace(val),
92613            Self::H4(e) => e.spellcheck.replace(val),
92614            Self::H5(e) => e.spellcheck.replace(val),
92615            Self::H6(e) => e.spellcheck.replace(val),
92616            Self::Unknown(e) => e.spellcheck.replace(val),
92617        };
92618    }
92619
92620    ///     <p>Contains <a href="/en-US/docs/Web/CSS">CSS</a> styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the <a href="/en-US/docs/Web/HTML/Element/style"><code>&lt;style&gt;</code></a> element have mainly the purpose of allowing for quick styling, for example for testing purposes.</p>
92621    ///   
92622    #[cfg(feature = "alloc")]
92623    pub fn set_style(&mut self, val: AttributeValueOwned) {
92624        match self {
92625            Self::Html(e) => e.style.replace(val),
92626            Self::Base(e) => e.style.replace(val),
92627            Self::Head(e) => e.style.replace(val),
92628            Self::Link(e) => e.style.replace(val),
92629            Self::Meta(e) => e.style.replace(val),
92630            Self::Style(e) => e.style.replace(val),
92631            Self::Title(e) => e.style.replace(val),
92632            Self::Body(e) => e.style.replace(val),
92633            Self::Address(e) => e.style.replace(val),
92634            Self::Article(e) => e.style.replace(val),
92635            Self::Aside(e) => e.style.replace(val),
92636            Self::Footer(e) => e.style.replace(val),
92637            Self::Header(e) => e.style.replace(val),
92638            Self::Hgroup(e) => e.style.replace(val),
92639            Self::Main(e) => e.style.replace(val),
92640            Self::Nav(e) => e.style.replace(val),
92641            Self::Section(e) => e.style.replace(val),
92642            Self::Blockquote(e) => e.style.replace(val),
92643            Self::Dd(e) => e.style.replace(val),
92644            Self::Div(e) => e.style.replace(val),
92645            Self::Dl(e) => e.style.replace(val),
92646            Self::Dt(e) => e.style.replace(val),
92647            Self::Figcaption(e) => e.style.replace(val),
92648            Self::Figure(e) => e.style.replace(val),
92649            Self::Hr(e) => e.style.replace(val),
92650            Self::Li(e) => e.style.replace(val),
92651            Self::Menu(e) => e.style.replace(val),
92652            Self::Ol(e) => e.style.replace(val),
92653            Self::P(e) => e.style.replace(val),
92654            Self::Pre(e) => e.style.replace(val),
92655            Self::Ul(e) => e.style.replace(val),
92656            Self::A(e) => e.style.replace(val),
92657            Self::Abbr(e) => e.style.replace(val),
92658            Self::B(e) => e.style.replace(val),
92659            Self::Bdi(e) => e.style.replace(val),
92660            Self::Bdo(e) => e.style.replace(val),
92661            Self::Br(e) => e.style.replace(val),
92662            Self::Cite(e) => e.style.replace(val),
92663            Self::Code(e) => e.style.replace(val),
92664            Self::Data(e) => e.style.replace(val),
92665            Self::Dfn(e) => e.style.replace(val),
92666            Self::Em(e) => e.style.replace(val),
92667            Self::I(e) => e.style.replace(val),
92668            Self::Kbd(e) => e.style.replace(val),
92669            Self::Mark(e) => e.style.replace(val),
92670            Self::Q(e) => e.style.replace(val),
92671            Self::Rp(e) => e.style.replace(val),
92672            Self::Rt(e) => e.style.replace(val),
92673            Self::Ruby(e) => e.style.replace(val),
92674            Self::S(e) => e.style.replace(val),
92675            Self::Samp(e) => e.style.replace(val),
92676            Self::Small(e) => e.style.replace(val),
92677            Self::Span(e) => e.style.replace(val),
92678            Self::Strong(e) => e.style.replace(val),
92679            Self::Sub(e) => e.style.replace(val),
92680            Self::Sup(e) => e.style.replace(val),
92681            Self::Time(e) => e.style.replace(val),
92682            Self::U(e) => e.style.replace(val),
92683            Self::Var(e) => e.style.replace(val),
92684            Self::Wbr(e) => e.style.replace(val),
92685            Self::Area(e) => e.style.replace(val),
92686            Self::Audio(e) => e.style.replace(val),
92687            Self::Img(e) => e.style.replace(val),
92688            Self::Map(e) => e.style.replace(val),
92689            Self::Track(e) => e.style.replace(val),
92690            Self::Video(e) => e.style.replace(val),
92691            Self::Embed(e) => e.style.replace(val),
92692            Self::Iframe(e) => e.style.replace(val),
92693            Self::Object(e) => e.style.replace(val),
92694            Self::Picture(e) => e.style.replace(val),
92695            Self::Portal(e) => e.style.replace(val),
92696            Self::Source(e) => e.style.replace(val),
92697            Self::Canvas(e) => e.style.replace(val),
92698            Self::Noscript(e) => e.style.replace(val),
92699            Self::Script(e) => e.style.replace(val),
92700            Self::Del(e) => e.style.replace(val),
92701            Self::Ins(e) => e.style.replace(val),
92702            Self::Caption(e) => e.style.replace(val),
92703            Self::Col(e) => e.style.replace(val),
92704            Self::Colgroup(e) => e.style.replace(val),
92705            Self::Table(e) => e.style.replace(val),
92706            Self::Tbody(e) => e.style.replace(val),
92707            Self::Td(e) => e.style.replace(val),
92708            Self::Tfoot(e) => e.style.replace(val),
92709            Self::Th(e) => e.style.replace(val),
92710            Self::Thead(e) => e.style.replace(val),
92711            Self::Tr(e) => e.style.replace(val),
92712            Self::Button(e) => e.style.replace(val),
92713            Self::Datalist(e) => e.style.replace(val),
92714            Self::Fieldset(e) => e.style.replace(val),
92715            Self::Form(e) => e.style.replace(val),
92716            Self::Input(e) => e.style.replace(val),
92717            Self::Label(e) => e.style.replace(val),
92718            Self::Legend(e) => e.style.replace(val),
92719            Self::Meter(e) => e.style.replace(val),
92720            Self::Optgroup(e) => e.style.replace(val),
92721            Self::Option(e) => e.style.replace(val),
92722            Self::Output(e) => e.style.replace(val),
92723            Self::Progress(e) => e.style.replace(val),
92724            Self::Select(e) => e.style.replace(val),
92725            Self::Textarea(e) => e.style.replace(val),
92726            Self::Details(e) => e.style.replace(val),
92727            Self::Dialog(e) => e.style.replace(val),
92728            Self::Summary(e) => e.style.replace(val),
92729            Self::Slot(e) => e.style.replace(val),
92730            Self::Template(e) => e.style.replace(val),
92731            Self::Acronym(e) => e.style.replace(val),
92732            Self::Applet(e) => e.style.replace(val),
92733            Self::Bgsound(e) => e.style.replace(val),
92734            Self::Big(e) => e.style.replace(val),
92735            Self::Blink(e) => e.style.replace(val),
92736            Self::Center(e) => e.style.replace(val),
92737            Self::Dir(e) => e.style.replace(val),
92738            Self::Font(e) => e.style.replace(val),
92739            Self::Frame(e) => e.style.replace(val),
92740            Self::Frameset(e) => e.style.replace(val),
92741            Self::Image(e) => e.style.replace(val),
92742            Self::Keygen(e) => e.style.replace(val),
92743            Self::Marquee(e) => e.style.replace(val),
92744            Self::Menuitem(e) => e.style.replace(val),
92745            Self::Nobr(e) => e.style.replace(val),
92746            Self::Noembed(e) => e.style.replace(val),
92747            Self::Noframes(e) => e.style.replace(val),
92748            Self::Param(e) => e.style.replace(val),
92749            Self::Plaintext(e) => e.style.replace(val),
92750            Self::Rb(e) => e.style.replace(val),
92751            Self::Rtc(e) => e.style.replace(val),
92752            Self::Spacer(e) => e.style.replace(val),
92753            Self::Strike(e) => e.style.replace(val),
92754            Self::Tt(e) => e.style.replace(val),
92755            Self::Xmp(e) => e.style.replace(val),
92756            Self::H1(e) => e.style.replace(val),
92757            Self::H2(e) => e.style.replace(val),
92758            Self::H3(e) => e.style.replace(val),
92759            Self::H4(e) => e.style.replace(val),
92760            Self::H5(e) => e.style.replace(val),
92761            Self::H6(e) => e.style.replace(val),
92762            Self::Unknown(e) => e.style.replace(val),
92763        };
92764    }
92765
92766    ///     <p>An integer attribute indicating if the element can take input focus (is <em>focusable</em>), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:</p>
92767    ///     <ul>
92768    ///       <li>a <em>negative value</em> means that the element should be focusable, but should not be reachable via sequential keyboard navigation;</li>
92769    ///       <li><code>0</code> means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;</li>
92770    ///       <li>a <em>positive value</em> means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the <a href="#tabindex"><strong>tabindex</strong></a>. If several elements share the same tabindex, their relative order follows their relative positions in the document.</li>
92771    ///     </ul>
92772    ///   
92773    #[cfg(feature = "alloc")]
92774    pub fn set_tabindex(&mut self, val: AttributeValueOwned) {
92775        match self {
92776            Self::Html(e) => e.tabindex.replace(val),
92777            Self::Base(e) => e.tabindex.replace(val),
92778            Self::Head(e) => e.tabindex.replace(val),
92779            Self::Link(e) => e.tabindex.replace(val),
92780            Self::Meta(e) => e.tabindex.replace(val),
92781            Self::Style(e) => e.tabindex.replace(val),
92782            Self::Title(e) => e.tabindex.replace(val),
92783            Self::Body(e) => e.tabindex.replace(val),
92784            Self::Address(e) => e.tabindex.replace(val),
92785            Self::Article(e) => e.tabindex.replace(val),
92786            Self::Aside(e) => e.tabindex.replace(val),
92787            Self::Footer(e) => e.tabindex.replace(val),
92788            Self::Header(e) => e.tabindex.replace(val),
92789            Self::Hgroup(e) => e.tabindex.replace(val),
92790            Self::Main(e) => e.tabindex.replace(val),
92791            Self::Nav(e) => e.tabindex.replace(val),
92792            Self::Section(e) => e.tabindex.replace(val),
92793            Self::Blockquote(e) => e.tabindex.replace(val),
92794            Self::Dd(e) => e.tabindex.replace(val),
92795            Self::Div(e) => e.tabindex.replace(val),
92796            Self::Dl(e) => e.tabindex.replace(val),
92797            Self::Dt(e) => e.tabindex.replace(val),
92798            Self::Figcaption(e) => e.tabindex.replace(val),
92799            Self::Figure(e) => e.tabindex.replace(val),
92800            Self::Hr(e) => e.tabindex.replace(val),
92801            Self::Li(e) => e.tabindex.replace(val),
92802            Self::Menu(e) => e.tabindex.replace(val),
92803            Self::Ol(e) => e.tabindex.replace(val),
92804            Self::P(e) => e.tabindex.replace(val),
92805            Self::Pre(e) => e.tabindex.replace(val),
92806            Self::Ul(e) => e.tabindex.replace(val),
92807            Self::A(e) => e.tabindex.replace(val),
92808            Self::Abbr(e) => e.tabindex.replace(val),
92809            Self::B(e) => e.tabindex.replace(val),
92810            Self::Bdi(e) => e.tabindex.replace(val),
92811            Self::Bdo(e) => e.tabindex.replace(val),
92812            Self::Br(e) => e.tabindex.replace(val),
92813            Self::Cite(e) => e.tabindex.replace(val),
92814            Self::Code(e) => e.tabindex.replace(val),
92815            Self::Data(e) => e.tabindex.replace(val),
92816            Self::Dfn(e) => e.tabindex.replace(val),
92817            Self::Em(e) => e.tabindex.replace(val),
92818            Self::I(e) => e.tabindex.replace(val),
92819            Self::Kbd(e) => e.tabindex.replace(val),
92820            Self::Mark(e) => e.tabindex.replace(val),
92821            Self::Q(e) => e.tabindex.replace(val),
92822            Self::Rp(e) => e.tabindex.replace(val),
92823            Self::Rt(e) => e.tabindex.replace(val),
92824            Self::Ruby(e) => e.tabindex.replace(val),
92825            Self::S(e) => e.tabindex.replace(val),
92826            Self::Samp(e) => e.tabindex.replace(val),
92827            Self::Small(e) => e.tabindex.replace(val),
92828            Self::Span(e) => e.tabindex.replace(val),
92829            Self::Strong(e) => e.tabindex.replace(val),
92830            Self::Sub(e) => e.tabindex.replace(val),
92831            Self::Sup(e) => e.tabindex.replace(val),
92832            Self::Time(e) => e.tabindex.replace(val),
92833            Self::U(e) => e.tabindex.replace(val),
92834            Self::Var(e) => e.tabindex.replace(val),
92835            Self::Wbr(e) => e.tabindex.replace(val),
92836            Self::Area(e) => e.tabindex.replace(val),
92837            Self::Audio(e) => e.tabindex.replace(val),
92838            Self::Img(e) => e.tabindex.replace(val),
92839            Self::Map(e) => e.tabindex.replace(val),
92840            Self::Track(e) => e.tabindex.replace(val),
92841            Self::Video(e) => e.tabindex.replace(val),
92842            Self::Embed(e) => e.tabindex.replace(val),
92843            Self::Iframe(e) => e.tabindex.replace(val),
92844            Self::Object(e) => e.tabindex.replace(val),
92845            Self::Picture(e) => e.tabindex.replace(val),
92846            Self::Portal(e) => e.tabindex.replace(val),
92847            Self::Source(e) => e.tabindex.replace(val),
92848            Self::Canvas(e) => e.tabindex.replace(val),
92849            Self::Noscript(e) => e.tabindex.replace(val),
92850            Self::Script(e) => e.tabindex.replace(val),
92851            Self::Del(e) => e.tabindex.replace(val),
92852            Self::Ins(e) => e.tabindex.replace(val),
92853            Self::Caption(e) => e.tabindex.replace(val),
92854            Self::Col(e) => e.tabindex.replace(val),
92855            Self::Colgroup(e) => e.tabindex.replace(val),
92856            Self::Table(e) => e.tabindex.replace(val),
92857            Self::Tbody(e) => e.tabindex.replace(val),
92858            Self::Td(e) => e.tabindex.replace(val),
92859            Self::Tfoot(e) => e.tabindex.replace(val),
92860            Self::Th(e) => e.tabindex.replace(val),
92861            Self::Thead(e) => e.tabindex.replace(val),
92862            Self::Tr(e) => e.tabindex.replace(val),
92863            Self::Button(e) => e.tabindex.replace(val),
92864            Self::Datalist(e) => e.tabindex.replace(val),
92865            Self::Fieldset(e) => e.tabindex.replace(val),
92866            Self::Form(e) => e.tabindex.replace(val),
92867            Self::Input(e) => e.tabindex.replace(val),
92868            Self::Label(e) => e.tabindex.replace(val),
92869            Self::Legend(e) => e.tabindex.replace(val),
92870            Self::Meter(e) => e.tabindex.replace(val),
92871            Self::Optgroup(e) => e.tabindex.replace(val),
92872            Self::Option(e) => e.tabindex.replace(val),
92873            Self::Output(e) => e.tabindex.replace(val),
92874            Self::Progress(e) => e.tabindex.replace(val),
92875            Self::Select(e) => e.tabindex.replace(val),
92876            Self::Textarea(e) => e.tabindex.replace(val),
92877            Self::Details(e) => e.tabindex.replace(val),
92878            Self::Dialog(e) => e.tabindex.replace(val),
92879            Self::Summary(e) => e.tabindex.replace(val),
92880            Self::Slot(e) => e.tabindex.replace(val),
92881            Self::Template(e) => e.tabindex.replace(val),
92882            Self::Acronym(e) => e.tabindex.replace(val),
92883            Self::Applet(e) => e.tabindex.replace(val),
92884            Self::Bgsound(e) => e.tabindex.replace(val),
92885            Self::Big(e) => e.tabindex.replace(val),
92886            Self::Blink(e) => e.tabindex.replace(val),
92887            Self::Center(e) => e.tabindex.replace(val),
92888            Self::Dir(e) => e.tabindex.replace(val),
92889            Self::Font(e) => e.tabindex.replace(val),
92890            Self::Frame(e) => e.tabindex.replace(val),
92891            Self::Frameset(e) => e.tabindex.replace(val),
92892            Self::Image(e) => e.tabindex.replace(val),
92893            Self::Keygen(e) => e.tabindex.replace(val),
92894            Self::Marquee(e) => e.tabindex.replace(val),
92895            Self::Menuitem(e) => e.tabindex.replace(val),
92896            Self::Nobr(e) => e.tabindex.replace(val),
92897            Self::Noembed(e) => e.tabindex.replace(val),
92898            Self::Noframes(e) => e.tabindex.replace(val),
92899            Self::Param(e) => e.tabindex.replace(val),
92900            Self::Plaintext(e) => e.tabindex.replace(val),
92901            Self::Rb(e) => e.tabindex.replace(val),
92902            Self::Rtc(e) => e.tabindex.replace(val),
92903            Self::Spacer(e) => e.tabindex.replace(val),
92904            Self::Strike(e) => e.tabindex.replace(val),
92905            Self::Tt(e) => e.tabindex.replace(val),
92906            Self::Xmp(e) => e.tabindex.replace(val),
92907            Self::H1(e) => e.tabindex.replace(val),
92908            Self::H2(e) => e.tabindex.replace(val),
92909            Self::H3(e) => e.tabindex.replace(val),
92910            Self::H4(e) => e.tabindex.replace(val),
92911            Self::H5(e) => e.tabindex.replace(val),
92912            Self::H6(e) => e.tabindex.replace(val),
92913            Self::Unknown(e) => e.tabindex.replace(val),
92914        };
92915    }
92916
92917    ///     <p>Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.</p>
92918    ///   
92919    #[cfg(feature = "alloc")]
92920    pub fn set_title(&mut self, val: AttributeValueOwned) {
92921        match self {
92922            Self::Html(e) => e.title.replace(val),
92923            Self::Base(e) => e.title.replace(val),
92924            Self::Head(e) => e.title.replace(val),
92925            Self::Link(e) => e.title.replace(val),
92926            Self::Meta(e) => e.title.replace(val),
92927            Self::Style(e) => e.title.replace(val),
92928            Self::Title(e) => e.title.replace(val),
92929            Self::Body(e) => e.title.replace(val),
92930            Self::Address(e) => e.title.replace(val),
92931            Self::Article(e) => e.title.replace(val),
92932            Self::Aside(e) => e.title.replace(val),
92933            Self::Footer(e) => e.title.replace(val),
92934            Self::Header(e) => e.title.replace(val),
92935            Self::Hgroup(e) => e.title.replace(val),
92936            Self::Main(e) => e.title.replace(val),
92937            Self::Nav(e) => e.title.replace(val),
92938            Self::Section(e) => e.title.replace(val),
92939            Self::Blockquote(e) => e.title.replace(val),
92940            Self::Dd(e) => e.title.replace(val),
92941            Self::Div(e) => e.title.replace(val),
92942            Self::Dl(e) => e.title.replace(val),
92943            Self::Dt(e) => e.title.replace(val),
92944            Self::Figcaption(e) => e.title.replace(val),
92945            Self::Figure(e) => e.title.replace(val),
92946            Self::Hr(e) => e.title.replace(val),
92947            Self::Li(e) => e.title.replace(val),
92948            Self::Menu(e) => e.title.replace(val),
92949            Self::Ol(e) => e.title.replace(val),
92950            Self::P(e) => e.title.replace(val),
92951            Self::Pre(e) => e.title.replace(val),
92952            Self::Ul(e) => e.title.replace(val),
92953            Self::A(e) => e.title.replace(val),
92954            Self::Abbr(e) => e.title.replace(val),
92955            Self::B(e) => e.title.replace(val),
92956            Self::Bdi(e) => e.title.replace(val),
92957            Self::Bdo(e) => e.title.replace(val),
92958            Self::Br(e) => e.title.replace(val),
92959            Self::Cite(e) => e.title.replace(val),
92960            Self::Code(e) => e.title.replace(val),
92961            Self::Data(e) => e.title.replace(val),
92962            Self::Dfn(e) => e.title.replace(val),
92963            Self::Em(e) => e.title.replace(val),
92964            Self::I(e) => e.title.replace(val),
92965            Self::Kbd(e) => e.title.replace(val),
92966            Self::Mark(e) => e.title.replace(val),
92967            Self::Q(e) => e.title.replace(val),
92968            Self::Rp(e) => e.title.replace(val),
92969            Self::Rt(e) => e.title.replace(val),
92970            Self::Ruby(e) => e.title.replace(val),
92971            Self::S(e) => e.title.replace(val),
92972            Self::Samp(e) => e.title.replace(val),
92973            Self::Small(e) => e.title.replace(val),
92974            Self::Span(e) => e.title.replace(val),
92975            Self::Strong(e) => e.title.replace(val),
92976            Self::Sub(e) => e.title.replace(val),
92977            Self::Sup(e) => e.title.replace(val),
92978            Self::Time(e) => e.title.replace(val),
92979            Self::U(e) => e.title.replace(val),
92980            Self::Var(e) => e.title.replace(val),
92981            Self::Wbr(e) => e.title.replace(val),
92982            Self::Area(e) => e.title.replace(val),
92983            Self::Audio(e) => e.title.replace(val),
92984            Self::Img(e) => e.title.replace(val),
92985            Self::Map(e) => e.title.replace(val),
92986            Self::Track(e) => e.title.replace(val),
92987            Self::Video(e) => e.title.replace(val),
92988            Self::Embed(e) => e.title.replace(val),
92989            Self::Iframe(e) => e.title.replace(val),
92990            Self::Object(e) => e.title.replace(val),
92991            Self::Picture(e) => e.title.replace(val),
92992            Self::Portal(e) => e.title.replace(val),
92993            Self::Source(e) => e.title.replace(val),
92994            Self::Canvas(e) => e.title.replace(val),
92995            Self::Noscript(e) => e.title.replace(val),
92996            Self::Script(e) => e.title.replace(val),
92997            Self::Del(e) => e.title.replace(val),
92998            Self::Ins(e) => e.title.replace(val),
92999            Self::Caption(e) => e.title.replace(val),
93000            Self::Col(e) => e.title.replace(val),
93001            Self::Colgroup(e) => e.title.replace(val),
93002            Self::Table(e) => e.title.replace(val),
93003            Self::Tbody(e) => e.title.replace(val),
93004            Self::Td(e) => e.title.replace(val),
93005            Self::Tfoot(e) => e.title.replace(val),
93006            Self::Th(e) => e.title.replace(val),
93007            Self::Thead(e) => e.title.replace(val),
93008            Self::Tr(e) => e.title.replace(val),
93009            Self::Button(e) => e.title.replace(val),
93010            Self::Datalist(e) => e.title.replace(val),
93011            Self::Fieldset(e) => e.title.replace(val),
93012            Self::Form(e) => e.title.replace(val),
93013            Self::Input(e) => e.title.replace(val),
93014            Self::Label(e) => e.title.replace(val),
93015            Self::Legend(e) => e.title.replace(val),
93016            Self::Meter(e) => e.title.replace(val),
93017            Self::Optgroup(e) => e.title.replace(val),
93018            Self::Option(e) => e.title.replace(val),
93019            Self::Output(e) => e.title.replace(val),
93020            Self::Progress(e) => e.title.replace(val),
93021            Self::Select(e) => e.title.replace(val),
93022            Self::Textarea(e) => e.title.replace(val),
93023            Self::Details(e) => e.title.replace(val),
93024            Self::Dialog(e) => e.title.replace(val),
93025            Self::Summary(e) => e.title.replace(val),
93026            Self::Slot(e) => e.title.replace(val),
93027            Self::Template(e) => e.title.replace(val),
93028            Self::Acronym(e) => e.title.replace(val),
93029            Self::Applet(e) => e.title.replace(val),
93030            Self::Bgsound(e) => e.title.replace(val),
93031            Self::Big(e) => e.title.replace(val),
93032            Self::Blink(e) => e.title.replace(val),
93033            Self::Center(e) => e.title.replace(val),
93034            Self::Dir(e) => e.title.replace(val),
93035            Self::Font(e) => e.title.replace(val),
93036            Self::Frame(e) => e.title.replace(val),
93037            Self::Frameset(e) => e.title.replace(val),
93038            Self::Image(e) => e.title.replace(val),
93039            Self::Keygen(e) => e.title.replace(val),
93040            Self::Marquee(e) => e.title.replace(val),
93041            Self::Menuitem(e) => e.title.replace(val),
93042            Self::Nobr(e) => e.title.replace(val),
93043            Self::Noembed(e) => e.title.replace(val),
93044            Self::Noframes(e) => e.title.replace(val),
93045            Self::Param(e) => e.title.replace(val),
93046            Self::Plaintext(e) => e.title.replace(val),
93047            Self::Rb(e) => e.title.replace(val),
93048            Self::Rtc(e) => e.title.replace(val),
93049            Self::Spacer(e) => e.title.replace(val),
93050            Self::Strike(e) => e.title.replace(val),
93051            Self::Tt(e) => e.title.replace(val),
93052            Self::Xmp(e) => e.title.replace(val),
93053            Self::H1(e) => e.title.replace(val),
93054            Self::H2(e) => e.title.replace(val),
93055            Self::H3(e) => e.title.replace(val),
93056            Self::H4(e) => e.title.replace(val),
93057            Self::H5(e) => e.title.replace(val),
93058            Self::H6(e) => e.title.replace(val),
93059            Self::Unknown(e) => e.title.replace(val),
93060        };
93061    }
93062
93063    ///     <p>An enumerated attribute that is used to specify whether an element's attribute values and the values of its <a href="/en-US/docs/Web/API/Text"><code>Text</code></a> node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:</p>
93064    ///     <ul>
93065    ///       <li>empty string or <code>yes</code>, which indicates that the element will be translated.</li>
93066    ///       <li><code>no</code>, which indicates that the element will not be translated.</li>
93067    ///     </ul>
93068    ///   
93069    #[cfg(feature = "alloc")]
93070    pub fn set_translate(&mut self, val: AttributeValueOwned) {
93071        match self {
93072            Self::Html(e) => e.translate.replace(val),
93073            Self::Base(e) => e.translate.replace(val),
93074            Self::Head(e) => e.translate.replace(val),
93075            Self::Link(e) => e.translate.replace(val),
93076            Self::Meta(e) => e.translate.replace(val),
93077            Self::Style(e) => e.translate.replace(val),
93078            Self::Title(e) => e.translate.replace(val),
93079            Self::Body(e) => e.translate.replace(val),
93080            Self::Address(e) => e.translate.replace(val),
93081            Self::Article(e) => e.translate.replace(val),
93082            Self::Aside(e) => e.translate.replace(val),
93083            Self::Footer(e) => e.translate.replace(val),
93084            Self::Header(e) => e.translate.replace(val),
93085            Self::Hgroup(e) => e.translate.replace(val),
93086            Self::Main(e) => e.translate.replace(val),
93087            Self::Nav(e) => e.translate.replace(val),
93088            Self::Section(e) => e.translate.replace(val),
93089            Self::Blockquote(e) => e.translate.replace(val),
93090            Self::Dd(e) => e.translate.replace(val),
93091            Self::Div(e) => e.translate.replace(val),
93092            Self::Dl(e) => e.translate.replace(val),
93093            Self::Dt(e) => e.translate.replace(val),
93094            Self::Figcaption(e) => e.translate.replace(val),
93095            Self::Figure(e) => e.translate.replace(val),
93096            Self::Hr(e) => e.translate.replace(val),
93097            Self::Li(e) => e.translate.replace(val),
93098            Self::Menu(e) => e.translate.replace(val),
93099            Self::Ol(e) => e.translate.replace(val),
93100            Self::P(e) => e.translate.replace(val),
93101            Self::Pre(e) => e.translate.replace(val),
93102            Self::Ul(e) => e.translate.replace(val),
93103            Self::A(e) => e.translate.replace(val),
93104            Self::Abbr(e) => e.translate.replace(val),
93105            Self::B(e) => e.translate.replace(val),
93106            Self::Bdi(e) => e.translate.replace(val),
93107            Self::Bdo(e) => e.translate.replace(val),
93108            Self::Br(e) => e.translate.replace(val),
93109            Self::Cite(e) => e.translate.replace(val),
93110            Self::Code(e) => e.translate.replace(val),
93111            Self::Data(e) => e.translate.replace(val),
93112            Self::Dfn(e) => e.translate.replace(val),
93113            Self::Em(e) => e.translate.replace(val),
93114            Self::I(e) => e.translate.replace(val),
93115            Self::Kbd(e) => e.translate.replace(val),
93116            Self::Mark(e) => e.translate.replace(val),
93117            Self::Q(e) => e.translate.replace(val),
93118            Self::Rp(e) => e.translate.replace(val),
93119            Self::Rt(e) => e.translate.replace(val),
93120            Self::Ruby(e) => e.translate.replace(val),
93121            Self::S(e) => e.translate.replace(val),
93122            Self::Samp(e) => e.translate.replace(val),
93123            Self::Small(e) => e.translate.replace(val),
93124            Self::Span(e) => e.translate.replace(val),
93125            Self::Strong(e) => e.translate.replace(val),
93126            Self::Sub(e) => e.translate.replace(val),
93127            Self::Sup(e) => e.translate.replace(val),
93128            Self::Time(e) => e.translate.replace(val),
93129            Self::U(e) => e.translate.replace(val),
93130            Self::Var(e) => e.translate.replace(val),
93131            Self::Wbr(e) => e.translate.replace(val),
93132            Self::Area(e) => e.translate.replace(val),
93133            Self::Audio(e) => e.translate.replace(val),
93134            Self::Img(e) => e.translate.replace(val),
93135            Self::Map(e) => e.translate.replace(val),
93136            Self::Track(e) => e.translate.replace(val),
93137            Self::Video(e) => e.translate.replace(val),
93138            Self::Embed(e) => e.translate.replace(val),
93139            Self::Iframe(e) => e.translate.replace(val),
93140            Self::Object(e) => e.translate.replace(val),
93141            Self::Picture(e) => e.translate.replace(val),
93142            Self::Portal(e) => e.translate.replace(val),
93143            Self::Source(e) => e.translate.replace(val),
93144            Self::Canvas(e) => e.translate.replace(val),
93145            Self::Noscript(e) => e.translate.replace(val),
93146            Self::Script(e) => e.translate.replace(val),
93147            Self::Del(e) => e.translate.replace(val),
93148            Self::Ins(e) => e.translate.replace(val),
93149            Self::Caption(e) => e.translate.replace(val),
93150            Self::Col(e) => e.translate.replace(val),
93151            Self::Colgroup(e) => e.translate.replace(val),
93152            Self::Table(e) => e.translate.replace(val),
93153            Self::Tbody(e) => e.translate.replace(val),
93154            Self::Td(e) => e.translate.replace(val),
93155            Self::Tfoot(e) => e.translate.replace(val),
93156            Self::Th(e) => e.translate.replace(val),
93157            Self::Thead(e) => e.translate.replace(val),
93158            Self::Tr(e) => e.translate.replace(val),
93159            Self::Button(e) => e.translate.replace(val),
93160            Self::Datalist(e) => e.translate.replace(val),
93161            Self::Fieldset(e) => e.translate.replace(val),
93162            Self::Form(e) => e.translate.replace(val),
93163            Self::Input(e) => e.translate.replace(val),
93164            Self::Label(e) => e.translate.replace(val),
93165            Self::Legend(e) => e.translate.replace(val),
93166            Self::Meter(e) => e.translate.replace(val),
93167            Self::Optgroup(e) => e.translate.replace(val),
93168            Self::Option(e) => e.translate.replace(val),
93169            Self::Output(e) => e.translate.replace(val),
93170            Self::Progress(e) => e.translate.replace(val),
93171            Self::Select(e) => e.translate.replace(val),
93172            Self::Textarea(e) => e.translate.replace(val),
93173            Self::Details(e) => e.translate.replace(val),
93174            Self::Dialog(e) => e.translate.replace(val),
93175            Self::Summary(e) => e.translate.replace(val),
93176            Self::Slot(e) => e.translate.replace(val),
93177            Self::Template(e) => e.translate.replace(val),
93178            Self::Acronym(e) => e.translate.replace(val),
93179            Self::Applet(e) => e.translate.replace(val),
93180            Self::Bgsound(e) => e.translate.replace(val),
93181            Self::Big(e) => e.translate.replace(val),
93182            Self::Blink(e) => e.translate.replace(val),
93183            Self::Center(e) => e.translate.replace(val),
93184            Self::Dir(e) => e.translate.replace(val),
93185            Self::Font(e) => e.translate.replace(val),
93186            Self::Frame(e) => e.translate.replace(val),
93187            Self::Frameset(e) => e.translate.replace(val),
93188            Self::Image(e) => e.translate.replace(val),
93189            Self::Keygen(e) => e.translate.replace(val),
93190            Self::Marquee(e) => e.translate.replace(val),
93191            Self::Menuitem(e) => e.translate.replace(val),
93192            Self::Nobr(e) => e.translate.replace(val),
93193            Self::Noembed(e) => e.translate.replace(val),
93194            Self::Noframes(e) => e.translate.replace(val),
93195            Self::Param(e) => e.translate.replace(val),
93196            Self::Plaintext(e) => e.translate.replace(val),
93197            Self::Rb(e) => e.translate.replace(val),
93198            Self::Rtc(e) => e.translate.replace(val),
93199            Self::Spacer(e) => e.translate.replace(val),
93200            Self::Strike(e) => e.translate.replace(val),
93201            Self::Tt(e) => e.translate.replace(val),
93202            Self::Xmp(e) => e.translate.replace(val),
93203            Self::H1(e) => e.translate.replace(val),
93204            Self::H2(e) => e.translate.replace(val),
93205            Self::H3(e) => e.translate.replace(val),
93206            Self::H4(e) => e.translate.replace(val),
93207            Self::H5(e) => e.translate.replace(val),
93208            Self::H6(e) => e.translate.replace(val),
93209            Self::Unknown(e) => e.translate.replace(val),
93210        };
93211    }
93212
93213    ///     <p>An <a href="/en-US/docs/Glossary/Enumerated">enumerated</a> attribute used to control the on-screen virtual keyboard behavior on devices such as tablets, mobile phones, or other devices where a hardware keyboard may not be available for elements that also uses the <a href="#contenteditable"><code>contenteditable</code></a> attribute.</p>
93214    ///     <ul>
93215    ///       <li><code>auto</code> or an <em>empty string</em>, which automatically shows the virtual keyboard when the element is focused or tapped.</li>
93216    ///       <li><code>manual</code>, which decouples focus and tap on the element from the virtual keyboard's state.</li>
93217    ///     </ul>
93218    ///   
93219    #[cfg(feature = "alloc")]
93220    pub fn set_virtualkeyboardpolicy(&mut self, val: AttributeValueOwned) {
93221        match self {
93222            Self::Html(e) => e.virtualkeyboardpolicy.replace(val),
93223            Self::Base(e) => e.virtualkeyboardpolicy.replace(val),
93224            Self::Head(e) => e.virtualkeyboardpolicy.replace(val),
93225            Self::Link(e) => e.virtualkeyboardpolicy.replace(val),
93226            Self::Meta(e) => e.virtualkeyboardpolicy.replace(val),
93227            Self::Style(e) => e.virtualkeyboardpolicy.replace(val),
93228            Self::Title(e) => e.virtualkeyboardpolicy.replace(val),
93229            Self::Body(e) => e.virtualkeyboardpolicy.replace(val),
93230            Self::Address(e) => e.virtualkeyboardpolicy.replace(val),
93231            Self::Article(e) => e.virtualkeyboardpolicy.replace(val),
93232            Self::Aside(e) => e.virtualkeyboardpolicy.replace(val),
93233            Self::Footer(e) => e.virtualkeyboardpolicy.replace(val),
93234            Self::Header(e) => e.virtualkeyboardpolicy.replace(val),
93235            Self::Hgroup(e) => e.virtualkeyboardpolicy.replace(val),
93236            Self::Main(e) => e.virtualkeyboardpolicy.replace(val),
93237            Self::Nav(e) => e.virtualkeyboardpolicy.replace(val),
93238            Self::Section(e) => e.virtualkeyboardpolicy.replace(val),
93239            Self::Blockquote(e) => e.virtualkeyboardpolicy.replace(val),
93240            Self::Dd(e) => e.virtualkeyboardpolicy.replace(val),
93241            Self::Div(e) => e.virtualkeyboardpolicy.replace(val),
93242            Self::Dl(e) => e.virtualkeyboardpolicy.replace(val),
93243            Self::Dt(e) => e.virtualkeyboardpolicy.replace(val),
93244            Self::Figcaption(e) => e.virtualkeyboardpolicy.replace(val),
93245            Self::Figure(e) => e.virtualkeyboardpolicy.replace(val),
93246            Self::Hr(e) => e.virtualkeyboardpolicy.replace(val),
93247            Self::Li(e) => e.virtualkeyboardpolicy.replace(val),
93248            Self::Menu(e) => e.virtualkeyboardpolicy.replace(val),
93249            Self::Ol(e) => e.virtualkeyboardpolicy.replace(val),
93250            Self::P(e) => e.virtualkeyboardpolicy.replace(val),
93251            Self::Pre(e) => e.virtualkeyboardpolicy.replace(val),
93252            Self::Ul(e) => e.virtualkeyboardpolicy.replace(val),
93253            Self::A(e) => e.virtualkeyboardpolicy.replace(val),
93254            Self::Abbr(e) => e.virtualkeyboardpolicy.replace(val),
93255            Self::B(e) => e.virtualkeyboardpolicy.replace(val),
93256            Self::Bdi(e) => e.virtualkeyboardpolicy.replace(val),
93257            Self::Bdo(e) => e.virtualkeyboardpolicy.replace(val),
93258            Self::Br(e) => e.virtualkeyboardpolicy.replace(val),
93259            Self::Cite(e) => e.virtualkeyboardpolicy.replace(val),
93260            Self::Code(e) => e.virtualkeyboardpolicy.replace(val),
93261            Self::Data(e) => e.virtualkeyboardpolicy.replace(val),
93262            Self::Dfn(e) => e.virtualkeyboardpolicy.replace(val),
93263            Self::Em(e) => e.virtualkeyboardpolicy.replace(val),
93264            Self::I(e) => e.virtualkeyboardpolicy.replace(val),
93265            Self::Kbd(e) => e.virtualkeyboardpolicy.replace(val),
93266            Self::Mark(e) => e.virtualkeyboardpolicy.replace(val),
93267            Self::Q(e) => e.virtualkeyboardpolicy.replace(val),
93268            Self::Rp(e) => e.virtualkeyboardpolicy.replace(val),
93269            Self::Rt(e) => e.virtualkeyboardpolicy.replace(val),
93270            Self::Ruby(e) => e.virtualkeyboardpolicy.replace(val),
93271            Self::S(e) => e.virtualkeyboardpolicy.replace(val),
93272            Self::Samp(e) => e.virtualkeyboardpolicy.replace(val),
93273            Self::Small(e) => e.virtualkeyboardpolicy.replace(val),
93274            Self::Span(e) => e.virtualkeyboardpolicy.replace(val),
93275            Self::Strong(e) => e.virtualkeyboardpolicy.replace(val),
93276            Self::Sub(e) => e.virtualkeyboardpolicy.replace(val),
93277            Self::Sup(e) => e.virtualkeyboardpolicy.replace(val),
93278            Self::Time(e) => e.virtualkeyboardpolicy.replace(val),
93279            Self::U(e) => e.virtualkeyboardpolicy.replace(val),
93280            Self::Var(e) => e.virtualkeyboardpolicy.replace(val),
93281            Self::Wbr(e) => e.virtualkeyboardpolicy.replace(val),
93282            Self::Area(e) => e.virtualkeyboardpolicy.replace(val),
93283            Self::Audio(e) => e.virtualkeyboardpolicy.replace(val),
93284            Self::Img(e) => e.virtualkeyboardpolicy.replace(val),
93285            Self::Map(e) => e.virtualkeyboardpolicy.replace(val),
93286            Self::Track(e) => e.virtualkeyboardpolicy.replace(val),
93287            Self::Video(e) => e.virtualkeyboardpolicy.replace(val),
93288            Self::Embed(e) => e.virtualkeyboardpolicy.replace(val),
93289            Self::Iframe(e) => e.virtualkeyboardpolicy.replace(val),
93290            Self::Object(e) => e.virtualkeyboardpolicy.replace(val),
93291            Self::Picture(e) => e.virtualkeyboardpolicy.replace(val),
93292            Self::Portal(e) => e.virtualkeyboardpolicy.replace(val),
93293            Self::Source(e) => e.virtualkeyboardpolicy.replace(val),
93294            Self::Canvas(e) => e.virtualkeyboardpolicy.replace(val),
93295            Self::Noscript(e) => e.virtualkeyboardpolicy.replace(val),
93296            Self::Script(e) => e.virtualkeyboardpolicy.replace(val),
93297            Self::Del(e) => e.virtualkeyboardpolicy.replace(val),
93298            Self::Ins(e) => e.virtualkeyboardpolicy.replace(val),
93299            Self::Caption(e) => e.virtualkeyboardpolicy.replace(val),
93300            Self::Col(e) => e.virtualkeyboardpolicy.replace(val),
93301            Self::Colgroup(e) => e.virtualkeyboardpolicy.replace(val),
93302            Self::Table(e) => e.virtualkeyboardpolicy.replace(val),
93303            Self::Tbody(e) => e.virtualkeyboardpolicy.replace(val),
93304            Self::Td(e) => e.virtualkeyboardpolicy.replace(val),
93305            Self::Tfoot(e) => e.virtualkeyboardpolicy.replace(val),
93306            Self::Th(e) => e.virtualkeyboardpolicy.replace(val),
93307            Self::Thead(e) => e.virtualkeyboardpolicy.replace(val),
93308            Self::Tr(e) => e.virtualkeyboardpolicy.replace(val),
93309            Self::Button(e) => e.virtualkeyboardpolicy.replace(val),
93310            Self::Datalist(e) => e.virtualkeyboardpolicy.replace(val),
93311            Self::Fieldset(e) => e.virtualkeyboardpolicy.replace(val),
93312            Self::Form(e) => e.virtualkeyboardpolicy.replace(val),
93313            Self::Input(e) => e.virtualkeyboardpolicy.replace(val),
93314            Self::Label(e) => e.virtualkeyboardpolicy.replace(val),
93315            Self::Legend(e) => e.virtualkeyboardpolicy.replace(val),
93316            Self::Meter(e) => e.virtualkeyboardpolicy.replace(val),
93317            Self::Optgroup(e) => e.virtualkeyboardpolicy.replace(val),
93318            Self::Option(e) => e.virtualkeyboardpolicy.replace(val),
93319            Self::Output(e) => e.virtualkeyboardpolicy.replace(val),
93320            Self::Progress(e) => e.virtualkeyboardpolicy.replace(val),
93321            Self::Select(e) => e.virtualkeyboardpolicy.replace(val),
93322            Self::Textarea(e) => e.virtualkeyboardpolicy.replace(val),
93323            Self::Details(e) => e.virtualkeyboardpolicy.replace(val),
93324            Self::Dialog(e) => e.virtualkeyboardpolicy.replace(val),
93325            Self::Summary(e) => e.virtualkeyboardpolicy.replace(val),
93326            Self::Slot(e) => e.virtualkeyboardpolicy.replace(val),
93327            Self::Template(e) => e.virtualkeyboardpolicy.replace(val),
93328            Self::Acronym(e) => e.virtualkeyboardpolicy.replace(val),
93329            Self::Applet(e) => e.virtualkeyboardpolicy.replace(val),
93330            Self::Bgsound(e) => e.virtualkeyboardpolicy.replace(val),
93331            Self::Big(e) => e.virtualkeyboardpolicy.replace(val),
93332            Self::Blink(e) => e.virtualkeyboardpolicy.replace(val),
93333            Self::Center(e) => e.virtualkeyboardpolicy.replace(val),
93334            Self::Dir(e) => e.virtualkeyboardpolicy.replace(val),
93335            Self::Font(e) => e.virtualkeyboardpolicy.replace(val),
93336            Self::Frame(e) => e.virtualkeyboardpolicy.replace(val),
93337            Self::Frameset(e) => e.virtualkeyboardpolicy.replace(val),
93338            Self::Image(e) => e.virtualkeyboardpolicy.replace(val),
93339            Self::Keygen(e) => e.virtualkeyboardpolicy.replace(val),
93340            Self::Marquee(e) => e.virtualkeyboardpolicy.replace(val),
93341            Self::Menuitem(e) => e.virtualkeyboardpolicy.replace(val),
93342            Self::Nobr(e) => e.virtualkeyboardpolicy.replace(val),
93343            Self::Noembed(e) => e.virtualkeyboardpolicy.replace(val),
93344            Self::Noframes(e) => e.virtualkeyboardpolicy.replace(val),
93345            Self::Param(e) => e.virtualkeyboardpolicy.replace(val),
93346            Self::Plaintext(e) => e.virtualkeyboardpolicy.replace(val),
93347            Self::Rb(e) => e.virtualkeyboardpolicy.replace(val),
93348            Self::Rtc(e) => e.virtualkeyboardpolicy.replace(val),
93349            Self::Spacer(e) => e.virtualkeyboardpolicy.replace(val),
93350            Self::Strike(e) => e.virtualkeyboardpolicy.replace(val),
93351            Self::Tt(e) => e.virtualkeyboardpolicy.replace(val),
93352            Self::Xmp(e) => e.virtualkeyboardpolicy.replace(val),
93353            Self::H1(e) => e.virtualkeyboardpolicy.replace(val),
93354            Self::H2(e) => e.virtualkeyboardpolicy.replace(val),
93355            Self::H3(e) => e.virtualkeyboardpolicy.replace(val),
93356            Self::H4(e) => e.virtualkeyboardpolicy.replace(val),
93357            Self::H5(e) => e.virtualkeyboardpolicy.replace(val),
93358            Self::H6(e) => e.virtualkeyboardpolicy.replace(val),
93359            Self::Unknown(e) => e.virtualkeyboardpolicy.replace(val),
93360        };
93361    }
93362}
93363#[allow(deprecated)]
93364#[cfg(feature = "alloc")]
93365impl Default for ElementOwned {
93366    fn default() -> Self {
93367        Self::Unknown(UnknownOwned::default())
93368    }
93369}